你的机器学习模型为什么会出错?奉上四大原因解析及五条改进措施

对开发者来说,目前有一系列的机器学习模型可供选择。雷锋网(公众号:雷锋网)了解,可以用线性回归模型预测具体的数值,用逻辑回归模型对不同的运算结果进行归类,以及用神经网络模型处理非线性的问题等等。

不论哪一种,当模型选定之后,下一步就是利用大量的现有数据对相关的机器学习算法进行训练,探究既定的输入数据和预想的输出结果之间的内在关系。但这时可能会出现一种情况:训练结果能够成功应用于原始输入和输出,可一旦有新的数据输入就不行了。

或者说得更直白一点,应该怎样评估一个机器学习模型是否真的行之有效呢?雷锋网从偏差、方差、正确率和查全率等四个方面对这一问题展开了探讨,并给出五条改进措施。

  高偏差或高方差(High Bias or High Variance)

当我们评估一个机器学习模型时,首先要做的一件事就是:搞清楚这个模型的偏差和方差是否太大。

高偏差:如上图1所示,所谓高偏差就是指在取样点上模型的实际输出和预想输出不匹配,而且相差很远。出现这一问题的原因是模型并没有准确表征既定输入和预想输出之间的关系,从而造成输出结果的高错误率。

高方差:这种情况与高偏差的情况正好相反。在这一场景中,所有的取样点结果都与预期结果完全相符。看起来模型的工作状态完全正常,但其实隐藏着问题。这样的情况往往容易被忽视,就好像上文提到的,模型能够成功应用于原始输入和输出,但一旦输入新数据,结果就会漏洞百出。

那么问题来了,如何排查一个模型是否具有高偏差或者高方差呢?

一个最直接的办法就是对数据进行交叉验证。常见的交叉验证方法有很多,例如10折交叉验证、Holdout验证和留一验证等。但总体思路是一样的:拿出大部分的数据(例如70%)进行建模,留一小部分(例如30%)的数据作为样本,用刚刚建立的模型进行测试,并评估测试结果。持续进行这一过程,直到所有的样本数据都恰好被预测了一次为止。

经过交叉验证,就可以很方便地排查一个模型的偏差和方差情况。当建模数据和测试数据的输出结果都出现与预期结果的不匹配时,那就说明模型的偏差较大。反之,如果建模数据表现正常,而测试数据存在不匹配,那就说明模型的方差较大。同时,如果建模数据和测试数据的输出结果都与预期结果相匹配,那么就证明这一模型顺利通过了交叉验证,在偏差和方差之间找到了一个很好的平衡点。

不过,即使偏差和方差都表现正常,一个机器学习模型也不一定就能正常工作,因为还可能受到其他因素的影响,例如正确率和查全率。

  低正确率或低查全率(Low Precision or Low Recall)

这里可以用垃圾邮件筛选的例子来说明什么是正确率和查全率。在一般情况下,我们收到的大约99%的邮件都是正常邮件,而只有1%是垃圾邮件(这里不妨称“垃圾邮件”为正向判断,而“正常邮件”为反向判断,后续会用到)。而如果一个机器学习模型被以类似这样分布的数据进行训练,那么其训练结果很可能是:机器的判定结果有99%都是正确的,虽然正确率很高,但其中也一定漏掉了那1%的垃圾邮件(这显然不是我们想要的结果)。

在这种情况下,最适于利用正确率和查全率来评估一个模型是否真的行之有效。

如图所示,所谓正确率是指所有正向判断中,最终判断正确的比例。计算方法是用正向判断中正确的次数除以所有正向判断的次数。而查全率是指正向判断中正确的次数,占实际正向结果的比例。计算方法是用正向判断中正确的次数,除以正向判断中正确的次数与反向判断中错误的次数之和。

乍一看似乎有点拗口,这里用具体的数字解释一下。例如一个模型一共做了2次正向判断,其中1次是正确的,10次反向判断,其中8次是正确的。如果用邮件的例子来看,也就意味着系统一共收到了12封邮件,其中9封是正常邮件,3封是垃圾邮件。那么其正确率就是1/2=50%,而查全率就是1/3=33%。

可以看到,正确率反应了一个模型的预测准确度,而查全率反应了一个模型的实际应用效果。一个机器学习模型的设计目标应该是在正确率和查全率中找到一种平衡,一方面努力增加正向判断中正确的次数,一方面减小反向判断中错误的次数。

  五条改进措施

根据以上内容,在面对偏差和方差,正确率和查全率的相关问题时,有以下5点意见可供参考。

  1. 当模型出现高偏差时,尝试增加输入特征的个数。如上文讨论的,当建模数据和测试数据的输出结果都出现与预期结果的不匹配时,那就说明模型的偏差较大。根据一般的模型输入特征和预测错误之间的关系图表可以看出(如上图所示),随着输入特征的增加,偏差会显著减小。
  2.  反之,当模型出现高方差时(也即出现了过耦合),这时可以尝试减少输入特征的个数。从图表中也可以看出,当输入特征进一步增加时,虽然建模数据的错误会越来越少,但测试数据的错误会越来越多。因此,输入特征并不能无限制地增加,在高方差的情况下尝试减少输入特征的个数,可以找到二者之间的平衡。
  3.  另外,通过增加训练用例的个数也可以显著减少高方差的出现。因为随着测试用例的增加,模型的通用性也就越好,能应对更多变的数据,也即方差越小。
  4. 当正确率较低时,尝试增加概率阈值。如上图所示,划分正向判断和反向判断的概率阈值与正确率和查全率之间关系密切。随着阈值的增加,模型对正向的判断也就越保守,正确率也就越高。
  5. 反之,当出现较低的查全率时,可以尝试减小概率阈值。因为概率阈值的减小意味着模型会做出更多的正向判断,正向判断的次数多了,查全率就会跟着提升。

总之,经历的迭代和调试越多,就越可能找到偏差和方差、正确率和查全率之间的平衡,也就越可能找到一个行之有效的机器学习模型。

来源:kdnuggets ,由雷锋网编译

【兼职召集令!】

如果你对未来充满憧憬,喜欢探索改变世界的科技进展,look no further!

我们需要这样的你:

精通英语,对技术与产品感兴趣,关注人工智能学术动态的萝莉&萌妹子&技术宅;

文字不求妙笔生花,但希望通俗易懂;

在这里,你会收获:

一群来自天南地北、志同道合的小伙伴;

前沿学术科技动态,每天为自己充充电;

更高的生活品质,翻翻文章就能挣到零花钱;

有意向的小伙伴们把个人介绍/简历发至 guoyixin@leiphone.com,如有作品,欢迎一并附上。

本文作者:恒亮

本文转自雷锋网禁止二次转载,原文链接

时间: 2025-01-31 09:33:43

你的机器学习模型为什么会出错?奉上四大原因解析及五条改进措施的相关文章

国际顶级人工智能会议AAAI 2017 开幕在即,雷锋网奉上四大看点集锦 | AAAI 2017

 2 月 4 日至 2 月 9 日,当我们还沉浸在浓浓的新年气氛时,远在大洋彼岸的旧金山即将迎来人工智能的国际顶级会议--AAAI 2017. 雷锋网旗下人工智能公众号「AI 科技评论」作为前赴第一线现场报道的中国媒体,在会前为大家梳理了一份 AAAI 2017 的看点集锦,同样,我们也会在期间举办「AAAI 中国之夜」的活动,详情可见文后介绍. AAAI 原为 American Association for Artificial Intelligence 的缩写,后于 2007 年更名为「N

如何在iPhone上建立第一个机器学习模型

引言 作为一名数据科学家,我一直有一个梦想--顶级科技公司在与我相关的领域不断推出新产品. 如果你观看了Apple公司最新的iPhone X发布会,你会发现iPhone X具有非常酷的特性,比如FaceID.动态表情.增强现实,这些特性都使用了机器学习.作为一名骇客,我决定亲自上手探索一下如何建立那样的系统. 进一步调查后我发现了一个很有趣的工具,那就是Apple官方面向开发者推出的机器学习框架工具CoreML.它可以在iPhone.Macbook.Apple TV.Apple watch等任何

为什么一些机器学习模型需要对数据进行归一化?

    机器学习模型被互联网行业广泛应用,如排序(参见:排序学习实践).推荐.反作弊.定位(参见:基于朴素贝叶斯的定位算法)等.一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化,为什么要归一化呢?很多同学并未搞清楚,维基百科给出的解释:1)归一化后加快了梯度下降求最优解的速度:2)归一化有可能提高精度.下面我简单扩展解释下这两点. 1 归一化为什么能提高梯度下降法求解最优解的速度?       斯坦福机器学习视频做了很好的解释:https://cla

香港科技大学在读博士生张鹏博:借鉴师生互动模式来训练机器学习模型

在学校教学模式中,老师扮演着重要的角色.借鉴老师与学生的师生互动模式,香港科技大学在读博士生张鹏博在他的论文A New Learning Paradigm for Random Vector Functional-Link Network: RVFL+中提出一种基于LUPI 的 random vector functional-link 网络(RVFL+),RVFL+不需要太多的计算硬件以及时间,优势明显. 在近期雷锋网 AI研习社的线上分享会上,他为我们详细解读了A New Learning

《构建实时机器学习系统》一2.2 怎样衡量监督式机器学习模型

2.2 怎样衡量监督式机器学习模型 本章前面对一个好的实时机器学习模型的衡量只提到了"优秀" "合适"这样的字眼,本节将会详细展开,讨论监督式实时机器学习模型的衡量标准. 在实际应用中,监督式实时机器学习效果的好坏可以分为统计量是否优秀和应用业绩是否优秀两个方面.下面将按照这两部分分别进行介绍. 在讨论技术细节之前,先进行一下符号的定义: 给定 n 组已知的自变量和因变量{(Yi, Xi)}ni=1作为测试数据集,对于任意i,我们通过自变量Xi和模型f(Xi; b)

如何开发机器学习模型?(机器学习入门第三篇)

在之前的两篇文章里面,分别介绍了机器学习可以做哪些业务,以及学习机器学习所需要的了解的算法知识.本文将分享开发机器学习模型的全过程. 1.机器学习入门系列第一篇: 机器学习能为你的业务做什么?有些事情你肯定猜不到! 2.机器学习入门第二篇:关于机器学习算法 你需要了解的东西 你应该已经熟悉所有的技术概念了吧,现在,我们可以把某个想法变成一个可用于生产的实际模型了. 建模步骤一览 从较高的层次上来讲,创建一个优秀的机器学习模型跟创建其他任何产品是一样的:首先从构思开始,把要解决的问题和一些潜在的解

如何使用JavaScript构建机器学习模型

目前,机器学习领域建模的主要语言是 Python 和 R,前不久腾讯推出的机器学习框架 Angel 则支持 Java 和 Scala.本文作者 Abhishek Soni 则用行动告诉我们,开发机器学习模型,JavaScript 也可以. JavaScript?我不是应该使用 Python 吗?甚至 Scikit-learn 在 JavaScript 上都不工作. 这是可能的,实际上,连我自己都惊讶于开发者对此忽视的态度.就 Scikit-learn 而言,Javascript 的开发者事实上已

《构建实时机器学习系统》一1.8 实时机器学习模型的生存期

1.8 实时机器学习模型的生存期 进行实时机器学习开发必须考虑生存期.生存期是指一个系统从提出.设计.开发. 测试到部署运用.维护.更新升级或退役的整个过程.若在生存期设计上出现了数据,那么在后面的使用中就会出现各种各样的瓶颈阻碍应用产生价值. 从软件工程的角度上讲,开发实时机器学习也遵从构思.分析.设计.实现和维护五个步骤,这五个步骤可能会循环往复,随着业务的发展进行多次迭代.实时机器学习模型的应用由于其技术的特殊性,也具有自己的小型生存期,其中包括数据收集.数据分析.离线手工建模评测.上线自

8个经过证实的方法:提高机器学习模型的准确率

来自 http://datartisan.com/article/detail/74.html 导语: 提升一个模型的表现有时很困难.如果你们曾经纠结于相似的问题,那我相信你们中很多人会同意我的看法.你会尝试所有曾学习过的策略和算法,但模型正确率并没有改善.你会觉得无助和困顿,这是90%的数据科学家开始放弃的时候. 不过,这才是考验真本领的时候!这也是普通的数据科学家跟大师级数据科学家的差距所在.你是否曾经梦想过成为大师级的数据科学家呢? 如果是的话,你需要这 8 个经过证实的方法来重构你的模型