机器学习常用的性能度量
在预测任务中,给定样例集D={(x1,y1),(x2,y2),⋯,(xi,yi),⋯,(xm,ym)}, 其中yi是示例xi的真是标记. 要评估学习器f的性能,就要把学习器的预测结果f(x)与真实标记y进行比较
回归问题
回归中常用的指标是均方误差(Mean Squared Error)
E(f;D)=m1i=1∑m(f(xi)−yi)2
分类问题
这是分类任务中最常用的两种性能度量,即适用于二分类任务,也适合于多分类任务.错误率是分类错误的样本数占样本总数的比列,对样例集D,分类错误率定义为:
E(f;D)=m1i−1∑mI(f(xi)=yi)
精度则是分类正确的样本数占样本总数的比例.精度的定义为:
acc(f;D)=m1i=1∑mI(f(xi)=yi)=1−E(f;D)
对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为 **真正例(true positive),假正例(false positive),真反例(true negative),假反例(false negative)**四种情形

**查准率(准确率,precision)**定义:
P=TP+FPTP
**查全率(召回率,recall)**定义
R=TP+FNTP
查准率和查全率是一对矛盾的度量.一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低.
F1度量
F11F1=21(P1+R1)=P+R2×P×R=2TP+FP+FN2×TP
F1度量分母包括TP,FP,FN相当于将查准率和查全率做了个综合.(其实F1是P和R的调和平均数)
Fβ度量
在一些应用中对查全率和查准率的要求不一样,这就要对两者加一定的权重
Fβ1Fβ=1+β21(P1+Rβ2)=(β2×P)+R(1+β2)×P×R
当β=1时退化为标准的F1;β>1时查全率有更大影响;β<1时查准率有更大影响
在机器学习中分类器往往直接输出的不是类别标号,而是属于,某个类别的概率值,对概率值通过不同的阈值进行筛选,查准率和查全率也会一直变化.PR曲线是以查准率为纵轴,查全率为横轴.如下图所示

其中,B曲线围成的面积比C曲线围成的大,所以B曲线的效果比C好.对于A和B可以通过:1.比较A和B的面积大小,在一定程度上表征了模型的优劣,但是这个值不容易估算;2.计算F1;3.计算Fβ. 对于平衡点(BEP)表示的是P=R的点.
ROC曲线以FPR(假正例率)作横轴,用TPR(真正例率)作纵轴,其中:
FPRTPR=TN+FPFP=TP+FNTP
其也是根据概率值进行筛选,计算FPR和TPR得到ROC曲线,而AUC则是ROC曲线围成的面积,如下图所示

完美的预测是一个在左上角的点,在 ROC 空间座标$ (0,1)点,x=0 代表着没有伪阳性,y=1 $代表着没有伪阴性(所有的阳性都是真阳性);也就是说,不管分类器输出结果是阳性或阴性,都是100%正确。
对于AOC曲线
-
AUC=1,是完美分类器,分类100% 正确。
-
0.5<AUC<1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
-
AUC=0.5,跟随机猜测一样,模型没有预测价值。
-
AUC<0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。
PR曲线和ROC曲线都能评价分类器的性能。如果分类器a的PR曲线或ROC曲线包围了分类器b对应的曲线,那么分类器a的性能好于分类器b的性能。
PR曲线和ROC曲线有什么联系和不同:
相同点:
- 首先从定义上PR曲线的R值是等于ROC曲线中的TPR值。
- 都是用来评价分类器的性能的。
不同点:
-
ROC曲线由于兼顾正例与负例,所以适用于评估分类器的整体性能(通常是会计算AUC,表示模型的rrank性能),相比而言PR曲线完全聚焦于正例。
- 如果有多份数据且存在不同的类别分布。比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较;反之,如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。
- 如果想要评估在相同的类别分布下正例的预测情况,则宜选PR曲线。类别不平衡问题中,ROC曲线通常会给出一个乐观的效果估计,所以大部分时候还是PR曲线更好。
例子
Inst |
Class |
Score |
Inst |
Class |
Score |
1 |
p |
0.9 |
11 |
p |
0.4 |
2 |
p |
0.8 |
12 |
n |
0.39 |
3 |
n |
0.7 |
13 |
p |
0.38 |
4 |
p |
0.6 |
14 |
n |
0.37 |
5 |
p |
0.55 |
15 |
n |
0.36 |
6 |
p |
0.54 |
16 |
n |
0.35 |
7 |
n |
0.53 |
17 |
p |
0.34 |
8 |
n |
0.52 |
18 |
n |
0.33 |
9 |
p |
0.51 |
19 |
p |
0.30 |
10 |
n |
0.505 |
20 |
n |
0.1 |
如上表:
真实情况正例反例各有10个。
先用分数(score):0.9作为阈值(大于等于1为正例,小于1为反例),此时TP=1,FP=0,FN=9,故P=1,R=0.1。
用0.8作为阈值,P=1,R=0.2。
用0.7作为阈值,P=0.67,R=0.2。
用0.6作为阈值,P=0.75,R=0.3。
以此类推。。。
最后得到一系列P、R值序列,就画出PR曲线(示意图,不对应上面数据):

PR 曲线越靠近右上角性能越好。
同样用上面的数据,
用0.9作为阈值,此时TP=1,FP=0,FN=9,TN=10,故TPR=0.1,FPR=0。
用0.8作为阈值,此时TP=2,FP=0,FN=8,TN=10,故TPR=0.2,FPR=0。
用0.7作为阈值,此时TP=2,FP=1,FN=8,TN=9,故TPR=0.2,FPR=0.1。
用0.6作为阈值,此时TP=3,FP=1,FN=7,TN=9,故TPR=0.3,FPR=0.1。
以此类推。。。
最后的ROC曲线如下图:

AUC的值就是ROC曲线下方围成区域的面积大小。
参考书籍:
周志华<机器学习>
参考博客:
https://blog.****.net/lk3030/article/details/85050408
https://blog.****.net/teminusign/article/details/51982877
https://wulc.me/2018/06/16/ROC%20%E6%9B%B2%E7%BA%BF%E4%B8%8E%20PR%20%E6%9B%B2%E7%BA%BF/