当前位置: 首页 > 编程日记 > 正文

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

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

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

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

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

高偏差或高方差(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,如有作品,欢迎一并附上。


本文作者:恒亮


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

相关文章:

释放CPU,算力经济下DPU芯片的发展机遇

当前承载算力的基础设施是各种规模的的数据中心,从几十个服务器节点的小规模企业级计算中心到数万个节点的巨型数据中心,通过云计算的模式对应用层客户提供存储、软件、计算平台等服务。这个生态直接承载了全球数十万亿美元规模的数字经济,而…

SQLserver安全设置攻略

日前SQL INJECTION的攻击测试愈演愈烈,很多大型的网站和论坛都相继被注入。这些网站一般使用的多为SQLSERVER数据库,正因为如此,很多人开始怀疑SQL SERVER的安全性。其实SQL SERVER2000已经通过了美国政府的C2级安全认证-这是该行业所能拥有的…

undefined symbol: ap_log_rerror;apache2.4与weblogic点so文件

没法子啊;只能用 httpd-2.2.26 https://www.google.com.hk/#newwindow1&qundefinedsymbol:ap_log_rerror&safestrictundefined symbol: ap_log_rerror[rootlocalhost local]# vi apache2/conf/httpd.conf[rootlocalhost local]# ./apache2/bin/apachectl s…

10个Java 8 Lambda表达式经典示例

Java 8 刚于几周前发布,日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动。特性之一便是随同发布的lambda表 达式,它将允许我们将行为传到函数里。在Java 8之前,如果想将行为传入函数&…

Sql server 2005带来的分页便利

select threadid from (select threadid, ROW_NUMBER() OVER (order by stickydate) as Pos from cs_threads) as T where T.Pos > 100000 and T.Pos < 100030 如果里面的这个表cs_threads数据量超大&#xff0c;比如&#xff0c;几亿条记录&#xff0c;那这个方法应该是…

想学Python?快看看这个教程!收藏!

Python入门从哪开始&#xff0c;90%以上的书上都是这样讲的&#xff1a;先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0c;介绍文件等IO操作.... 就这样一点一点往下说。然而这种按部就班的学习方法&#…

Struts1.x系列教程(4):标签库概述与安装

Struts的整个视图层&#xff08;就是MVC模式中的View层&#xff09;是由Struts的定制标签&#xff08;或者称为定制动作&#xff09;和客户端代码(Javascript、HTML等)实现的。这些Struts标签被写在JSP页面中&#xff0c;用于生成客户端代码、进行逻辑判断等工作&#xff0c;使…

绿盟科技与CCF成立“鲲鹏”科研基金 计划发力5大领域资助16个项目

【51CTO.com原创稿件】2017年5月10日&#xff0c;由中国计算机学会(CCF)和北京神州绿盟信息安全科技股份有限公司(以下简称&#xff1a;绿盟科技)主办的2017 CCF-绿盟科技“鲲鹏”科研基金新闻发布会于北京隆重举行。双方共同宣布“鲲鹏”科研基金正式成立&#xff0c;该基金将…

修改SQL SERVER内置存储过程

SQLSERVER估计是为了安装或者其它方面&#xff0c;它内置了一批危险的存储过程。能读到注册表信息&#xff0c;能写入注册表信息&#xff0c;能读磁盘共享信息等等……各位看到这儿&#xff0c;心里可能会在想&#xff0c;我的网站中有其它的代码&#xff0c;又不像查询分析器那…

〖Linux〗使用Qt5.2.0开发Android的NDK应用程序

2013年12月11日&#xff0c;Qt发布了其新的Qt版本&#xff1a;Qt5.2.0&#xff1b; 利用这个新的版本&#xff0c;我们可以很轻松地制作出Android手机的NDK应用程序。 开发环境&#xff1a;Ubuntu13.10 x86_64 下载链接&#xff1a;http://download.qt-project.org/official_re…

基于 OpenCV 的面部关键点检测实战

【 编者按】这篇文章概述了用于构建面部关键点检测模型的技术&#xff0c;这些技术是Udacity的AI Nanodegree程序的一部分。作者 | 小白责编 | 欧阳姝黎概述在Udacity的AIND的最终项目中&#xff0c;目标是创建一个面部关键点检测模型。然后将此模型集成到完整的流水线中&#…

气温上升影响数据中心节能

也许一些公司都是你熟悉的名字。但你可能不知道的是&#xff0c;这样的公司拥有遍布美国的大型数据中心&#xff0c;包括北弗吉尼亚州。数据中心用于存储、备份和通信业务&#xff0c;使用了大量的电力&#xff0c;为IT设备供电&#xff0c;并保持其冷却其数据中心基础设施。 也…

如何将SQL Server表驻留内存和检测

将SQL Server数据表驻留内存是SQL Server提供的一项功能&#xff0c;在一般小型系统的开发过程中估计很少会涉及到。这里整理了相关文档资料&#xff0c;演示如何把SQL Server中一个表的所有数据都放入内存中&#xff0c;实现内存数据库&#xff0c;提高实时性。 1, DBCC PINTA…

C 一样快,Ruby 般丝滑的 Crystal 发布 1.0 版本,你看好吗?

整理 | 寇雪芹 头图 | 下载于视觉中国 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 近日&#xff0c;编程语言 Crystal 发布了 1.0 版本。 Crystal 是一种通用的、面向对象的编程语言&#xff0c;其语法受到 Ruby 语言的启发&#xff0c;具有静态类型检查功能&am…

php in yii framework

为什么80%的码农都做不了架构师&#xff1f;>>> command line php yiic defined(STDIN) or define(STDIN, fopen(php://stdin, r));$_SERVER[argv](2013-12-30 22:44:10) 最近读这本书, 讲使用方法, 每章节各自独立, 配合些源码看(但不要细看, 会干扰进度, 浪费时…

selenium grid2 使用远程机器的浏览器

下载 selenium-server-standalone-3.4.0.jar包在selenium-server-standalone-3.4.0.jar包目录下面执行cmd 命令 java -jar selenium-server-standalone-3.4.0.jar -role hub 启用selenium grid hub&#xff0c; 默认端口 4444注册浏览器客户端&#xff0c;命令行执行&#xff…

Create a restful app with AngularJS/Grails(4)

为什么80%的码农都做不了架构师&#xff1f;>>> #Standalone AngularJS application In the real world applications, it is usually required to integrate the third party APIs into the project. Most of case, the third party service is provided as flexi…

无代码的时代真的来了吗?

所谓“无代码”&#xff0c;并不是不存在代码&#xff0c;无代码平台的开发&#xff0c;给开发者更大的挑战、更多 机会。所以&#xff0c;“无代码”不是解放程序员&#xff0c;而是给程序员提出了更高的要求、带来更大的挑战。作者 | 函子科技陆继恒&#xff0c;Jessica Tang…

实现自适应高度

天修改一个用Excel的报表,有一个数据格是跨两列,一般单格的数据格用自动换行就可以实现自适应高度,但是跨列是不行的.查找google良久,也没发现适合的办法,一阵头痛之后,突然有了灵感,于是马上做试验,还真的实现了.先写出来,如果有困于这个问题的朋友偶然路过,或许还能有一点用处…

分表分库之一:分布式数据库的常见用法

尽量减少事务边界 采用分库分表的方式将业务数据拆分后&#xff0c;如果每条SQL语句中都能带有分库分表键&#xff0c;分布式服务层对于SQL解析后都能精准地将这条SQL语句推送到该数据所在的数据库上执行&#xff0c;数据库将执行的结果再返回给分布式服务层&#xff0c;分布式…

打印自定义纸张大小

长江支流说的办法保留太多了,结果不行,很多类都是他在程序集里自定义的,源码又没公开 不过还是要感谢他的提示 今天和小陈搞了一天,他在国外的论坛上看到了一篇文章得到了启示,最后我们在凌晨3点终于把自定义纸张的代码给写出来了,看来必须用API,微软的.NET对打印的支持太菜了…

看完 50000 张专辑封面,AI 设计师开始疯狂输出

西班牙艺术家利用 StyleGAN2 打造了一个 AI 设计师&#xff0c;借助 50000 张图像自学成才&#xff0c;没想到培养一个印象派设计师这么简单。作者 | 三羊来源 | HyperAI超神经头图 | 网友整理抄袭事件的对比图也许是有些设计太经典出挑&#xff0c;总是让人情不自禁地模仿。日…

XenApp_XenDesktop_7.6实战篇之八:申请及导入许可证

1. 申请许可证Citrix XenApp_XenDesktop7.6和XenServer 6.5申请许可证的步骤是一致的&#xff0c;由于之前我已经申请过XenApp_XenDesktop的许可证&#xff0c;本次以XenServer6.5的许可证申请为例。1.1 在申请试用或购买Citrix产品时&#xff0c;收到相应的邮件&#xff0c;其…

使用Windows操作系统的13个窍门

Windows操作系统的13个使用窍门&#xff0c;很适用。 1.删除Windows下不让删除的文件 有时想删除某个文件&#xff0c;系统会告诉无法删除&#xff0c;换到DOS下或是安全模式虽然可以删除&#xff0c;但是有点麻烦。这时可以用鼠标右键点击回收站&#xff0c;选择“属性”将“回…

如何让机器像人一样多角度思考?协同训练来帮你

作者 | 宁欣头图 | 下载于视觉中国出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;本文目录0. 摘要1. 引言2. 协同训练介绍3. 协同训练改进3.1 基于视图划分的协同训练3.2 基于学习器差异化的协同训练3.3 基于标签置信度的协同训练4. 协同训练应用5. 总结与展望摘要协…

PHP设计模式(4)命令链模式

命令链 模式以松散耦合主题为基础&#xff0c;发送消息、命令和请求&#xff0c;或通过一组处理程序发送任意内容。每个处理程序都会自行判断自己能否处理请求。如果可以&#xff0c;该请求被处理&#xff0c;进程停止。您可以为系统添加或移除处理程序&#xff0c;而不影响其他…

MFC界面库BCGControlBar v25.3新版亮点:Gauge Controls

2019独角兽企业重金招聘Python工程师标准>>> 亲爱的BCGSoft用户&#xff0c;我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v25.3正式发布&#xff01;新版本添加了对Visual Studio 2017的支持、增强对Windows 10的支持等。接下来几篇文…

如何使用 ASP.NET 实用工具加密凭据和会话状态连接字符串

文章编号:329290最后修改:2006年4月10日修订:8.0 重要说明&#xff1a;本文包含有关如何修改注册表的信息。修改注册表之前&#xff0c;一定要先进行备份&#xff0c;并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息&#xff0c;请单击下…

16款小米新品,刚刚雷军只发了5款

会前&#xff0c;雷军在微博上提前疯狂剧透小米即将发布的新品信息。要发布的产品实在太多了&#xff0c;整合提前发布的信息来看&#xff0c;此次发布会可能会是小米有史以来时间跨度最长、新品数量最多的新品发布会&#xff0c;包括小米11 Pro/Ultra、小米MIX新机、小米11青春…

windows下使用aspell开启emacs的单词拼写检查功能

第一步,你需要下载aspell安装文件和至少一个字典,下载地址为http://aspell.net/win32/. 下载之后,分别安装aspell和字典. 需要注意的是,在64位的WIN7下,“C:\Program Files (x86)”是32位安装程序的默认安装目录,而“C:\Program Files"是64位安装程序的默认安装目录,因此a…