一文读懂机器学习的常用模型评价指标
我与评价指标的首次交锋是第一次实习面试时,面试官开头就问分类任务的评价指标。我当时TP,FP,FN,TN各种组合一顿上,回答得乱七八糟。后来经历多了,发现评价指标的确是面试的高频考点。
这次让我们几分钟时间搞懂评价指标,尤其是较难理解的ROC、AUC、精确率、召回率,为之后的数据科学之路打下基础。
分类任务
TP,TN,FN,FP
这是个很直觉的分类,T在开头说明这个是完全正确的。F开头就说明是完全错误的。
真正例(True Positive, TP):被模型预测为正的正样本; 假正例(False Positive, FP):被模型预测为正的负样本; 假负例(False Negative, FN):被模型预测为负的正样本; 真负例(True Negative, TN):被模型预测为负的负样本;
ACC精确度
在精确度中,ACC是最直觉的一种方式:
这里是将所有的预算结果与预测正确的做比率,得到的结果。但同时,这个评价指标很容易受到样本数量以及样本是否均衡带来的影响。
Precision精确率
对于精确率来说,关注点在于,对于所有预测为正的数据中(有预测正确的,也有预测错误的)。其中预测正确的比率:
FP是假预测,TP是真的预测
召回率Recall
这里还是关注于正样本。在样本中的所有真正的正样本里,有多少比率是预测对了,如同下图:
同样都是关注正样本,怎么区分精确度和召回度?
这的确是很容易混淆的两个概念,试想一个场景来区分:有一批零件,通过我们做出的机器学习算法,筛选出了一批需要的零件。其中,这批筛选出的零件中,我们的注意力只关注筛选结果为正的部分(只关注,其他结果压根不看),那这样筛选的零件就包含TP+FP。要看看这个被筛选的零件中有多少是需要的,那么这里的评价指标就是精确度Precision=(TP)/(TP+FP)
那什么是召回呢?召回的意思就是说,我们还是想要好的零件。虽然机器学习已经筛选出来了好的零件,但是理论上还是有一部分好的设备被遗漏了。我们需要默默的将遗漏的好设备捡回来(毕竟花了钱了,不能浪费),这个行为叫做召回,那么我们需要用到召回率Rcall=(TP)/(TP+FN)
P-R曲线
若一个学习器A的P-R曲线被另一个学习器B的P-R曲线完全包住,则称:B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。但一般来说,曲线下的面积是很难进行估算的,所以衍生出了“平衡点”(Break-Event Point,简称BEP),即当P=R时的取值,平衡点的取值越高,性能更优。
这里可以知道的是,P(精确率)与R(召回率)是此消彼长的,也就是说,一个高一个就会低。所有对于一个综合的评价指标来说,可以很直觉的想到,将两个参数做加权调和平均数。这样就成为了F1。
F1
F1就是精确率和召回率的加权调和平均数。
特别的,当β=1的时候就是F1:
ROC
优点:在测试样本中正负样本分布不一样的,ROC曲线可以保持不变。
ROC这个优势的来自于灵敏度和特异度这两个评价标准
灵敏度(TPR):其实本质上是正样本召回率
特异度(TNR):本质上是负样本的召回率
计算ROC除了上面两个指标外,还有假负率和假正率。但是这两个指标的计算很简单。假负率 = (1-灵敏度);假正率=(1-特异度)
其实可以这样理解,如果一个验证的数据是不均衡的,那么这个在分类的时候,准确率会考虑到不均衡的所有数据。但是如果是灵敏度和特异度,它只会考虑到正例或者负例,不考虑整体的数据分布。
那么回到ROC曲线,这个ROC曲线的两个指标分别为灵敏度和假正率,效果如图:
两个模型用这个指标做评价的时候,如果一个模型A可以包裹住另一个模型B,那么这个模型A就优于模型B。如果A和B两个模型有交叉,那么这个就看它们曲线下的面积大了,面积大的模型性能更优。
AUC
AUC说白了就是ROC曲线下面的面积大小。AUC越大,说明ROC曲线下面的面积越大,则这个模型的性能更好。一般来说,AUC的值介于0.5到1之间。因为0.5说明,二分类模型随机猜测,有一半的几率猜中。
回归任务
回归任务不同于分类任务。它是带入输入之后,返回一个value。其中回归任务的评价指标衡量的是,模型预测数值和标签提供数值之间的差距。其中对于评价指标的优劣其实并不好评价,这里只列出常用的指标。
MAE(Mean Absolute Error)平均绝对误差
对差值的绝对值求平均。
MSE(Mean Squared Error)均方误差
是对误差平方的期望。
RMSE(Root Mean Squared Error)均方误差根
对MSE指标求平方根。
结尾
评价指标学习完毕啦。对于比较难理解的ROC、AUC、精确率、召回率,文中都列举了场景,希望可以帮助到大家。其实搞懂核心概念,之后都是它的衍生。
往期精彩:
Swin Transformer:基于Shifted Windows的层次化视觉Transformer设计
TransUNet:基于 Transformer 和 CNN 的混合编码网络
ViT:视觉Transformer backbone网络ViT论文与代码详解
求个在看