1.1 模型评估指标
概述:
专业表述: 模型评估指标可以反映模型的一部分性能,机器学习中分类问题、回归问题、排序问题和聚类问题通常使用不同的指标进行评估。合理的选择评估指标可以准确的评价模型性能,同时发现模型本身的问题,从而引导模型的设计优化方向。
说人话:“所有事情都需要评估好坏,尤其是量化的评估指标。”
- 高考成绩用来评估学生的学习能力
- 杠铃的重量用来评估肌肉的力量
- 跑分用来评估手机的综合性能
- 机器学习有很多评估的指标。有了这些指标我们就横向的比较哪些模型的表现更好
1、机器学习主流评估指标:
分类问题评估指标:
- 准确率 – Accuracy
- 精确率(差准率)- Precision
- 召回率(查全率)- Recall
- F1分数
- ROC曲线
- AUC曲线
回归问题评估指标:
- MAE
- MSE
这里重点介绍ROC、AUC。具体解释可参考:《分类模型评估指标——准确率、精准率、召回率、F1、ROC曲线、AUC曲线》、《一文让你彻底理解准确率,精准率,召回率,真正率,假正率,ROC/AUC》
2、ROC\AUC
需了解的的词汇:灵敏度,TPR,真正率;1-特异度,1-FPR,假正率
灵敏度,也叫做真正率(TPR:TRUE POSITIVE RATE);1减去特异度(1- 特异度),也叫假正率(FPR:FALSE POSITIVE RATE)。这两个指标的选择也正是 ROC 和 AUC 可以无视样本不平衡的原因。
首先,灵敏度(Sensitivity) = TP/(TP+FN);特异度(Specificity) = TN/(FP+TN)
其中,T和F代表机器预测结果的正确与否。P和N表示正相关和负相关,可以理解为,机器不是人,只能给出这个结果相关性是正的还是负的。
TP – True Positive:真正类,预测结果正确。样本的真实类别是真,并且模型识别的结果也是正类。
TN – True Negative:真负类,预测结果正确。样本的真实类别是假,但是模型将其识别为负类。
FP – False Positive:假正类,预测结果错误。样本的真实类别是假,但是模型将其识别为正类。
FN – False Negative:假负类,预测结果错误。样本的真实类别是真,并且模型将其识别为负类。
其次,由于我们比较关心正样本,所以需要查看有多少负样本被错误地预测为正样本,所以一般使用1减去特异度(1- 特异度)这个指标,而不是特异度。所以,
真正率(TPR) = 灵敏度 = TP/(TP+FN)
假正率(FPR) = 1- 特异度 = FP/(FP+TN)
下面是真正率和假正率的示意:
P(Positive): 代表1
N(Negative): 代表0
T(True): 代表预测正确
F(False): 代表预测错误
TP: 实际为1,预测为1,预测正确
TN: 实际为0,预测为0,预测正确
FP: 实际为0,预测为1,预测错误
FN: 实际为1,预测为0,预测错误
理解TPR和FPR:
TPR:TPR越大意味着TP越大,也就意味着对于测试样本中的所有正例来说,其中大部分都被学习器预测正确。
FPR:FPR越小意味着FP越小、TN越大,也就意味着FPR越小,则对于测试样例中的所有反例来说,其中大部分被学习器预测正确。
由上面可以看出,一个好的模型是TPR大PFR偏小的。
我们发现TPR 和 FPR 分别是基于实际表现 1 和 0 出发的,也就是说它们分别在实际的正样本和负样本中来观察相关概率问题。 正因为如此,所以无论样本是否平衡,都不会被影响。还是拿之前的例子,总样本中,90% 是正样本,10% 是负样本。我们知道用准确率是有水分的,但是用 TPR 和 FPR 不一样。这里,TPR 只关注 90% 正样本中有多少是被真正覆盖的,而与那 10% 毫无关系,同理,FPR 只关注 10% 负样本中有多少是被错误覆盖的,也与那 90% 毫无关系。
举例: 如下图,总样本数为100,正样本表示为1,共90例,负样本表示为0,共10例。TPR关心的是,90例正样本中(实际表现为1的样本),被预测为1(TP)的比例,也就是预测为1的样本中被正确识别的比例。FPR关心的是,10例负样本中(实际表现为0的样本),被预测为1(FP)的比例,也就是预测为1的样本中被错误识别的比例。浅表的说,TPR越高越好,FPR越低越好。
所以可以看出:如果我们从实际表现的各个结果角度出发,就可以避免样本不平衡的问题了,这也是为什么选用 TPR 和 FPR 作为 ROC/AUC 的指标的原因。
或者我们也可以从另一个角度考虑:条件概率。 我们假设X为预测值,Y为真实值。那么就可以将这些指标按条件概率表示:
精准率 = P(Y=1 | X=1)
召回率 = 灵敏度 = P(X=1 | Y=1)
特异度 = P(X=0 | Y=0)
从上面三个公式看到:如果我们先以实际结果为条件(召回率,特异度),那么就只需考虑一种样本,而先以预测值为条件(精准率),那么我们需要同时考虑正样本和负样本。所以先以实际结果为条件的指标都不受样本不平衡的影响,相反以预测结果为条件的就会受到影响。
ROC(接受者操作特征曲线)
ROC(Receiver Operating Characteristic)曲线该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力,ROC 曲线是基于混淆矩阵得出的。
ROC 曲线中的主要两个指标就是真正率和假正率, 上面也解释了这么选择的好处所在。其中横坐标为假正率(FPR),纵坐标为真正率(TPR),下面就是一个标准的 ROC 曲线图。
2.1 ROC 曲线的阈值问题
ROC 曲线也是通过遍历所有阈值 来绘制整条曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的在 ROC 曲线图中也会沿着曲线滑动。
如何判断 ROC 曲线的好坏?
改变阈值只是不断地改变预测的正负样本数,即 TPR 和 FPR,但是曲线本身是不会变的。那么如何判断一个模型的 ROC 曲线是好的呢?这个还是要回归到我们的目的:FPR 表示模型虚报的响应程度,而 TPR 表示模型预测响应的覆盖程度。我们所希望的当然是:虚报的越少越好,覆盖的越多越好。所以总结一下就是TPR 越高,同时 FPR 越低(即 ROC 曲线越陡),那么模型的性能就越好。 参考如下:
ROC 曲线无视样本不平衡
前面已经对 ROC 曲线为什么可以无视样本不平衡做了解释,下面我们用动态图的形式再次展示一下它是如何工作的。我们发现:无论红蓝色样本比例如何改变,ROC 曲线都没有影响。
ROC 曲线的绘制
如何绘制ROC曲线:下图中每一个“实际表现”都对应一组TPR\ FPR,这里的“1”和“0”
各对应一组,在ROC曲线图上表现为2个点。当“实际表现”越多时,可用的分类阈值就越多,ROC曲线图上的点也就越多,最后拟合成一条曲线。比如说,“实际表现”为1,2,3时,可选,大于1为一类,大于2为一类,大于3为一类,这样就有3组TPR\ FPR;“实际表现”为1,2,3…100时,可选取的分类阈值就更多,TPR\ FPR就更多,ROC曲线图上的点就更多。可参考《ROC曲线绘制原理及如何用SPSS绘制ROC曲线》
2.2 AUC(即ROC曲线下方的面积)
为了计算 ROC 曲线上的点,我们可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。幸运的是,有一种基于排序的高效算法可以为我们提供此类信息,这种算法称为曲线下面积(Area Under Curve)。
比较有意思的是,如果我们连接对角线,它的面积正好是 0.5。对角线的实际含义是:随机判断响应与不响应,正负样本覆盖率应该都是 50%,表示随机效果。 ROC 曲线越陡越好,所以理想值就是 1,一个正方形,而最差的随机判断都有 0.5,所以一般 AUC 的值是介于 0.5 到 1 之间的。
AUC 的一般判断标准
0.5 – 0.7: 效果较低,但用于预测股票已经很不错了
0.7 – 0.85: 效果一般
0.85 – 0.95: 效果很好
0.95 – 1: 效果非常好,但一般不太可能
AUC 的物理意义
曲线下面积对所有可能的分类阈值的效果进行综合衡量。曲线下面积的一种解读方式是看作模型将某个随机正类别样本排列在某个随机负类别样本之上的概率。以下面的样本为例,逻辑回归预测从左到右以升序排列: