教程地址:http://www.showmeai.tech/tutorials/34
本文地址:http://www.showmeai.tech/article-detail/186
声明:版权所有,转载请联系平台与作者并注明出处
科学家门捷列夫说「没有测量,就没有科学」,在AI场景下我们同样需要定量的数值化指标来指导我们更好地应用模型对数据进行学习和建模。
事实上,在机器学习领域,对模型的测量和评估至关重要。选择与问题相匹配的评估方法,能帮助我们快速准确地发现在模型选择和训练过程中出现的问题,进而对模型进行优化和迭代。本文我们系统地讲解一下机器学习模型评估相关知识。
(本篇内容会涉及到不少机器学习基础知识,没有先序知识储备的宝宝可以查看ShowMeAI的文章 图解机器学习 | 机器学习基础知识。
模型评估的目标是选出泛化能力强的模型完成机器学习任务。实际的机器学习任务往往需要进行大量的实验,经过反复调参、使用多种模型算法(甚至多模型融合策略)来完成自己的机器学习问题,并观察哪种模型算法在什么样的参数下能够最好地完成任务。
泛化能力强的模型能很好地适用于未知的样本,模型的错误率低、精度高。机器学习任务中,我们希望最终能得到准确预测未知标签的样本、泛化能力强的模型。
但是我们无法提前获取「未知的样本」,因此我们会基于已有的数据进行切分来完成模型训练和评估,借助于切分出的数据进行评估,可以很好地判定模型状态(过拟合 or 欠拟合),进而迭代优化。
在建模过程中,为了获得泛化能力强的模型,我们需要一整套方法及评价指标。
进行评估的实验方法可以分为「离线」和「在线」两种。
模型评估通常指离线试验。原型设计(Prototyping)阶段及离线试验方法,包含以下几个过程:
除了离线评估之外,其实还有一种在线评估的实验方法。由于模型是在老的模型产生的数据上学习和验证的,而线上的数据与之前是不同的,因此离线评估并不完全代表线上的模型结果。因此我们需要在线评估,来验证模型的有效性。
在线实验有一个杰出代表,那就是A/B Test。
A/B Test是目前在线测试中最主要的方法。A/B Test是为同一个目标制定两个方案让一部分用户使用A方案,另一部分用户使用B方案,记录下用户的使用情况,看哪个方案更符合设计目标。如果不做AB实验直接上线新方案,新方案甚至可能会毁掉你的产品。
在离线评估中,经常使用准确率(Accuracy)、查准率(Precision)、召回率(Recall)、ROC、AUC、PRC等指标来评估模型。
在线评估与离线评估所用的评价指标不同,一般使用一些商业评价指标,如用户生命周期值(Customer Lifetime value)、广告点击率(Click Through Rate)、用户流失率(Customer Churn Rate)等标。
我们将常见的评估指标汇总如下:
下面我们来了解一下模型评估方法,主要涉及到对完整数据集不同的有效划分方法,保证我们后续计算得到的评估指标是可靠有效的,进而进行模型选择和优化。
留出法是机器学习中最常见的评估方法之一,它会从训练数据中保留出验证样本集,这部分数据不用于训练,而用于模型评估。
完整的数学定义如下:
对于一个机器学习问题,通常有数据集D(用于训练模型),但还需要评估模型,因此不能把整个D用于训练,因为拿训练过的数据再去评估必然无效。那么最基本的方法就是留出法:把D划分为两部分,训练集S和测试集T,其中SUT=D,S∩T=Φ。
下面是留出法数据划分的注意点:
留出法的数据划分,可能会带来偏差。在机器学习中,另外一种比较常见的评估方法是交叉验证法——K折交叉验证对K个不同分组训练的结果进行平均来减少方差。
因此模型的性能对数据的划分就不那么敏感,对数据的使用也会更充分,模型评估结果更加稳定,可以很好地避免上述问题。
部分场景下,数据量较少,很难通过已有的数据来估计数据的整体分布(因为数据量不足时,计算的统计量反映不了数据分布),这时可以使用Bootstrap自助法。
Bootstrap是一种用小样本估计总体值的一种非参数方法,在进化和生态学研究中应用十分广泛。Bootstrap通过有放回抽样生成大量的伪样本,通过对伪样本进行计算,获得统计量的分布,从而估计数据的整体分布。
有了有效的模型评估方法,我们还需要量化的度量标准来精准评估与判断。下文归纳了分类与回归问题的各类评估指标。
回归类问题场景下,我们会得到连续值的预测结果,比对标准答案,我们有MAE、MSE、RMSE等评估指标(准则)可以衡量预测结果相对实际情况的偏离程度,它们的取值越小说明回归模型的预测越准,模型性能越好。如下图所示:
平均绝对误差(Mean Absolute Error,MAE),又叫平均绝对离差,是所有标签值与回归模型预测值的偏差的绝对值的平均。
虽然平均绝对误差能够获得一个评价值,但是你并不知道这个值代表模型拟合是优还是劣,只有通过对比才能达到效果。当需要以相对的观点来衡量误差时,则使用MAPE。
平均绝对百分误差(Mean Absolute Percentage Error,MAPE)是对MAE的一种改进,考虑了绝对误差相对真实值的比例。
在某些场景下,如房价从5K到50K之间,5K预测成10K与50K预测成45K的差别是非常大的,而平均绝对百分误差考虑到了这点。
MAE虽能较好衡量回归模型的好坏,但是绝对值的存在导致函数不光滑,在某些点上不能求导。可以考虑将绝对值改为残差的平方,就得到了均方误差。
均方误差(Mean Square Error,MSE)相对于平均绝对误差而言,均方误差求的是所有标签值与回归模型预测值的偏差的平方的平均。
均方根误差(Root-Mean-Square Error,RMSE),也称标准误差,是在均方误差的基础上进行开方运算。RMSE会被用来衡量观测值同真值之间的偏差。
决定系数R平方与之前介绍的三个指标有所不同,它表征的是因变量y的变化中有多少可以用自变量x来解释,是回归方程对观测值拟合程度的一种体现。
R平方越接近1,说明回归模型的性能越好,即能够解释大部分的因变量变化。
在利用R平方来评价回归方程的优劣时,随着自变量个数的不断增加,R平方将不断增大。而校正决定系数则可以消除样本数量和特征数量的影响。
在熟悉了回归问题的各种评价指标后,再来看看各自适用的具体场景以及优缺点。
MAE、MSE、RMSE均存在求平均的操作(包括R的平方也可以认为有此操作,只是因为分子分母的约分导致求平均的操作不明显),而取均值是为了消除样本数量的影响,使得评估指标的大小不会太依赖于样本数量,而是更多地反映模型的误差。
校正之后的决定系数在此基础上消除了样本数量和特征数量的影响,自变量越多,校正决定系数就会对自变量进行处罚,所以一般校正决定系数小于决定系数,它能更好地反映模型的质量,可以用来选择不同特征数量的回归模型。
分类问题是机器学习领域最常见的大类问题,有很多场景可以划归到分类问题的解决范畴。下面我们梳理一下分类问题的主要评估指标(Evaluation Metrics)。
在人工智能中,混淆矩阵(Confusion Matrix)是非常有效的评估模式,特别用于监督学习(在无监督学习中一般叫做匹配矩阵)。典型的混淆矩阵构成如下图所示:
很多评估指标可以基于混淆矩阵计算得到,如下图所示:
对于分类问题,精确率(Accuracy)指分类正确的样本数占样本总数的比例,是最常用的指标,可以总体上衡量一个预测的性能。一般情况(数据类别均衡)下,模型的精度越高,说明模型的效果越好。
但是在数据类别严重不均衡的情况下,这个评估指标并不合理,比如发病率0.1%的医疗场景下,如果只追求Accuracy,模型可以把所有人判定为没有病的正常人,Accuracy高达99.9%,但这个模型实际是不可用的。为了更好地应对上述问题,衍生出了一系列其他评估指标。例如:
Precision(查准率),又称正确率、准确率,表示在模型识别为正类的样本中,真正为正类的样本所占的比例。一般情况下,查准率越高,说明模型的效果越好。
Recall(查全率),又称召回率,表示的是,模型正确识别出为正类的样本的数量占总的正类样本数量的比值。一般情况下,Recall越高,说明有更多的正类样本被模型预测正确,模型的效果越好。
理论上来说,Precision和Recall都是越高越好,但更多时候它们两个是矛盾的,经常无法保证二者都很高。此时,引入一个新指标 F \beta - Score,用来综合考虑 Precision 与 Recall。
需要根据不同的业务场景来调整 \beta 值:
除了前面介绍的Accuracy、Precision与Recall,还有一些其他的度量标准,如使用True Positive Rate(TPR,真正例率)和False Positive Rate(FPR,假正例率)两个指标来绘制ROC曲线。
算法对样本进行分类时,都会有置信度,即表示该样本是正样本的概率。
比如,99%的概率认为样本A是正例,1%的概率认为样本B是正例。通过选择合适的阈值,比如50%,对样本进行划分,概率大于50%的就认为是正例,小于50%的就是负例。
通过置信度可以对所有样本进行降序排序,再逐个样本地选择阈值,比如排在某个样本之前的都属于正例,该样本之后的都属于负例。每一个样本作为划分阈值时,都可以计算对应的TPR和FPR,那么就可以绘制ROC曲线。
ROC曲线(Receiver Operating Characteristic Curve)全称是「受试者工作特性曲线」。综合考虑了概率预测排序的质量,体现了学习器在不同任务下的「期望泛化性能」的好坏,反映了TPR和FPR随阈值的变化情况。
ROC曲线越接近左上角,表示该分类器的性能越好。也就是说模型在保证能够尽可能地准确识别小众样本的基础上,还保持一个较低的误判率,即不会因为要找出小众样本而将很多大众样本给误判。
一般来说,如果ROC是光滑的,那么基本可以判断没有太大的overfitting。
ROC曲线的确能在一定程度上反映模型的性能,但它并不是那么方便,因为曲线靠近左上方这个说法还比较主观,不够定量化,因此还是需要一个定量化的标量指标来反映这个事情。ROC曲线的AUC值恰好就做到了这一点。
AUC(Area Under ROC Curve)是ROC曲线下面积,其物理意义是,正样本的预测结果大于负样本的预测结果的概率,本质是AUC反应的是分类器对样本的排序能力。
AUC值越大,就能够保证ROC曲线越靠近左上方。
与ROC曲线的思想类似,根据Precision和Recall,也提出了一种Precision-Recall曲线。
同样是通过置信度就可以对所有样本进行降序排序,再逐个样本地选择阈值,比如排在某个样本之前的都属于正例,该样本之后的都属于负例。每一个样本作为划分阈值时,都可以计算对应的Precision和Recall,那么就可以绘制PR曲线。
在不同的业务场景中,Precision和Recall的侧重不一样:
对于这些评价指标的选择,有如下的一些经验:
垃圾邮件占用网络带宽、侵犯收件人的隐私权、骗人钱财等,已经对现实社会造成了危害。一般来说,凡是未经用户许可就强行发送到用户的邮箱中的任何电子邮件都可称作是垃圾邮件,这是一个典型的二分类问题。
「把垃圾文件识别为正常文件」和「把正常文件识别为垃圾文件」,二者相比,、我们显然更能容忍前者,因此模型可以适度降低Recall以便获得更高的Precision。
再来看个金融风控的例子,首先需要明确一点,正常客户的数量一般来说是远远大于风险客户的,这是个样本不均衡问题。互联网金融公司风控部门的主要工作是利用机器模型抓取坏客户。
根据前面对Precision、Recall以及PR曲线的介绍,知道,Precision和Recall往往都是相互牵制的,很难同时达到一个很高的水平。所以在这个案例中,同样需要根据业务场景来衡量这两个指标的重要性。
可以通过调节 F \beta - Score 中 \beta 的大小来控制Precision和Recall的侧重程度。 \beta < 1 ,重视查准率; \beta > 1 ,重视查全率。
首先看看什么是分类任务中的样本不均衡问题,以及如何解决样本不均衡问题。
在学术研究与教学中,很多算法都有一个基本假设,那就是数据分布是均匀的。当把这些算法直接应用于实际数据时,大多数情况下都无法取得理想的结果,因为实际数据往往分布得很不均匀,都会存在「长尾现象」。
解决这一问题的基本思路是,让正负样本在训练过程中拥有相同的话语权(比如利用采样与加权等方法)。样本类别不均衡的情况下,最常见的处理方式是「数据采样」与「样本加权」,详细介绍如下:
欠采样技术是将数据从原始数据集中移除。
随机过采样:
我们也有一些少类别样本合成技术方法,比如机器学习中有SMOTE算法通过合成新样本完成过采样,缓解样本类别不均衡问题。
下采样的缺点显而易见,那就是最终的训练集丢失了数据,模型只学到了总体模式的一部分。而SMOTE算法为每个小众样本合成相同数量的新样本,但这也带来一些潜在的问题:
除了上采样和下采样这种采样方式以外,还可以通过加权的方式来解决数据不均衡问题,即对不同类别分错的代价不同,对于小众样本,如果分错了会造成更大的损失。这种方法的难点在于设置合理的权重,实际应用中一般让各个分类间的加权损失值近似相等。当然这并不是通用法则,还是需要具体问题具体分析。
可以点击 B站 查看视频的【双语字幕】版本
【双语字幕+资料下载】斯坦福CS229 | 机器学习-吴恩达主讲(2018·完整版) https://www.bilibili.com/video/BV1TT4y127Nf?p=8
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。