数据挖掘:模型状态评估

之前的模型评估仅仅是在评估模型的预测精度怎么样,没有考虑模型过拟合和欠拟合的状态。也就是说,模型拟合出来后,我们要对它进行优化,而如何优化就要看模型目前所处的一个状态,过拟合,欠拟合等。有针对的对模型进行优化。

一、模型状态

模型的状态可分为两类:

  1. 过拟合:模型在训练集上的效果好,在测试集上的效果差。
  2. 欠拟合:模型在训练集和测试集上的效果都不好。

而这个效果就是模型评估中的准确度。从准确度的反面,就是误差过大。
误差:学习器的预测输出与样本的真实输出之间的差异
根据数据集的划分,又有如下的定义:

  1. 训练误差(training error):又称为经验误差(empirical error),学习器在训练集上的误差。
  2. 测试误差(test error):学习器在测试集上的误差。
  3. 泛化误差(generalization error):学习器在未知新样本上的误差。

训练模型的意义:得到泛化误差小的学习器。然而,事先并不知道新样本,实际能做的是努力使经验误差最小化。但需要明确一点,即使分类错误率为 0,精度为 100% 的学习器,也不一定能够在新样本上取得好的预测结果。我们实际希望的是在新样本上能表现得很好的学习器。

为了达到这个目的,应该从训练样本中尽可能学出适用于所有潜在样本的“普遍规律”,这样才能在遇到新样本时做出正确的判别。因为,泛化误差无法测量,因此,通常我们会将测试误差近似等同于泛化误差。

模型评估

二、偏差与方差

如何评估我们模型的状态,这里我们使用学习曲线。它能反映出随着样本量的增大,训练数据和测试数据偏差和方差的变化。

一般我们使用模型的偏差(Bias)与方差(Variance)来描述模型的泛化性能,这称为偏差-方差分解(bias-variance decomposition)。

偏差:由所有采样得到的大小为 m 的训练数据集训练出的所有模型的输出的平均值和真实模型输出之间的偏差。偏差通常是由于我们对学习算法做了错误的假设所导致。度量学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。模型与其他模型相比较,不同模型对训练集和测试集的准确度进行对比。

方差:由所有采样得到的大小为 m 的训练数据集训练出的所有模型的输出的方差。简单地说,度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据集的变动导致学习性能的变化,也就是学习算法的稳定性。模型与自身比较,同一模型对训练集和测试集上的准确率进行对比。

噪声:表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了数据集标记本身的误差

模型的选择、评估和优化-上

下面这个图可以很好地理解偏差和方差之间的区别**。即偏差高低意味着模型的准确性;方差高低意味着模型的稳定性**。

假设一次射击就是一个机器学习模型对一个样本进行预测。射中靶心位置代表预测准确,偏离靶心越远代表预测误差越大。
我们通过 n 次采样得到 n 个大小为 m 的训练样本集合,训练出 n 个模型,对同一个样本做预测,相当于我们做了 n 次射击,射击结果如下图所示。
我们最期望的结果就是左上角的结果,射击结果又准确又集中,说明模型的偏差和方差都很小;
右上图虽然射击结果的中心在靶心周围,但分布比较分散,说明模型的偏差较小但方差较大;
同理,左下图说明模型方差较小,偏差较大;
右下图说明模型方差较大,偏差也较大。


所以,我们要的模型时偏差和方差都比较小的。

模型评估:模型状态评估

过拟合是:偏差小,方差大。
欠拟合是:偏差大,方差小。

所以,调整模型状态也就是在偏差与方差之间进行权衡。

三、学习曲线

通过画出不同训练集大小时训练集和交叉验证的准确率,可以看到模型在新数据上的表现,进而来判断模型是否方差偏高或偏差过高,以及增大训练集是否可以减小过拟合。
当训练集和测试集的准确率收敛且都收敛到较低准确率时,与基准分类器(红线表示)相比为高偏差。
左上角表示分类器的偏差很高,训练集和验证集的准确率都很低,很可能是欠拟合。

训练集和测试集的准确率与基准分类器有差不多的准确率,说明偏差较低,但在测试集和训练集的准确率差距较大,为高方差。
右上角方差很高,训练集和验证集的准确率相差太多,是过拟合。

模型越复杂,学习能力越强,故训练集误差越小。但是对于测试集误差,当它减少到一定程度时,模型可能因为过于复杂而出现过拟合现象,误差反而增大。此时可通过降维,增大正则化等措施,减低过拟合。

措施 应对情形
过拟合:低偏差,高方差 增加数据量,降低模型复杂度(减少特征数,增大正则化)
欠拟合:高偏差,低方差 增加数据量无效。提升模型复杂度(增加特征数,减小正则化)

关于学习曲线的绘制,可以去sklearn官网上查找。

数据挖掘:模型状态评估相关推荐

  1. 数据挖掘 —— 模型评估

    数据挖掘 -- 模型评估 1.分类模型评估(一) 1.1 二分类模型 1.2 多分类模型 1.3 代码 2.分类模型评估(二) 2.1 ROC 与 AUC 2.2 代码 1.分类模型评估(一) 1.1 ...

  2. 做好数据挖掘模型的9条经验总结

    数据挖掘是利用业务知识从数据中发现和解释知识(或称为模式)的过程,这种知识是以自然或者人工形式创造的新知识. 当前的数据挖掘形式,是在20世纪90年代实践领域诞生的,是在集成数据挖掘算法平台发展的支撑 ...

  3. 软件系统兼容性设计_港口大型设备状态评估及管理信息系统的设计

    陈 昆 宋 婷 方 俊 邹浩阳 黄钟韬 0 引言 近年来,为适应现代工业的快速发展以及国际贸易日益激烈的竞争环境,港口装卸设备设计制造正朝着高速化.大型化和智能化的方向发展. 港口大型设备起重量大.作 ...

  4. 【NLP】蓦然回首:谈谈学习模型的评估系列文章(一)

    统计角度窥视模型概念 作者:白宁超 2016年7月18日17:18:43 摘要:写本文的初衷源于基于HMM模型序列标注的一个实验,实验完成之后,迫切想知道采用的序列标注模型的好坏,有哪些指标可以度量. ...

  5. Paddle框架理解:模型状态、动态图与静态图、paddle.nn与paddle.nn.functional异同

    文章目录 前言 1. 模型状态 2. 动态图与静态图 3. paddle.nn 与paddle.nn.functional异同 参考 前言 最近在学习Paddle深度学习框架,这里对个人觉得比较重要的 ...

  6. Python中记住过去(模型状态)的五种方法

    在Python中记住过去(模型状态)的五种方法 从封闭函数和迭代器到状态机Python库 有人说... "那些不能记住过去的人,注定要重复它".G. Santayana, 1905 ...

  7. 构建一个数据挖掘模型,基本分为哪几步?

    数据挖掘的目的,就是从数据中找到更多的优质用户.什么是有指导的数据挖掘方法模型,以及数据挖掘如何构建模型.在构建一个有指导的数据挖掘模型,首先要理解和定义一些模型试图估计的目标变量. 首先要定义模型的 ...

  8. SqlServer2012建数据挖掘模型

    SqlServer2012建数据挖掘模型   Microsoft SQL Server提供了集成的数据挖掘建模分析环境,这里我们用SQL Server官网提供的数据创建模型并用于分析顾客购车行为,从而 ...

  9. 算法模型---算法调优---数据挖掘模型效果评估方法汇总

    基于损失函数的标准 sklearn中的模型评估 混淆矩阵 混淆矩阵用在分类器中,是对每一类样本的统计,包括正确分类和错误分类的个数.对于m类样本,可能的错误种类有m2−mm^2-mm2−m个. 对于2 ...

最新文章

  1. POJ - 1381 Secret Code(dfs+高斯整数)
  2. go语言linux环境配置nginx,搭建wss
  3. Action Framework Medium attribute 初始化逻辑
  4. oracle订阅推送,ERP一部推送 | Oracle优化技术分享
  5. apache 编译php mysql_apache静/动态编译在apache+php+mysql应用
  6. 开关电源测试系统用哪个软件,开关电源测试系统
  7. java-第三章-从键盘输入3个整数,然后将输入的整数按照从小到大的顺序放在abc,并输出3个变量的值...
  8. R语言实现PVAR(面板向量自回归模型)
  9. javascript百度地图使用(根据地名定位、根据经纬度定位)
  10. input 框隐藏光标问题
  11. dnf剑魂buff等级上限_DNF:95职业加强前瞻,爆发能力明显提升,瞎子大冰可点TP!...
  12. anaconda安装及pytorch、tf、jupyter环境配置
  13. 天呐!惊人的Springboot测试.Springboot测试类之@RunWith注解
  14. iOS优秀的图片压缩处理方案
  15. 语义网技术综述(web3.0)
  16. 【微信小程序】微信小程序函数封装
  17. linux修改文件信息失败怎么办,【Linux】Linux修改openfiles后不生效问题?
  18. 【分享】性能比肩美拍秒拍的Android视频录制编辑特效解决方案【1】
  19. 计算机应用基础提问话题,10个开启新话题的过渡方法.docx-汇文网
  20. 面试高频算法题补充系列:木棍切割问题

热门文章

  1. express+nodecoffee写passport登录验证实例(一)
  2. opencv转单通道python_在OpenCv(Python)中查找单通道图像的目录
  3. 获取 NodeJS 程序退出码
  4. springboot中如何创建定时任务,以及corn表达式规则
  5. java 索引实现,Java创建ES索引实现
  6. telnet收发邮件
  7. Ubuntu安装ASIO开发库
  8. 数字证书产品的主题通常含有如下字段
  9. 600个开源iOS应用库
  10. 移动HTML5前端性能优化指南