Kaggle竞赛入门(二):如何验证机器学习模型
本文翻译自kaggle learn,也就是kaggle官方最快入门kaggle竞赛的教程,强调python编程实践和数学思想(而没有涉及数学细节),笔者在不影响算法和程序理解的基础上删除了一些不必要的废话,英文有的时候比较啰嗦。
一.什么是模型验证
模型验证在机器学习当中非常重要,因为有的时候拟合出来的模型误差非常大而自己却不知道,就会造成很大的失误。在kaggle竞赛入门(二)当中,我们利用决策树算法已经拟合出来了一个模型,那么如何去验证这个模型的准确性呢?那就是使用真实值和预测值的差值的绝对值来进行衡量,衡量一个点的误差的代码如下:
error=actual−predicted
但是我们的数据集当中有很多的点(数据),该怎么办呢?那就是对每一个点都做这样的减法,然后把所有error都加起来求出平均值,这个方法的简写叫MAE,因为它的英语是:Mean Absolute Error(平均绝对值误差)。为了能够计算MAE,我们首先需要一个模型,我们生成这个模型的代码如下(运用了决策树算法):
# Data Loading Code Hidden Here import pandas as pd # Load data melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv' melbourne_data = pd.read_csv(melbourne_file_path) # Filter rows with missing price values filtered_melbourne_data = melbourne_data.dropna(axis=0) # Choose target and features y = filtered_melbourne_data.Price melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'BuildingArea', 'YearBuilt', 'Lattitude', 'Longtitude'] X = filtered_melbourne_data[melbourne_features] from sklearn.tree import DecisionTreeRegressor # Define model melbourne_model = DecisionTreeRegressor() # Fit model melbourne_model.fit(X, y)
一旦我们建立了这个模型,我们就可以计算它的MAE了,计算MAE的函数是:mean_absolute_value(原始数据集当中的y , 预测之后的y),因此计算它的代码如下:
from sklearn.metrics import mean_absolute_error predicted_home_prices = melbourne_model.predict(X) mean_absolute_error(y, predicted_home_prices)
最后输出的结果是:
434.71594577146544
二.样本内得分
刚刚我们进行计算的是样本内得分,也就是利用原始的数据集和预测的值进行比较,而没有将我们的数据集分为训练集和验证集进行测试。现在我们需要将我们的数据集分成两个集合,一个是训练集用来训练模型,一个是验证集,用于衡量我们模型训练后的准确度如何。用sklearn将数据分类的代码如下:
from sklearn.model_selection import train_test_split # split data into training and validation data, for both features and target # The split is based on a random number generator. Supplying a numeric value to # the random_state argument guarantees we get the same split every time we # run this script. train_X, val_X, train_y, val_y = train_test_split(X, y, random_state = 0) # Define model melbourne_model = DecisionTreeRegressor() # Fit model melbourne_model.fit(train_X, train_y) # get predicted prices on validation data val_predictions = melbourne_model.predict(val_X) print(mean_absolute_error(val_y, val_predictions))
其中的train_X,train_y表示的是分类后训练集的样本,val_x和val_y表示的是验证集的样本,为什么变量叫开头是val?因为验证集的英语是validation data。我们将数据进行分类的时候完全是随机分配的,没有任何规律的,其中的random_state随机种子为0,也可以为其他数字。最后这一步之后我们用验证集去输出MFA,结果是:
259556.7211103938
这个结果和之前我们之前将所有数据当成训练集训练得到的MAE比起来实在是太大了!!!这是为什么呢?因为这说明我们之前所用的决策树算法不太好,或者是给决策树算法选择的特征进行拟合模型时,预测房价所用到的特征没有选择好,比如
'Rooms', 'Bathroom', 'Landsize', 'BuildingArea', 'YearBuilt', 'Lattitude', 'Longtitude'这些特征可能不足以来预测房价。
相关文章
- 实用机器学习 跟李沐学AI
- sklearn:Python语言开发的通用机器学习库
- 机器学习系统构建
- (《机器学习》完整版系列)第8章 集成学习——8.1 简单投票法(少数服从多数)
- (《机器学习》完整版系列)附录 ——4、神经网络中的梯度(链式法则的图形助记)
- (《机器学习》完整版系列)第16章 强化学习——16.11 直接模仿学习
- (《机器学习》完整版系列)第12章 计算学习理论——12.1 概念类与假设空间的关系(几乎、近似、覆盖)
- Stanford大学机器学习公开课(五):生成学习算法、高斯判别、朴素贝叶斯
- 【FPGA教程案例90】机器视觉1——通过FPGA实现基于颜色模型的交通灯检测,使用MATLAB辅助测试
- 深度学习,机器学习所涵盖的100多个基本概念总结
- 人工智能、深度学习、机器学习常见面试题261~280
- 机器学习笔记之K近邻学习算法
- 机器学习笔记之深度信念网络(二)模型构建思想(RBM叠加结构)
- 机器学习笔记之降维(四)从最小重构代价角度观察主成分分析
- 机器学习笔记之高斯混合模型(四)EM算法求解高斯混合模型(M步操作)
- 大数据与机器学习:实践方法与行业案例.3.3 自动加载程序的数据库设计
- 《机器学习与R语言(原书第2版)》一 第1章 机器学习简介
- 机器学习框架之sklearn简介
- 对机器学习与数据竞赛的一些总结(转)
- 基于机器学习的用户实体行为分析技术在账号异常检测中的应用
- 【机器学习】激活函数(Activation Function)
- 【机器学习】Google机器学习工程的43条最佳实践
- 《NLTK基础教程——用NLTK和Python库构建机器学习应用》——第2章 文本的歧义及其清理
- 《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程
- 机器学习入门学习资源
- 《Scala机器学习》一一1.1 Scala入门
- 《Scala机器学习》一一
- windows 两台机器同步备份的部署
- IBM联手英伟达推出针对机器学习的新服务器
- 整个机器学习入门框架以及机器学习预测股票市场例子-笔记海纳百川版
- 从零单排入门机器学习:线性回归(linear regression)实践篇
- 机器学习原来如此有趣!全世界最简单的机器学习入门指南
- 简单易学的机器学习算法——神经网络之BP神经网络
- 机器手臂(3):机械手臂底座
- 机器学习入门路线
- D1net阅闻:苹果收购印度机器学习公司Tuplejump