-->

机器学习40讲_09_08_模型的评估指标

你好,我是王天一。

今天我和你分享的主题是机器学习当中模型的评估指标,用训练数据集拟合出备选模型的参数,再用验证数据集选出最优的模型。

之后接下来呢就到了是骡子,是马牵出来遛溜的时候,也就是模型评估的阶段。

模型评估中呢使用的是测试数据计。

通过衡量模型,在从没有出现过的这样的数据上的性能来估计模型的泛化特性。

为了简便起见啊,在本文当中呢,我都会以二分类任务为例来说明度量模型性能不同的指标。

二、分类任务啊它是最重要,也是最基础的机器学习任务。

它最直观的性能度量指标呢就是分类的准确率。

给定一组训练数据算法呢不可能说完全正确的划分所有实例。

他会将一部分的正例判为反例,也会将一部分的反例判为正例。

那么分类正确的样本啊,这里的分类正确,不管你是正例分类正确还是反例分类正确啊,把它两个加一块儿啊,分类正确的样本占到样本总数的比例啊,我们把它叫做精度。

而分类错误的样本呢占样本总数的比例,把它叫做错误率。

那么显然两者之和是等于一的。

在现实生活当中啊,二分类任务一个最实际的应用啊就是疾病的诊断。

你可以回忆一下啊,在贝叶斯视角下的机器学习当中啊,我提到过一个例子,就是那个joe去看病的例子。

这例子呢是一个典型的二分类问题。

根据之前的分析结果,即使说昼的检查结果,它呈现出阳性呢,他患病的概率也只有百分之十六。

如果说一个庸医完全的按照检查结果来判定的话,那么这样的一个概率说明什么呢?每六个病人里,他基本上就要误诊出五个。

但是需要注意的一点是,错误的分类。

其实它不光包括假阳性这种情形。

另外一方面,假阴性也就是确实生病的患者没有被检查出来的这个情形啊,我们也要把它考虑进去。

假阳性和假阴性,他俩共同构成所有的物分类的结果。

那么在jaw的例子当中,可以估算一下,出现假阳性,也就是真正有病,但是没查出来,这个可能性有多大呢?推导的方式同样是利用贝叶斯定力,点击文告,你可以看到详细的推导过程。

在这儿呢我就直接告诉你结果了。

这个概率等于多少呢?百分之零点零五三,也就是万分之五的水平。

可以看出来啊,虽然说这个检查他容易把没病的人误诊成有病,但是把有病的人误诊成没病,这个概率是极低的这也符合我们一贯的认知。

在现实当中呢,假阳性无非就是给患者带来一些不必要的精神压力,可能被吓了一跳啊,但是通常呢不会产生太严重的一个后果。

但是假阴性不一样,它可能会让患者错过最佳的治疗时机,一旦发现可能就维持已晚。

所以说在医学的检查当中呢,通常是本着一个宁可错判不能放过的原则,对假阴性的要求,比对假阳性的要求要更加严格。

其实不光是在医学当中,很多情况下,将正例误判为反例和将反例误判为正例,两者所付出的代价都是不一样。

这也是数理统计啊,他把分类错误分成一类错误,还有二类错误的原因。

为了更清楚的体现出不同错误类型的影响,机器学习是采用了混淆矩阵啊,也叫列联表这样的一个表格来对不同的划分结果来加以区分。

在混淆矩阵当中呢,所有测试样例被分成四个部分,或者说四大类啊,分别是真正力假正例假、反例还有真反例,这里面真正例和真反例容易理解。

那么假正例呢,它指的是样例,本身是反例,但是预测结果是正例,对应的呢就是假阳性。

假反例呢指的是样例,本身是正例,而预测结果是反例,也就是假阴性。

采用这样的分类,它就能够对机器学习模型的性能做出一个更加精细的刻画。

那么这种精细刻画所对应的指标啊,其中一个是查准率,另一个呢就是查全率查准率啊,也叫做正立的预测值。

他表示的是真正的正立占所有预测结果为正例的样例的一个壁值,也就是模型预测结果的准确程度。

啊,当然这个准确程度只体现在正历史查全率呢,它也叫真正利率。

他表示的是什么呢?真正例占所有真实情况为正例的这个样例的比值,也就是模型对真实正力的一个判断能力。

通俗来说的话,查准率,他要求把尽可能少的这个真实复利误判为预测的正力,而查全率呢则要求尽可能少的把真实的正例误判为预测的负利。

这段话听起来可能有点像绕口令啊,那么点击文稿呢你可以看到查准率,还有查全率,它不同的公式啊直观的来理解。

一般情况下呢,查准率查绝率是鱼和熊掌不可兼得的一对指标啊,我使用比较严苛的判定标准可以提高查准率。

比方说在医学上啊,对于青光眼的诊断,它主要依赖的一个指标是什么呢?是你的眼压的取值。

如果我将诊断的阈值设定的比较高,那就可以保证什么呢?所有被诊断的患者,他都是真正的病人,这就可以得到较高的查准率。

但这样做呢也会将症状不那么明显的初期的患者都划分为正常的范畴,从而呢导致查权率一个大幅的下降。

反过来说,如果将眼压诊断的阈值设定的比较低,那么稍有症状的患者都会被诊断为病人,这样做呢可以保证所有真正的病人都被确诊,让查全率它接近于百分之百。

但是确诊的病例当中呢,也会包含着大量的疑似患者指标,稍微高一点的健康人也会被误诊为病人,从而呢导致查准率大幅的下降。

将查准率和查全率画在同一个平面直角坐标系内的话,得到的就是PR曲线。

他表示了模型可以同时达到的这个查准率,还有查全率。

如果说一个模型的PR曲线能够完全包住另一个模型的曲线的话,那就意味着前者在两个指标上全面的优于后者。

可是更普遍的情况是呢,有些模型它的查全性能比较好。

另一些模型呢它查准性能比较好,这个时候呢就需要根据任务本身的特点来加以选择啊,看你到底是看中假阳性还是看中假阴性。

除了PR曲线之外,另一个对机器学习模型进行可视化的方式呢,叫做受试者工作特征曲线啊,简称叫ROC曲线LC.这个名称呢源于曲线的这个原始用途,判断雷达接收到的信号到底是敌机还是干扰,只是信号处理里的一个概念。

在机器学习当中呢,这样的场景就演化成了所有的样例,它共同符合一个混合的分布。

那么这个混合分布是怎么来的呢?由正例和反例各自服从的单独分布啊,两个加一块所组成。

这个时候二分类模型,它的任务就是确定新来的样本,它到底属于哪个分布,是来源于正力的分布呢?还是来源于反力的分布呢?在这个过程当中,数据里的随机的变化,在分类器的结果里面会体现为阈值动态取值的一个随机变化。

那么分离器的性能呢就会取决于两个概率分布之间分离程度,两个概率分布之间离得越远,那么分类器的效果就越好。

Lc曲线呢它描述的是真正利率和假正利率之间的关系啊,也就是收益和代价之间的关系。

所谓的假正利率,它等于假正利啊和真实的复利之间的比值啊。

点击文稿,你可以看到它的表达式LC空间呢,它将假正利率定义为x轴啊,将真正利率定义为y轴,给定一个二元分类模型还有它的阈值,那就可以计算出模型的这个真正利率,还有假正利率,并且把它呢映射到由零零零一一零一一这四个点围成的这个正方形里。

那么在这个正方形当中呢,从零零到一一的这条对角线啊,它是代表了一条分界线。

这份接线叫什么呢?叫做无识别绿线。

这个分界线可以将LC空间啊划分成左上和右下这样两个区域无识别滤线啊,它代表的是一个瞎猜的一个效果啊,也就是给另一个样例啊。

我随机的判定它是属于正例还是属于反例。

那么在这种情况下啊,以二分之一的概率去瞎猜啊,得到的真正利率和假正利率啊,两者是相等的。

那么在无识别率线啊左上方的这个区域当中,所有点它的真正利率都大于假正利率。

这意味着什么呢?意味着分类结果优于二选一的随机猜测。

反过来在右下方的区域呢,分类的结果就是劣于随机猜测啊,你这个准确率还不如二选一的。

这么猜了一个完美的模型啊,它应该体现在LC空间上的零一这个点上。

假正利率等于零,意味着没有复利被掺入,而真正利率等于一意味着没有假的复利,也就没有正利被遗漏。

也就是说,不管分类器输出的是正力还是反力,这个结果都是百分之百完全正确。

不同类型的模型呢,它的LC曲线也不一样啊,像决策树这类模型会直接输出对应样例的一个对应的类别啊,那么得到的呢是硬分类结果,它的LC曲线呢就退化,成为LC空间上单个的一个点。

相比之下呢,朴素贝叶斯这类软分类的结果啊,也就是给出属于每个类别概率啊,这种模型就没那么简单。

将软分类的概率转换成硬分类的结果呢,我们是需要选择一个合适的阈值啊,把这个连续的概率映射到离散的结果之上。

这时候每一个不同的阈值啊,都对应着LC空间上的一个点。

所以这类模型它整体的性能就是由多个离散点所连成的一个折线。

那么点击文稿呢,你可以看到RC曲线,还有PR曲线的示意图,可以直观的感受一下它们的区别。

Lc曲线呢可以用来衡量习得模型的性能,它越靠近左上方性能就越好。

和PR曲线一样啊。

如果说一个模型的LC曲线能够完全的包住另一个模型的曲线的话,那么前者的性能就优于后者。

但是在大多数情况之下呢,模型之间也不存在说全方位的这个碾压优势。

通常呢也就不会出现这种LC完全包含的情形。

这时候我们要评估不同模型性能的话啊,就需要引入LC曲线下面积这样的一个概念。

Lc曲线下面积呢它简称叫AUC.由于AUC的计算啊是在一乘一这样的方格里求面积,所以它的取值必然在零到一之间。

对于完全靠蒙的这个无识别率线来说,它的AOC是等于零点五。

这样的模型呢就完全没有预测的价值。

一般来说呢,通过调整模型的这个阈值,然后总可以让模型的最优AOC大于零点五,达到比随机猜测更好的判别效果。

如果说模型的AUC比零点五还小的话,这样的模型我可以通过求解它的镜像啊,也就是模型输出正例,我把它判为反例,魔型输出反例,我把它判为正例。

通过将分类结果反转来获得优于随机猜测的效果。

但是ROC曲线的意义啊,它不光限于求解面积,还可以提供其他的信息,不同性能的算法对应着LC空间上不同的点。

如果说能够确定所有样例中真实正例的比例啊和真实复例的比例。

那么模型的精度呢就可以表示成这个比例啊和真正利率假正利率这两个参数的一个加权。

点击文稿,你可以看到这个公式,根据这个数量关系可以得出啊。

虽然不同的模型呢,它的真正利率和假正利率是不一样,但是它们整体的精度是可以相等的。

在LC的空间之上,这些精度相同的模型共同的落在一条直线之上。

这条直线呢它的斜率等于负力和正立的这个比值,这样的直线也就被称为等精度线。

这告诉我们什么呢?正力和负例的比例可以作为已知的先案信息来指导模型的选择。

如果说正力和负立的比例约为二比一的话,那么我就可以在LC这个空间之上画出一条斜率等于二分之一啊,并且经过零一这一点的一个直线啊,也就是经过最优LC这一点的直线。

然后呢,我让这个直线向右下方平行的移动啊,斜率不变,平行移动。

当平移的直线和ROC曲线相交的时候,这时候焦点所对应的模型就是适用于已有的这个鲜艳信息的最优模型。

那么这个时候最优模型的精度是多少呢?径度就是焦点所在直线的截距,也就是它和真正利率轴啊它的一个交点。

今天呢我和你分享了对于机器学习模型性能不同的度量方法,包括着以下四个要点。

第一,在二分类任务中,模型性能度量的基本指标是精度和错误率,两者之和等于一。

第二,混淆矩阵是高二乘二的性能度量矩阵,它的元素分别是真正例假、正例假、反例,还有真反例的数目。

第三,PR曲线表示的是查准率和查全率之间的关系,曲线在点一一一上达到最优的性能。

第四LC曲线表示的是真正利率和假正利率之间的关系,曲线在点零意义上达到最优的性能。

关于模型性能评估这一块啊,我想给你推荐一位学者,他就是英国布里斯顿大学的peita fluck.这位教授呢在模型评估领域的研究啊,尤其是在LC曲线分析啊,这方面的造诣颇深。

你可以在他的著作和论文当中领会模型评估当中所蕴藏的信息。

他的著作呢名字就叫机器学习啊,叫machine learning,就英文版,也有中文版,好好的读一读。

他的著作当中,第二章啊以及相关论文的这个内容,一定会让你受益匪浅。

对比PR图和ROC曲线呢,你会发现一个有趣的现象,那就是当类别的平衡性。

也就是数据当中正利和负例的比例发生改变的时候,这种变化呢并不会给LC曲线带来明显的变化,但是却会让PR曲线产生明显的改变。

为什么会出现这种现象?你可以思考一下,并将观点在这里分享。