机器学习算法评估实战(全彩印刷)

978-7-115-55240-2
作者: 宋亚统
译者:
编辑: 陈冀康

图书目录:

详情

机器学习算法评估力求用科学的指标,对机器学习算法进行完整、可靠的评价。 本书详细介绍机器学习算法评估的理论、方法和实践。全书分为3个部分。第1部分包含第1章~第3章,针对分类算法、回归算法和聚类算法分别介绍对应的基础理论和评估方法;第2部分包含第4章~第8章,介绍更复杂的模型(如深度学习模型和集成树模型)的对比与评估,并且针对它们实际应用的业务场景介绍一些特有的评估指标和评估体系;第3部分包含第9章~第11章,总结算法评估的常用工具、技术及方法论,包括实用的可视化工具介绍,并讨论机器学习算法的本质。 本书适合机器学习专业相关从业者和算法工程师阅读,也适合想要从事人工智能和机器学习工作的人士学习和参考。

图书摘要

版权信息

书名:机器学习算法评估实战

ISBN:978-7-115-55240-2

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


著    宋亚统

责任编辑 陈冀康

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


机器学习算法评估力求用科学的指标,对机器学习算法进行完整、可靠的评价。

本书详细介绍机器学习算法评估的理论、方法和实践。全书分为3个部分。第1部分包含第1章~第3章,针对分类算法、回归算法和聚类算法分别介绍对应的基础理论和评估方法;第2部分包含第4章~第8章,介绍更复杂的模型(如深度学习模型和集成树模型)的对比与评估,并且针对它们实际应用的业务场景介绍一些特有的评估指标和评估体系;第3部分包含第9章~第11章,总结算法评估的常用工具、技术及方法论,包括实用的可视化工具介绍,并讨论机器学习算法的本质。

本书适合机器学习专业相关从业者和算法工程师阅读,也适合想要从事人工智能和机器学习工作的人士学习和参考。


这是充满机遇的时代,也是充满挑战的时代;这是技术日新月异的时代,也是我们回归正统、找回真我的时代;这是互联网产业蓬勃发展的时代,也是互联网技术不断转型、不断创新的时代。

很多人都听说过互联网浪潮[1]的“下半场”。那么,什么是“下半场”?为什么互联网产业的发展会分为“上、下半场”?

首先,我们来说一说“上半场”都发生了什么。

过去的十年中,在人工智能技术和互联网思维的驱动下,做网购的天猫和京东、做餐饮的美团、做打车的滴滴、做租房的自如……这些互联网公司如雨后春笋般迅猛发展,公司业务几乎涵盖了人们衣食住行的方方面面。

但是,这些公司基本上不做实体产业,他们只是把线下的产品或服务通过互联网平台呈现在消费者面前,在商品或服务的提供商和消费者之间提供连接的纽带,这就是互联网思维。在这种运营模式背景下,这些公司需要对海量的数据进行分析和计算,以便更好地为商户或消费者服务。对于大数据处理这种数据量大、重复性高的工作,如果将其交给人来完成无疑是成本高昂且效率低下的,因此,机器学习技术也就成了完成这项工作的“不二之选”。

在互联网浪潮的“上半场”中,机器学习在各公司的业务实践中初露锋芒。从天猫的商品个性化推荐,到百度的语义识别,再到京东的无人配送,机器学习都发挥了不可替代的作用。机器学习的评估体系也承担了重要的任务,人们通过一些常规的指标,基本能够完成对算法质量的初步判断,从而使算法在应用中达到预期的效果。

然而,在互联网浪潮的“下半场”中,竞争逐渐激烈、市场趋于稳定,许多公司已经有了属于自己的一片“领地”。对于大公司,“下半场”更多地意味着“精耕细作”和“国际化”,“精耕细作”指进一步提升效率和降低成本,“国际化”则指将平台和世界接轨,真正将自己的品牌推向世界。而对于后入场的小公司,则意味着两条发展路线,一条是研发领先于市场的新技术和新产品,做尖端服务,这可能难度较大;另一条就是走精细化路线,专注于某一个垂直领域,也就是大公司的业务涵盖不到的业务场景,提供差异化服务。

无论是大公司还是小公司,在“下半场”的竞争中,对机器学习算法的研发都需要更加专业化和精细化。在机器学习算法评估的问题上,传统领域的很多指标不一定能适应新的领域,因此在新的领域中需要新的评估指标来提供特定业务场景下的个性化服务。而对于职场上的个体,掌握一套科学高效的评估理论,不仅可以大大提高自己的工作效率,也能更好地向上级领导展示自己的工作成果,在职场发展中取得事半功倍的效果。

随着科技的发展和普及,“机器学习”已经不再是一个高冷的技术名词。诸葛越在《百面机器学习》一书中对机器学习的定义是这样的:“机器学习指计算机通过观察环境,与环境交互,在吸取信息中学习、自我更新和进步。”

我们可以大致理解为,机器学习就是计算机通过模拟人的学习方法,对一些训练数据进行学习的过程。一旦计算机获得了相应的“知识”,就能够像人一样做出智慧的推导和判断。

机器学习算法评估就是用科学的指标,对机器学习算法进行完整、可靠的评价,并给出有条理的、可解释的结论的过程。

任何产业都需要一个合理的检测机制来判断这些产品是否合格。算法的评估就是互联网产业的一种检测机制,它告诉开发人员算法的可靠性和合理性等重要信息,作为算法能否上线应用的重要依据。

机器学习能在短短数年间广泛普及,与它的智能性、稳定性和可靠性是密不可分的,机器学习算法完善的评估体系正是这些优秀特性的可靠保障。一个优秀的算法在上线之前,一定要经过严密、周全的评估,才能在上线后发挥出令人惊叹的“人工智能之美”,正所谓“宝剑锋从磨砺出,梅花香自苦寒来”。

很多从业人员,尤其是职场新人,往往把模型的训练和算法的设计作为最重要的工作,却忽视了算法评估的重要性。然而,在很多领域,评估体系的构建甚至要先于算法设计。没有可靠的评估体系,算法即便研发出来也不具备上线服务的能力,因为没有人能保证它的可靠性。可以说,没有好的评估体系,就没有算法的广泛普及。

有些从业人员会说,算法的评估不就是看算法的效果和性能吗?这些在刚入门的时候就学过啊。

然而,真正地将一个算法用于工业生产并产生巨大的商业价值,只依靠这些书本上学来的“指标”是远远不够的,因为在实际应用过程中,大部分指标只能反映算法的部分效果。如果不能合理地运用评估指标,不仅不能发现算法本身的问题,还可能得出错误的结论。

比如,当你在进行异常检测算法的评估时,假设次品出现的概率是0.1%,如果算法把所有样本都预测为正品,准确率虽然也能保证99.9%,但是这样的结果对于异常检测是没有任何意义的,因为这样的算法空有好看的准确率指标,却一个次品都识别不出来。再比如用于识别财务数据的图像识别系统,即使在1万张发票中只有1张把数字“8”误读为“6”,给使用方造成的损失也很可能是难以弥补的。

这些例子告诉我们,一个好的算法并不能只有一堆漂亮的数字指标,更关键的是它要符合实际的业务场景,能够应对现实环境中各种复杂的情况。因此,我们讲算法的评估,从来不是依靠一个或几个听起来“高大上”的评估指标,而是要依赖一个完整的、可靠的评估体系。一句话总结,即指标不重要,实用才可靠。

制定机器学习算法评估标准可以从以下3个方面入手。

(1)根据不同类型的算法制定不同的通用评估标准。比如,对于分类算法和回归算法,需要分别使用一套评估指标进行评估。

(2)对于实现原理不同的算法,需要分别制定评估标准。比如,在评估树模型和深度学习算法解决分类问题的效果时,除了使用分类算法的通用指标,还需要针对每一种算法定义评估指标。

(3)针对不同的业务场景制定评估标准。比如,用深度学习算法进行文本分类和路线排序,这两种业务本质上都是用深度学习算法解决分类问题,但是文本分类业务和路线排序业务的评估指标是有很大区别的。

算法能够上线的最基本条件就是要切合实际业务场景,因此,评估体系首先应该能够解释清楚一个算法是否能够解决实际的业务问题。

评估体系应该告诉算法设计者,这个算法在什么情况下是一定适用的、不会出错的;在什么情况下不能保证准确性,需要采取其他“兜底”策略来补充。

如果说实用性是决定算法是否有研发价值的标杆,那么性能评估则是决定算法是否能落地实施的准绳。无论一个算法的业务效果表现多么出色,如果性能不符合实际生产的需要,那么它也只是纸上谈兵。

算法设计是一门学科,所有的数据指标都必须具备科学的依据才能成立,得到的评估结论不能轻易被上级领导和客户推翻。

表现形式是直接决定你的算法评估结果能否被上级领导写入PPT的关键因素之一。评估结果能用图展示就不要用表,能用表展示就不要用文字,毕竟每个人都不愿意花费过多时间在复杂的文字阅读理解上。

本书分为3个部分。

第1部分为理论篇,包含第1章~第3章,是算法评估的理论基础,这一部分从算法的功能角度分类,针对分类算法、回归算法和聚类算法分别介绍对应的基础理论和评估方法。对于职场的老员工,这一部分知识可能耳熟能详,但是对于职场的新人,这一部分知识可能需要重点掌握。

第2部分为算法篇,包含第4章~第8章,介绍更复杂的模型(如深度学习模型和集成树模型)的对比与评估,并且针对它们实际应用的业务场景介绍该场景下特有的评估指标和评估体系。这些业务场景包括自然语言处理、基于位置的服务以及推荐算法等。读者可以根据实际业务需要重点阅读感兴趣的章节。

第3部分为工具篇,包含第9章~第11章,是对算法评估的常用工具、技术和方法论的总结,包括实用的可视化工具介绍,并讨论机器学习算法的本质。希望在学习完这一部分内容之后,读者能在工作和学习中得到效率和算法思想上的提升。

本书是机器学习和人工智能领域的专业图书,对于具备一定基础算法知识的读者,是一本能够提升实际操作能力和算法理解程度的书;对于刚入门机器学习和深度学习的读者,本书提供了大量的图片和表格,尽可能用通俗易懂的方式把难以理解的知识点讲解清晰,容易理解和记忆。因此,读者只要具备机器学习和统计学的基础知识,本书都可以作为其提升专业技能的“不二选择”。

根据我个人的经验,在工作和学习的过程中,经常困扰我的两个问题,一个是算法如何设计,另一个是算法如何评估。算法的设计有简有繁,最简单的时候甚至可以用一些规则来兜底。但是评估方案的设计从来马虎不得,因为任何算法都不可能不经过合理的评估就上线,未经评估就更谈不上为公司创造价值和推动社会发展。

更重要的是,作为一个算法工程师,在汇报工作时,评估结果是一定要展示的内容。可以说,算法的评估方案是决定算法能否上线应用的关键因素之一,没有被合理评估过的算法就是空中楼阁,或许好看,但不实用。因此,我想通过本书,把自己在学习、工作中总结的评估方法分享出来,让职场新人少走弯路,同时也是抛砖引玉,希望职场的前辈能多提出宝贵意见。

特别感谢我的父亲、母亲,感谢你们的养育之恩。在撰写本书的过程中,你们给了我很多鼓励和支持,还帮我减轻了很多生活上的负担。也感谢我的女朋友党洁琼在这段时间给了我诸多帮助。

在美团集团的工作经历,让我从中学到了很多,不仅包括专业知识,还包括技术视野和职场经验等。感谢美团集团的同事何仁清、郝井华、陈水平、江梦华、赵杰、陈丽影、李嘉伟、石佳、杜方潇和方芳对我的帮助和支持,和你们共事是一段愉快的经历。

感谢我的导师罗泽,是您引领我进入人工智能的殿堂,让我能在这片天地尽情地翱翔。

感谢我的同学和业界同行张凌寒,和你的学术交流让我受益匪浅。

感谢人民邮电出版社的陈冀康编辑、刘雅思编辑以及其他工作人员,你们的督促和帮助使得本书能够早日面世。


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入错误信息,点击“提交”按钮即可(见下图)。本书的作者和编辑会对您提交的错误信息进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线投稿(直接访问www.epubit.com/contribute即可)。

如果您来自学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出版的图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号


分类算法是常用的一类机器学习算法,很多前沿技术都是基于分类算法实现的,如异常检测、语义识别、图像处理和语音处理等。从实现原理的角度来说,具体的分类模型有很多种,比如线性模型、树模型和神经网络模型等。正是因为分类算法的应用广泛性和模型多样性,研究人员很早就建立了一套针对分类算法的评估体系,这个体系也就成为机器学习评估领域的理论基础。本章我们就从分类算法开始介绍机器学习算法评估。

对于分类问题的线下评估,训练集和测试集的选择是必不可少的步骤。

训练集,就是用于训练算法(模型)的数据集合,算法通过对训练集的学习和挖掘,来“培养”自己的“智慧”。

测试集,就是开发人员用于验证算法学习效果的数据集合。

通常测试集和训练集同属于一个完整的数据集合,开发人员通过不同的选择策略选择训练集和测试集,让它们发挥各自的作用。

构建训练集和测试集必须遵守以下两个原则。

(1)一致性

一致性即测试集的数据分布要和训练集保持一致,包括“特征数量”和“每个特征的数值分布”两个方面。

(2)完整性

完整性即测试集的数据数量和数据分布必须能够完整反映模型的真实指标,并且能够产生有统计意义的结果。

我们通过开源的鸢尾花数据集来对理论知识进行解释。该数据集中的鸢尾花品种有3类,分别为setosa、versicolor和virginica。分类依赖的特征有4个,分别为萼片长度、萼片宽度,花瓣长度、花瓣宽度。

下面的数据集是鸢尾花数据集的一小部分,前4列分别对应4个特征,最后一列代表鸢尾花的品种,也就是分类标签。

5.1,3.5,1.4,0.2, Iris-setosa
4.9,3.0,1.4,0.2, Iris-setosa
4.7,3.2,1.3,0.2, Iris-setosa
4.6,3.1,1.5,0.2, Iris-setosa
5.0,3.6,1.4,0.2, Iris-setosa
……
7.0,3.2,4.7,1.4, Iris-versicolor
6.4,3.2,4.5,1.5, Iris-versicolor
6.9,3.1,4.9,1.5, Iris-versicolor
5.5,2.3,4.0,1.3, Iris-versicolor
6.5,2.8,4.6,1.5, Iris-versicolor
……
6.3,3.3,6.0,2.5, Iris-virginica
5.8,2.7,5.1,1.9, Iris-virginica
7.1,3.0,5.9,2.1, Iris-virginica
6.3,2.9,5.6,1.8, Iris-virginica
6.5,3.0,5.8,2.2, Iris-virginica
……

我们先通过这个数据集来解释一下什么是训练集和测试集的一致性。

假设训练集为:

5.1,3.5,1.4,0.2, Iris-setosa
4.9,3.0,1.4,0.2, Iris-setosa
4.7,3.2,1.3,0.2, Iris-setosa

7.0,3.2,4.7,1.4, Iris-versicolor
6.4,3.2,4.5,1.5, Iris-versicolor
6.9,3.1,4.9,1.5, Iris-versicolor

6.3,3.3,6.0,2.5, Iris-virginica
5.8,2.7,5.1,1.9, Iris-virginica
7.1,3.0,5.9,2.1, Iris-virginica
6.3,2.9,5.6,1.8, Iris-virginica
6.5,3.0,5.8,2.2, Iris-virginica

假设测试集为:

4.6,3.1,1.5,0.2, Iris-setosa
5.0,3.6,1.4,0.2, Iris-setosa

5.5,2.3,4.0,1.3, Iris-versicolor
6.5,2.8,4.6,1.5, Iris-versicolor

这种划分方法会导致样本分布不一致,因为测试集中根本没有virginica这个品种的样本,无法检验virginica的分类效果。

还有一种划分方法也会导致样本分布不一致。

假设我们现在需要解决的是一个二分类问题,训练集和测试集的拆分效果如下。

假设训练集为:

5.4,3.9,1.7,0.4, Iris-setosa
4.6,3.4,1.4,0.3, Iris-setosa
5.0,3.4,1.5,0.2, Iris-setosa
4.4,2.9,1.4,0.2, Iris-setosa
4.9,3.1,1.5,0.1, Iris-setosa

7.0,3.2,4.7,1.4, Iris-versicolor
6.4,3.2,4.5,1.5, Iris-versicolor
6.9,3.1,4.9,1.5, Iris-versicolor
5.5,2.3,4.0,1.3, Iris-versicolor
6.5,2.8,4.6,1.5, Iris-versicolor

假设测试集为:

5.1,3.2,1.4,0.2, Iris-setosa
4.9,3.3,1.4,0.2, Iris-setosa
4.7,3.2,1.4,0.2, Iris-setosa

6.4,3.2,4.5,1.5, Iris-versicolor
6.4,3.1,4.5,1.5, Iris-versicolor
6.5,3.2,4.5,1.5, Iris-versicolor

我们可以看到,在测试集中,setosa的每个样本的花瓣长度值都是1.4,花瓣宽度值都是0.2,这会导致花瓣长度和花瓣宽度这两个特征的值在测试集中的分布和在训练集中的分布严重不一致。当花瓣长度值不等于1.4,或者花瓣宽度值不等于0.2时,模型的分类效果如何我们就无从得知了。像这样的数值分布不够多样化的训练集和测试集的划分方法,也是不可取的。

另外,如果训练集有4个特征,而测试集中少了某一个特征,会导致特征不一致,同样无法反映模型的真实效果。

下面我们来解释一下构建数据集的第二个原则——完整性。

在鸢尾花数据集中,每种类型的鸢尾花都有50个样本,完整的鸢尾花数据集共有150个样本,这在机器学习场景中属于小规模的数据集。一般样本数量小于10万的时候,我们将训练集和测试集划分的数量比例保持在6∶4~8∶2都是可以的;如果样本数量巨大,训练集和测试集的样本数量比例就相对没有那么重要,只要它们都能完整且一致地反映数据的真实分布就可以。对鸢尾花数据集来说,训练集和测试集的样本数量比例在7∶3左右就比较合适。

训练集和测试集的选择方法有很多,下面我们来介绍几种常用且可靠的方法。

(1)留出法

留出法是比较简单也比较常用的方法,即从全集中选择一定比例的样本作为测试集,剩下的作为训练集。选择时可以将数据集随机打乱排序,然后取其中若干比例(如前30%)的样本作为测试集,剩下的是训练集;或者直接从全集中无放回地随机抽样,直到达到一定比例为止,抽出来的样本作为测试集,剩下的样本作为训练集。

留出法的优点是操作简单,使用几行代码即可完成;缺点是当样本数量较少时,留出法的随机性可能无法保证测试集和训练集的一致性,也无法保证测试集的完整性。

(2) 折交叉验证法

折交叉验证法是指将全集分为数量均等的份,每次选择其中的−1份作为训练集,剩下的1份作为测试集,然后对这份不同的训练集和测试集依次进行轮实验,通过对每次实验的结果取均值和标准差来判断模型的效果。

如果值是10,那么训练集和测试集的比例就是9∶1;如果值是5,那么训练集和测试集的比例就是4∶1。

以3折交叉验证法为例,将全集平均分为共3个子集。每次实验对应的训练集和测试集如表1.1所示。

表1.1 3折交叉验证法

训练集

测试集

折交叉验证法相对留出法的优点是它的多轮验证机制。折交叉验证法通过对每次验证的结果求均值和标准差,能够有效地消除某一次验证时样本分布不均衡带来的估计偏差。

(3)采样法

采样法(boost trapping)与留出法的不同点在于,采样法是有放回地采样,然后把次采样后仍未被选中的样本作为测试集。

那么问题来了,为什么是将次采样后仍未被选中的样本作为测试集呢?如果仍未被选中的样本数量为0怎么办?

这里涉及一个数学问题,即对一个集合,如果有放回地采样次,那么一个样本在次采样之后仍没被选中的概率是多少?

我们用极限的思维来求解。即求解趋于正无穷时的值。

根据重要极限公式有:

(1-1)

1/e约等于0.368,接近1/3(0.33),也就是说次采样之后仍然有1/3左右的样本不会被抽到。我们通过上文可以知道,将这个比例的样本数量作为测试集是相对合理的。

采样法也引入了样本选择的随机性,它会像留出法一样有一定的样本采样偏差,但是由于随机的过程更复杂,因此在小样本集合中划分测试集时,其一致性和完整性效果一般要优于留出法。

(4)交叉验证集+测试集法

还有一种比较经典的选择方法,是由机器学习领域专家吴恩达在他的课程中提出的,即交叉验证集 + 测试集的方法。这种方法主要用于模型选择,但是在模型评估方面也会给我们一定的启发。他的模型选择的基本步骤如下:

1)使用训练集训练出个模型;

2)用个模型分别对交叉验证集进行计算,得出交叉验证误差(代价函数值);

3)选取代价函数值最小的模型;

4)用步骤3) 中选出的模型对测试集进行计算,得出推广误差(代价函数值)。

我们在评估模型的过程中也可以借鉴这种方法,先按留出法选取全集的一部分(20%左右)作为测试集,再将剩下的80%看作一个小的全集,对集合按照折交叉验证的方式分成训练集和交叉验证集。接下来通过交叉验证集初步验证模型的效果,最后用测试集进一步模拟评估模型上线后的真实效果。

为什么在训练集和测试集之间还要加入一个验证集呢?这里需要解释两个概念。

第一个概念是超参数,大家都知道,机器学习模型有很多自带的学习参数,比如线性回归的变量权重和偏置项 ,而超参数则是人工设定的、对模型的学习效率和学习效果起到影响作用的参数,这些参数不需要模型自己学习,而需要在训练的过程中不断进行人工调整。比如神经网络的隐藏层层数、每层的节点数量,还有树模型的深度、叶子节点的个数等。验证集存在的第一个作用就是帮助我们调整这些超参数。

如果用测试集优化这些超参数,模型会逐渐过拟合,过拟合的含义我们会在第2章详细介绍,这里可以暂时理解为模型对新数据的学习过于刻板,缺乏广泛适用性。这就是我们要介绍的第二个概念——信息泄露,通俗来说就是模型已经通过我们调整过的参数感知到了测试集的信息,等于对模型的测试提前“泄题”,于是测试集的测试结果将会比模型真实效果偏好。验证集的第二个作用就是信息隔离,在调整超参数的过程中,泄露的只是验证集的信息,测试集的信息仍然保存完好,从而能够得到更真实的模型效果。

如果你只选择一个训练集、一个验证集,就会导致虽然最后在测试集上表现得可以,但是泛化性不好。因此,我们需要用交叉验证集帮助调参,再用测试集进行模型效果的验证。

准召率是精确率(Precision)和召回率(Recall)的统称。精确率和召回率是分类问题中常见的指标。通俗来说,精确率就是模型正确预测的正样本占全部预测为正的样本的比例,召回率就是模型正确预测的正样本占全部正样本的比例。准确率(Accuracy)也是一种常用的指标,它是指模型正确预测的正、负样本占全部样本的比例。

我们可以通过以下公式来表达:

Precision = TP/(TP+FP)

(1-2)

Recall = TP/(TP+FN)

(1-3)

Accuracy = (TP+TN)/TOTAL

(1-4)

其中,TOTAL表示全集样本数量。

假设测试集样本数量为200个,其中正样本100个,负样本100个。

如果模型将正样本中的90个预测为正样本,10个预测为负样本,负样本中的5个预测为正样本,95个预测为负样本,那么精确率、召回率、准确率分别为:

Precision = 90/(90+5) ≈ 94.74%

Recall = 90/(90+10) = 90%

Accuracy = (90+95)/200 = 92.50%

模型预测值和真值之间的关系可以通过一个混淆矩阵来描述,如表1.2所示。

1)若一个实例是正样本且被预测为正样本,为真正样本(True Positive,TP)。

2)若一个实例是正样本,但是被预测为负样本,为假负样本(False Negative,FN)。

表1.2 混淆矩阵

 

T(真正值)

F(真负值)

P(预测正值)

TP

FP

N(预测负值)

FN

TN

3)若一个实例是负样本,但是被预测为正样本,为假正样本(False Positive,FP)。

4)若一个实例是负样本且被预测为负样本,为真负样本(True Negative,TN)。

需要解释的是,一个模型的精确率和召回率并不是一成不变的,当我们调整模型的分类阈值时,精确率和召回率就会随之不断地变化。我们通过以下案例来看一下。

图1.1所示P-R曲线表现的是随着分类阈值变化,精确率和召回率的变化情况。分类阈值是指模型将一个样本判断为正样本和负样本的分割阈值。如在朴素贝叶斯模型中,如果模型将正样本概率≥0.5的情况预测为正样本,其余作为负样本,那么在这个分类阈值下计算出的精确率和召回率就是P-R曲线上的一个点。我们再继续调整分类阈值,将正样本概率≥0.4的情况预测为正样本,其余作为负样本,这时再计算出精确率和召回率,获得另一个点,直到计算出分类阈值属于集合{0,0.1,0.2, 0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0}中每个值时对应的精确率和召回率,我们就可以描绘出图1.1所示的P-R曲线。其中,AP是Average Precision的缩写,即平均精确率。

图1.1 P-R曲线

P-R曲线中精确率和召回率相等的点称为平衡点,如图1.2所示,横轴表示召回率,纵轴表示精确率。在模型超参数优化过程中,精确率的提升往往带来召回率的下降,反之亦然,因此平衡点也就是通常我们认为的精确率和召回率的折中位置,在这一点上模型的效果达成的收益是全局最优的。在具体业务中还要考虑精确率和召回率哪个更重要。

图1.2 P-R曲线平衡点

除了P-R曲线,还有一个指标能反映模型的全局性能,这就是 -score,计算公式如下:

Precision

(1-5)

时, -score就是我们常见的 -score, -score表达的是精确率和召回率重要性都相同的情况下模型的整体分值,分值越高说明模型效果越好。-score表示召回率的重要性是精确率的2倍, -score则表示精确率的重要性是召回率的2倍。在具体业务中, -score是一个简单而又实用的评估指标。

对于多分类的情况,可以将 个类别的分类任务看作 个二分类问题。即计算每个二分类模型的 -score值,然后取平均值,这种评估指标又称为Macro -score。

和Macro -score对应的,还有Micro -score。它也是将 分类问题看作 个二分类问题,但将每个二分类模型的精确率和召回率的分子分母对应相加,然后根据这个整体的精确率和召回率去计算 -score。无论是Macro -score还是Micro -score,都是分值越高,模型效果越好。

ROC的英文全称为Receiver Operating Characteristic Curve(受试者操作特征曲线)。这个概念源于20世纪70年代的信号检测理论,后被引入机器学习领域,像P-R曲线一样被用来评估一个模型在不同参数下的全局效果。ROC的横轴和纵轴代表的含义与P-R曲线不同,横轴代表假真值率(False Positive Rate,FPR),纵轴代表真真值率(True Positive Rate,TPR)[2,3]

FPR=FP/(TN+FP),即误判为正样本的负样本数量和全部负样本数量之比。

TPR=TP/(TP+FN),即判断正确的正样本数量和全部正样本数量之比。

ROC的绘制方法和P-R曲线类似,我们也需要通过不断地调整分类阈值来计算每个分类阈值对应的假真值率(横轴)和真真值率(纵轴),然后在坐标平面中描点连线,最后就得到了完整的ROC。图1.3所示橙色曲线是ROC,当分类阈值从1到0变化时,FPR和TPR的值都逐渐增大;当分类阈值为1时,所有样本都被分类为负样本,即FPR和TPR都为0;当分类阈值为0时,所有样本都被分类为正样本,即FPR和TPR都为1。

图1.3 ROC

那么AUC又是什么呢?

AUC的英文全称为Area Under Curve(曲线下面积),即ROC与其下坐标轴围成的面积,图1.3中“area=0.79”即AUC的值。它能够量化地反映一个模型的整体性能。假设分类器的输出是样本属于正类的分数,则AUC的意义为,任取一对(正,负)样本,正样本分数大于负样本分数的概率。

AUC既然是ROC与其下坐标轴围成的面积,显然这个面积的数值不会大于1。又因为ROC一般都处于这条直线的上方,所以AUC的取值范围一般为0.5~1。它的取值代表的含义如下。

1)AUC = 1,理想分类器,即在任何参数情况下都能做出百分之百正确的预测结果,但是现实中一般不存在理想分类器。

2)0.5 < AUC < 1,优于随机猜测的分类器,也是我们一般实际应用的模型,经过合理的优化可以直接应用。

3)AUC = 0.5,等于随机猜测,模型没有预测价值。

4)AUC < 0.5比随机猜测效果还差,但是反向预测也存在一定的价值,实际生产中常因误操作产生这种结果。

使用AUC作为评价标准是因为很多时候ROC并不能清晰地说明哪个分类器的效果更好,而作为一个数值,AUC越大表示分类器效果越好。

那么AUC如何计算呢?主要有两种方法。

(1)简单拼接法

AUC为ROC与其下坐标轴围成的面积,可以将阴影面积分段累加,总面积为每个小的梯形面积之和,计算公式如下:

(1-6)

其中是横坐标(FPR),是纵坐标(TPR),代表实验的分类阈值个数。实际上就是小梯形的高,就是小梯形的上底与下底之和,两者相乘之后再乘以1/2就是小梯形的面积,多次实验计算得到的小梯形面积累加就得到了整个ROC下的面积,即AUC。

(2)概率统计法

根据AUC的概念,只要能统计出任意正样本分数大于负样本分数的概率,就可以知道AUC的值。我们可以对个正样本和 个负样本建立一个尺寸为的矩阵,然后统计矩阵中正样本分数比负样本分数高的数量,那么有

(1-7)

这种计算方法的时间复杂度较高,但是结果更精准。

以上就是AUC的计算方法。

既然P-R曲线和ROC都能反映模型的准召率关系以及模型的整体效果,那么它们之间有什么关联和区别呢?

其实P-R曲线和ROC本质上反映的都是召回率和精确率之间的关系。在P-R曲线中,随着正确识别的正样本(TP)增加,被误判的正样本(FN)会不断减少,但是被误判的负样本(FP)就会增加,也就是召回率增加,精确率反而会下降。

ROC相对P-R曲线有一个显著的优点,那就是ROC不容易受到测试集样本分布的影响,而P-R曲线容易随着样本分布的变化发生较大的变动。

那么在多分类场景中,ROC如何应用呢?

假设类别数量为,我们可以为个类别分别绘制条ROC。

例如,假设有3个分别名为的类,可以绘制一条针对{}和{,}的ROC、一条针对{}和{,}的ROC,以及一条针对{}和{,}的ROC。分别计算AUC,判断针对特定类别的分类效果[2]

对于二分类的ROC和P-R曲线对比,最经典的案例莫过于2006年的论文An Introduction to ROC Analysis[3]中介绍的对比实验。

图1.4(a)和图1.4(b)是原始样本的ROC和P-R曲线,图1.4(c)和图1.4(d)是将负样本数量增加到原来的10倍后的ROC和P-R曲线[2]。其中,每幅图的实线和虚线分别代表两种不同的数据集。

图1.4 ROC和P-R曲线对比

1)对比图1.4(a)和图1.4(c)的ROC,负样本数量增加到原来的10倍后,两种数据集的ROC几乎没有变化。因为ROC的纵轴是TPR,横轴是FPR,当我们计算比值时,TPR几乎不会发生变化,因为正样本数量没变,即TPR计算公式的分母不变,分子有可能因为负样本增加而略微减小;对于FPR,负样本增加会直接导致它的分母变大,但是这个时候错分为正样本的负样本数量也会随之增加,也就是分子也会随之增加,只不过增幅不会比分母更大,整体来看TPR和FPR都会略微减小,ROC变化不大。因此,ROC可以避免正负样本不均衡带来的干扰,能更加有效地评估模型本身的效果[3]

2)对比图1.4(b)和图1.4(d)的P-R曲线,我们可以看到负样本增加到原来的10倍后,P-R曲线变化是很明显的。因为P-R曲线的纵轴是精确率(Precision),横轴是召回率(Recall),负样本如果增加到原来的10倍,在召回率不变的情况下,模型必然会错误召回更多的负样本,所以精确率会大幅下降。因此P-R曲线对样本的分布比较敏感,不适合作为模型效果整体评估的工具。也正因为这一点,我们可以用它来检测样本是否均衡[3]

综上所述,我们可以得到P-R曲线和ROC的一些应用场景,如广告排序和垃圾邮件识别等,在这些场景中,正样本的数量往往是负样本数量的1/1000,甚至1/10000。这时候针对不同的测试集,P-R曲线的变化就会非常明显,而ROC则能够更加稳定地反映模型本身的好坏。由于P-R曲线对正样本关注度比较高,对于严格的异常检测的场景,P-R曲线也是非常不错的选择。

需要注意的是,选择P-R曲线还是ROC是由实际问题确定的。如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够更直观地反映其性能。

在前言中我们提到,准确率这个指标是有一定局限性的,尤其是当正样本(P)数量和负样本(N)数量差异较大的时候。如P∶N=99∶1,即便模型把所有负样本都预测为正样本,都能保证99%的准确率,但是这样的模型没有任何意义。

对于异常检测,我们应该如何做算法评估呢?

首先我们对比异常检测和普通二分类有何区别,如表1.3所示。

表1.3 对比异常检测和普通二分类

 

异常检测

普通二分类

负样本(普通样本)

数量极多,是正样本的10倍甚至更多

数量很多

正样本(异常样本)

数量极少

数量很多,与负样本相当

样本分布

两种样本分布明显不同:正样本类型分布很多,有些特殊样本甚至不在训练集和测试集里;负样本分布空间有限,容易识别

正负样本分布基本一致

特征分布

正负样本差异化明显,正样本有很多负样本不存在的特殊特征

正负样本分布基本一致

从表1.3中可以看出,在异常检测的情况下,正样本极多,负样本极少,我们把这种分布情况称为正负样本分布不均衡。此时,如果用准确率这一指标来评估异常检测,不仅识别不了未知的异常样本,训练集中已有的异常样本也很容易被误判为正常样本。所以,用准确率指标来评估异常检测是不合理的。

衡量异常检测算法效果最直接的指标就是精确率和召回率,即在评估模型判为异常样本的集合中,有多少是真正的异常样本,即TN/(FN+TN),而真正的异常样本又在全部异常样本中占多大比例,即TN/(TN+FP)。

1.3节也提到,在样本不平衡问题中,ROC通常会给出一个较乐观的效果估计,所以这种情况下还是P-R曲线更好。因为当正负样本比例失调时,如正样本1个,负样本100个,ROC变化不大,而P-R曲线更能反映出分类器性能的好坏。如果是对比两个分类器,因为只有一个正样本,所以在画ROC的时候变化可能不太大;但是在画P-R曲线的时候,因为要召回这一个正样本,所以哪个分类器同时召回的负样本更少,那个分类器就更好。差的分类器一般会召回更多的负样本,这样精确率必然大幅下降,分类器性能就可以对比出来了。


知识拓展

在训练模型时如何解决样本不均衡的问题呢?

样本不均衡问题一般有两种解决思路:一种是欠采样,另一种是过采样。

在异常样本分布复杂且数量较多,而正常样本分布比较简单的情况下,可以采用欠采样,即减少正常样本的数量,从而达到让异常样本和正常样本比例相近的目的。这种乐观的情况比较少见,更多的时候我们面对的是异常样本太少且总样本数量也不够多的情况,也就是说,正常样本不能减少,只能增加异常样本,也就是过采样。

过采样的方法有很多,如随机过采样、感知过采样和自适应过采样等。我们介绍一下比较常用的感知过采样[4]

感知过采样是一种比较保守的过采样方式,它的基本原理是增加异常样本的样本密度。如图1.5所示,假设样本有两个特征,分别为(横轴)和(纵轴)。首先从全部异常样本集合中取出一个样本,依次计算在特征空间中与其他异常样本{,,,…,}在每个特征维度的距离,得到一个距离矩阵;然后在这些距离的中点位置生成一个新的样本点,得到个新样本。接着再取出,计算和剩余异常样本的特征距离,得到距离矩阵,生成-2个新样本……最终得到一个新的异常样本集合,新集合的样本数量为[4]

我们也可以在样本数量足够多的时候停止循环,或者在循环完毕之后再对新生成的样本做一次随机欠采样,这样就能够获取我们想要的异常样本。

图1.5 感知过采样


本章主要介绍了分类问题的基础评估理论。

1.1节先通过鸢尾花数据集解释了构建训练集和测试集的基本原则——一致性和完整性。接着介绍了构建训练集和测试集的具体方法,包括留出法、折交叉验证法、采样法和交叉验证集+测试集法。

1.2节介绍了精确率、召回率和准确率的概念,同时分析了分类结果的混淆矩阵及其计算方法,然后进一步讲解了评估分类模型整体效果的直观方法——P-R曲线及其绘制方法,最后给出了实用的模型评估指标 -score。

1.3节的主要内容是ROC和AUC,我们介绍了ROC的计算方法和绘图过程,以及AUC的含义和计算方法,最后说明了P-R曲线和ROC的联系和区别。

1.4节是分类问题的特殊场景——异常检测,我们介绍了异常检测适用的评估方法。


相关图书

ChatGPT原理与应用开发
ChatGPT原理与应用开发
动手学机器学习
动手学机器学习
基于机器学习的个性化推荐算法及应用
基于机器学习的个性化推荐算法及应用
机器学习与数据挖掘
机器学习与数据挖掘
机器学习公式详解 第2版
机器学习公式详解 第2版
自然语言处理迁移学习实战
自然语言处理迁移学习实战

相关文章

相关课程