上一篇博客链接: 机器学习与建模中 - 判断数据模型拟合效果的三种方法

在上一篇博客中,我们谈到了使用损失函数来判断模型的拟合效果。但是拟合效果比较好的模型不一定是最好的模型,建模的最终目的是为了预测,因此预测最精准的模型才是最好的模型。

提到预测,我们引入一个新的概念,叫作“泛化能力”(泛化能力是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据对背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出。)

比如在多项式回归的例子上(下图),对于同样的训练数据,8阶多项式的损失比1阶多项式小很多,但是对于未来的预测,8阶多项式显得非常糟糕(下右图)。由于8阶多项式的模型过于关注训练数据(过拟合),因此不能很好的泛化新数据。

为了克服过拟合,能够更好的泛化,我们一般采取以下四种方法:

方法一:验证集

方法二:交叉验证

方法三:K折交叉验证的计算缩放

方法四:清洗噪点


方法一:验证集

克服过拟合问题的一般方法是使用第二个数据集,即验证集。用验证集来验证模型的泛化能力。验证集可以单独提供或者从原始数据中抽取一部分作为验证集。比如奥运会男子100米短跑数据,抽取1980年之后的数据作为验证集,1980年之前的数据用于训练模型。

在训练集上训练出 N 个模型,为了判断模型的泛化能力,我们计算他们在验证集上的损失函数,损失函数越小则泛化能力越好。下图表明,1阶多项式模型的泛化能力最好,8阶和6阶的泛化能力较差。

下图给出了 1 阶、4 阶、8 阶多项式模型的泛化能力图,可以很直观的看出来模型的好坏。


方法二:交叉验证

交叉验证与验证相差“交叉”两个字,所谓交叉验证就是把原始数据集分为大小尽可能相等的 K 块数据集,每一块数据集轮流作为验证集,剩余的 K-1 块作为训练集训练模型。在计算损失值得时候,将K个验证集上计算出的损失值的平均数作为最后的损失值。

特殊的,当 K = N 时,即把数量为 N 的原始数据集分成了 N 份,这就使得每一次的验证集都只有一条数据。K 折交叉验证的这种特殊情况称之为留一交叉验证(Leave-One-Out Cross Validation, LOOCV),LOOCV情况下的损失值一般是用平均损失函数计算。

下图给出了奥运会男子100米短跑数据在LOOCV情况下的平均损失值,图中曲线表明 3 阶多项式模型才是损失值最小的。这个结论显然与方法一中取1980年后的数据作为验证集的结论不一样,这样的分歧并不是异常的。但是两种方法一致的结论就是,高于 3 阶的模型都是不合适的。


方法三:K折交叉验证的计算缩放

留一交叉验证似乎已经是评估模型好坏的一种好方法,他几乎可以评估各种可选择的模型。然而在工作中,我们往往要考虑成本问题,对于 LOOCV 的实现,需要训练模型 N 次,这比简单的模型选择方法要多耗费约 N 倍的时间。对于一些复杂度比较高的模型,比如高阶多项式、对数函数、三角函数等,或者对于数据量比较大的模型,这显然并不可行。

解决这个难题的方法就是限制 K 的值,令 K << N ,由此可以大大缩减训练模型的次数。

经历多年的尝试,业界习惯的令 K = 10,在 10 折交叉验证中,我们用数据集中的 10% 作为验证集,剩下的 90% 作为训练集,模型的训练只循环 10 次。特别是当数据条数 N 远远大于10 的情况下,这将会是很大的一笔节省。


方法四:清洗噪点

有时候,能影响模型泛化能力的可能是某几个噪点引起的过拟合,因此只要在数据清洗的过程中,删除噪点,或者用均值代替,或者用邻近值代替即可,数据清洗的方法请点击下面链接:

文章链接:Python数据预处理 - 数据清洗 - 洗什么?怎么洗?看完就明白了

模型评价 - 机器学习与建模中怎么克服过拟合问题?相关推荐

  1. linearregression_机器学习-TensorFlow建模过程 Linear Regression线性拟合应用

    TensorFlow是咱们机器学习领域非常常用的一个组件,它在数据处理,模型建立,模型验证等等关于机器学习方面的领域都有很好的表现,前面的一节我已经简单介绍了一下TensorFlow里面基础的数据结构 ...

  2. 如何将房室模型运用到数学建模中?——气体传感器响应分析(校内赛)

    目录 作者的话 房室模型介绍 房室(二室)模型概述 模型的建立[1] 响应阶段的房室模型 回复阶段的房室模型 ---- 总结 参考文献 作者的话 时光荏苒,开学我已经是一名准大三学生.两年来,要说收获 ...

  3. 建模中的定量预测拟合方法

    预测.拟合方法门目繁多,包括定性预测和定量预测,此篇主要归纳定量预测. 时间序列分析 时序预测法 时间序列预测法可用于短期预测.中期预测和长期预测. 具体分为: 简单时序平均数法: 也称算术平均法.即 ...

  4. 分类器评价与在R中的实现:收益图与提升图

    分类模型评价一般有以下几种方法:混淆矩阵(Confusion Matrix).收益图(Gain Chart).提升图(Lift Chart).KS图(KS Chart).接受者操作特性曲线(ROC C ...

  5. 分类器评价与在R中的实现:混淆矩阵

    分类模型评价一般有以下几种方法:混淆矩阵(Confusion Matrix).收益图(Gain Chart).提升图(Lift Chart).KS图(KS Chart).接受者操作特性曲线(ROC C ...

  6. AUC值越大_模型评价——准确率、精确率与召回率与F值、宏平均与微平均、ROC曲线与AUC值...

    在上一篇文章中(baiziyu:模型评价--训练误差与测试误差.过拟合与欠拟合.混淆矩阵)主要介绍了模型评价涉及的基本概念,本节给出一些常用的评价指标.这些指标大致可以分为三类,第一大类是普通的准确率 ...

  7. 机器学习中的模型评价、模型选择及算法选择

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 正确使用模型评估.模型选择和算法选择技术无论是对机器学习学术研究还是工业场景应用都至关重要.本文将对这三个任务的相关技术 ...

  8. 【机器学习】为什么在信用风险建模中首选树模型?

    信用风险建模是一个可以使用机器学习来提供解决方案的领域,因为它能够从大量异构数据中找到答案.在信用风险建模中,还需要推断特征,因为它们在数据驱动的决策中非常重要. 在这篇文章中,我们来研究什么是信用风 ...

  9. 【采用】机器学习在金融大数据风险建模中的应用

    本文在传统风险模型体系的基础上,嫁接逻辑回归和决策树模型建立T-L模型,并结合Random Forest模型完善模型结构.采用T-L核模型替代RF模型中的传统决策树模型,将RF模型和T-L核模型结合, ...

最新文章

  1. windows默认共享的打开和关闭?
  2. Linux socket本地进程间通信之UDP
  3. (27)TLB番外篇——ShadowWalker
  4. App Store应用脱壳
  5. 将 Citavi 笔记按需要导出
  6. collection集合 地址_有容乃大--Java 集合(List/Set/Map)
  7. nginx 没有cookie_Nginx入门学习(1):一些概念
  8. UE4游戏提取的通用步骤(21_9_8)
  9. 关于jqui datepicker 使用enter选择日期后 点击input 没有打开日期控件问题
  10. 这些年,这些ACM大佬-吴作凡访谈
  11. 关于lodop的学习小计
  12. 云服务器的系统镜像怎么选,买云服务器镜像怎么选择
  13. 微信小程序的技术原理
  14. pads2007版本pcb导出的dxf在cad中打不开,提示“DXF 输入无效或不完整 -- 图形被放弃”
  15. 我的世界java百度什么电脑玩好_【我的世界】为了在龙芯电脑上玩Minecraft(我的世界)我做了什么_玩得好游戏攻略...
  16. 提示502的解决办法
  17. Android键盘操作的函数:onKeyDown, onKeyUp, on, onKeyMultiple
  18. colorkey唇釉是否安全_colorkey空气唇釉怎么样 人气口红种草 – 爱打扮
  19. Dubbo 3 易用性升级之 Dubbo 官网大改版
  20. 老路用得上的商学课-1-20学习(读书)笔记

热门文章

  1. 项目中cxf和weblogic整合时报错的问题
  2. FPGA开发全攻略——概念篇
  3. PowerDesigner使用教程 —— 概念数据模型 (转)
  4. 云南干旱 谁人受损 心有戚戚 愤怒哀伤
  5. 和一个刚毕业不久的朋友聊天
  6. 当前进程(Linux Devices Driver)
  7. js 点击button切换颜色_ThingJS 和three.js开发示例对比,让开发早点下班回家!3D 可视化...
  8. 【Pytorch神经网络理论篇】 26 基于空间域的图卷积GCNs(ConvGNNs):定点域+谱域+图卷积的操作步骤
  9. HTML animate()动画更改多个元素背景颜色但不同时生效问题
  10. linux 6.2 期末考试题,redhat6.2-linux考试试卷(带部分答案)