你已经建立了一个模型。 但它有多好?

在本课程中,您将学习如何使用模型验证来衡量模型的质量。 测量模型质量是迭代改进模型的关键。

What is Model Validation

你几乎要评估你构建的每个模型。在大多数(尽管不是全部)应用中,模型质量的相关测量是预测准确性。换句话说,模型的预测是否接近实际发生的情况。

在测量预测准确性时,许多人犯了一个大错误。他们使用他们的训练数据进行预测,并将这些预测与训练数据中的目标值进行比较。你会看到这种方法的问题以及如何在一瞬间解决它,但让我们考虑一下我们如何首先做到这一点。

您首先需要将模型质量概括为可理解的方式。如果您比较10,000个房屋的预测价值和实际价值,您可能会发现好的和坏的预测混合在一起。查看10,000个预测值和实际值的列表将毫无意义。我们需要将其总结为一个指标。

有许多用于总结模型质量的指标,但我们将从一个称为平均绝对误差(也称为MAE)开始。让我们从最后一个单词开始分解这个指标,error。

每个房子的预测错误是:

error=actual−predicted

所以,如果房子花费150,000美元并且你预测它将花费100,000美元,那么误差就是50,000美元。

使用MAE指标,我们获取每个误差的绝对值。 这会将每个误差转换为正数。 然后我们取这些绝对误差的平均值。 这是我们对模型质量的衡量。 用简单的英语,可以说是

平均而言,我们的预测大约是X.

要计算MAE,我们首先需要一个模型。 下面是一个模型。

【1】

# 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)
DecisionTreeRegressor(criterion='mse', max_depth=None, max_features=None,max_leaf_nodes=None, min_impurity_decrease=0.0,min_impurity_split=None, min_samples_leaf=1,min_samples_split=2, min_weight_fraction_leaf=0.0,presort=False, random_state=None, splitter='best')

一旦我们有了模型,这就是我们计算平均绝对误差的方法:

【2】

from sklearn.metrics import mean_absolute_errorpredicted_home_prices = melbourne_model.predict(X)
mean_absolute_error(y, predicted_home_prices)434.71594577146544

The Problem with "In-Sample" Scores

我们刚刚计算的度量可以称为“样本内”得分。我们使用单个房屋“样本”来构建模型并对其进行评估。这就是为什么这很糟糕。

想象一下,在大型房地产市场,门颜色与房价无关。

但是,在用于构建模型的数据样本中,所有带绿色门的房屋都非常昂贵。该模型的工作是找到预测房价的模式,因此它将看到这种模式,它将始终预测绿色房屋的价格高。

由于该模式源自训练数据,因此模型在训练数据中看起来是准确的。

但是,如果在模型看到新数据时这种模式不成立,那么在实际使用时该模型将非常不准确。

由于模型的实用价值来自对新数据的预测,因此我们测量未用于构建模型的数据的性能。最直接的方法是从模型构建过程中排除一些数据,然后使用它们来测试模型对以前没有见过的数据的准确性。该数据称为验证数据。

Coding it

scikit-learn库有一个函数train_test_split,可以将数据分成两部分。 我们将使用一些数据作为训练数据来拟合模型,我们将使用其他数据作为验证数据来计算mean_absolute_error。

这是代码:

[3]

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))
255481.2698515171

Wow!

您的样本数据的平均绝对误差约为500美元。 但样本之外超过25万美元。

这是几乎完全正确的模型与大多数实际用途无法使用的模型之间的差异。 作为参考,验证数据中的平均房屋价格为110万美元。 因此,新数据中的误差大约是平均房屋价值的四分之一。

有许多方法可以改进此模型,例如尝试查找更好的特征或不同的模型类型。

Your Turn

在我们改善模型之前,尝试进行模型验证。

4.Model Validation相关推荐

  1. [水煮 ASP.NET Web API2 方法论](1-6)Model Validation

    问题 想要 ASP.NET Web API 执行模型验证,同时可以和 ASP.NET MVC 共享一些验证逻辑. 解决方案 ASP.NET Web API 与 ASP.NET MVC 支持一样的验证机 ...

  2. idea中applicationContext-dao.xml文件中Cannot resolve file***** :spring xml model validation问题

    访问不了classpath下的文件夹中的文件 解决办法如下:(问题出在我创建的resources文件夹是一个普通的文件夹) 1.本来是普通的文件夹 2.ctrl+shift+alt+s打开如下界面: ...

  3. 解决使用copy.deepcopy()拷贝Tensor或model时报错只支持用户显式创建的Tensor问题

    模型训练过程中常需边训练边做validation或在训练完的模型需要做测试,通常的做法当然是先创建model实例然后掉用load_state_dict()装载训练出来的权重到model里再调用mode ...

  4. 美联储SR 11-7:模型风险管理指南(Guidance on Model Risk Management)-万字收藏

    各位学员好,前天有个<python信用评分卡建模(附代码)>课程学员向我提问.她在银行工作,银行对金融风控模型验证和压力测试非常重视.目前不清楚如果对风控模型压力测试. 这个问题很专业,很 ...

  5. 我要学ASP.NET MVC 3.0(一): MVC 3.0 的新特性

    摘要 MVC经过其1.0和2.0版本的发展,现在已经到了3.0的领军时代,随着技术的不断改进,MVC也越来越成熟.使开发也变得简洁人性化艺术化. 园子里有很多大鸟都对MVC了如指掌,面对问题犹同孙悟空 ...

  6. 警惕!银行风控模型或将“摇身一变”,成为风险缔造者

    作者 | 祝世虎 来源 | 现代金融风险管理 头图 | CSDN下载自视觉中国 2011年,美联储发布了<模型风险管理监督指南(SR11-7)>(<SRLetter 11-7: Su ...

  7. ASP.NET MVC 2 模型验证

    2019独角兽企业重金招聘Python工程师标准>>> [原文地址]ASP.NET MVC 2: Model Validation  [原文发表日期] Friday, January ...

  8. 协同过滤算法 R/mapreduce/spark mllib多语言实现

    用户电影评分数据集下载 http://grouplens.org/datasets/movielens/ 1) Item-Based,非个性化的,每个人看到的都一样 2) User-Based,个性化 ...

  9. 【深度学习】CNN神经网络应用(用于亚洲大黄蜂分类)

    [深度学习]CNN神经网络应用(用于亚洲大黄蜂分类) 文章目录 1 概述 2 假设条件 3 网络结构 4 数据集和参数 5 Asian hornet classification experiment ...

最新文章

  1. java 变量与常量_详解Java变量与常量
  2. squid 安装、配置、优化
  3. PhotoshopCS6-视觉特效插画技法-1-什么是视觉特效(1)
  4. idea getset的快捷键
  5. 5位随机数重复的概率 php_php防止表单重复提交的方法
  6. placement new 操作符
  7. JS文件信息收集工具-LinkFinder
  8. Js控制弹窗实现在任意分辨率下居中显示
  9. 南京大学获赠1.2亿!
  10. 【算法篇】八种内排序算法
  11. 如何给代码自动添加注释?
  12. 算法之路(5)--括号匹配问题(Valid Parentheses)[leetcode]
  13. HTML之组件margin、padding
  14. arcgis api for ios
  15. 简述什么是SQL注入,写出简单的SQL注入语句。
  16. 利用javascript动态生成表格及注释
  17. 服务器密码忘记处理之二:重置密码
  18. 在Outlook中更改签名
  19. 前端重要信息手机号、邮箱、身份证号进行脱敏处理
  20. 【程序员股民系列】如何用python, pandas, numpy, matplotlib绘制每日行业成交额图

热门文章

  1. python关机linux_Python学习第157课——Linux切换用户、关机、查看正在运行的程序...
  2. nodejs python 通信_Nodejs环境实现socket通信过程解析
  3. openwrt 格式化_OPENWRT扩展系统到U盘
  4. vb.net怎么调用fastreport报表_财务分析-企业财务管理报表模板制作实现智能化的财务运营...
  5. sqlserver 微信昵称_sql server用户名和登录名的区别和联系
  6. 参数等效模型可以用于_干货分享电池单体产热特性及热模型标定分析(2)
  7. mysql配置文件结构_MariaDB/MySQL配置文件my.cnf解读
  8. 数据产品经理修炼手册pdf_【尼读书】数据产品经理修炼手册(附思维导图)
  9. 阿里云java mysql环境_阿里云搭建centos java mysql nginx环境
  10. 里怎么做页眉页脚_这年头县城里在家做的电商利润怎么样