最近重新学习了一下机器学习的一些基础知识,这里对性能度量涉及到的各种值与图像做一个总结。
西瓜书里的这一部分讲的比较快,这些概念个人感觉非常绕,推敲了半天才搞清楚。
这些概念分别是:TP、FN、FP、TN,查全率和查准率,P-R曲线和ROC曲线
1、混淆矩阵中的:TP FN FP TN
其实很简单
真实情况有两种可能:正(T)和反(F);
预测结果有两种可能:积极(P)和消极(N)
但是比较绕的是对于这里的P和N的理解,看到一个很好的举例,借用一下:
(pic from http://www.360doc.com/content/19/0806/19/52645714_853362368.shtml)
也就是说
TN的意思是,预测的结果为N,即认为预测对象是F,而这个预测是正确的,所以记为T
这个时候思考:那么TN到底代表真实情况是T还是F?
这就有点绕了,有一个简便的方法:将T记为+,F记为-,P记为+,N记为-
那么++和--的运算结果为+,真实情况为T;+-和-+的运算结果为-,真实情况为F
所以TN(+-)的真实情况是F,它的意思是,预测的结果是N,而这个预测是正确(T)的
2、查准率P和查全率R、P-R曲线
首先注意区分两个P不同的含义,用颜色区分:预测结果P(positive),查准率P(precision)
在看表达式前先说说它们的定义,首先查准率和查全率是一对矛盾的值
查准率是指在所有预测为P的情况(包括将T预测为T的TP,和将F预测为T的FP)下,真实情况为T的比例
故查准率P=TP/P = TP/(TP+FP)
查全率是指在所有真实情况下为T的样本(包括将T预测为T的TP,和将T预测为F的FN)中,预测正确P的比例
故查全率R=TP/T = TP/(TP+FN)
为什么说他们是一对矛盾的值,一个大另外一个就必然小?
可以这样理解:
如果希望查准率P高,则需要尽量“保守”地预测:不能肯定地预测为P,就给出N的答案。这样的话,势必会导致将真实情况下的T预测为N的情况增加,即FN增加,那么查全率R就会相应地下降
这样就能理解:
1、P-R曲线中,随着R的增加,P会随之下降;
2、在R相同的情况下,P更高的学习器性能更好,故若学习器A的曲线“包住”学习器B的曲线,则A的性能优于B
P-R曲线:
当我们设置一个阈值时,会得到一对P-R,而当阈值在[0,1]上取值时,就可以获得更多的P-R,由此画出P-R曲线
P-R曲线代表了一个学习器的性能,上文中有得出结论:
若学习器A的曲线“包住”学习器B的曲线,则A的性能优于B。
而当两个曲线发生交叉时,则通过其他方法比较性能:
1、曲线围成的面积,面积大者性能更优
2、寻找平衡点(BEP),即P=R时,即:
另外还有一个Fβ的式子,是F1的一般形式,可以通过参数β控制对查准或查全的偏好,这里不多做解释了
3、ROC曲线(真正利率TPR和假正利率FPR)
有了前面的解释,搞懂TPR和FPR就不难了
直接上表达式:
ROC曲线则是以这两个值为横纵坐标画出的曲线:
由于一般情况下的样本是离散的,所以一般来说ROC曲线的形状是类似于右图的”锯齿状“
呈现这种锯齿状的特征是由于ROC曲线在绘制的过程中,是一个点一个点画的。
模拟一下这个过程:
1、将所有测试对象根据预测值(在0~1之间)按从大到小排序,记为序列L
2、认为所有样本皆为负,则100%预测为N,故P=0,即TP=FP=0,TPR=FPR=0,第一个点为(0,0)
3、将阈值调整为L[0]的值,则L[0]将被预测为P,则必有 TP=1&FP=0 或 TP=0 FP=1,相应的会得到TPR和FPR,得到第二个点
4、重复3的过程,将阈值继续调整为L[1],则L[0]和L[1]将被预测为P,TPR和FPR的值会再次改变,得到第三个点
5、重复上述过程,最终可以得到完整的ROC曲线
如何通过ROC曲线判断模型的性能
真正(TP)利率反映的是预测正确的概率,假正(FP)利率反映的是预测错误的概率,所以在图中能”包住“另一条曲线的性能更优