1. 误差
误差:指模型实际输出与真实值(labels)的偏离程度,通常定义一个损失函数(loss function)来衡量误差的大小。
性能度量:需确定评估的指标,本质是衡量模型泛化能力好坏的标准,反映了任务需求。常用的指标如:准确率(Accuracy)、错误率(Error rate)、精确率(Precision)、召回率(Recall)和均方误差等。使用不同的性能度量,往往会导致不同的评估结果。
2 错误率
在分类预测任务中最为常用。在分类任务中,给定测试样例集,评估模型的性能就是把每一个待测样本的分类结果和它的真实标记进行一一比较,错误率指分类错误样本占测试样本总数的比例,正确率就是分类正确的样本数占样本总数的比例,两者关系是:正确率=1-错误率。例: m m m个样本,有 a a a个样本分类错误,错误率 e = a / m e=a/m e=a/m,正确率=1−错误率。
例: 计算错误率
(1)模型总的分类错误率:
e
=
(
1
+
2
)
/
6
=
0.5
e = (1+2)/6 = 0.5
e=(1+2)/6=0.5
(2)模型对猫的分类错误率:
e
c
a
t
=
0
/
2
=
0
e_{cat}=0/2 =0
ecat=0/2=0
(3)模型对狗的分类错误率:
e
d
o
g
=
1
/
2
=
0.5
e_{dog}=1/2 =0.5
edog=1/2=0.5
(4)模型对兔的分类错误率:
e
r
a
b
b
i
t
=
2
/
2
=
1
e_{rabbit}=2/2 =1
erabbit=2/2=1
虽然这两个指标很常用,但并不能满足所有任务需求。因为精度和错误率将每个类别看得同等重要,因此不适合用来分析不平衡的数据集。比如说,在信息检索中,我们更关心的是“检索出来的信息又多少比例是用户感兴趣的”,“用户感兴趣的信息中有多少被检索出来”,此时查准率和查全率比准确率和错误率更适合作为性能度量指标。
3 查准率、查全率、 F 1 F_1 F1
混淆矩阵:误差矩阵,统计真实标记和分类结果的组合
查准率(P):预测结果为正例的样本中实际为正的比例
P
=
T
P
(
T
P
+
F
P
)
P=\frac{TP}{(TP+FP)}
P=(TP+FP)TP
查全率(R):实际为正例的样本中被预测为正例的比例
R
=
T
P
(
T
P
+
F
N
)
R=\frac{TP}{(TP+FN)}
R=(TP+FN)TP
更一般情况下,查准率(精确率,P)和查全率(R)的公式表达为:
P
=
正确识别的个体总数
识别出的个体总数
P=\frac{正确识别的个体总数}{识别出的个体总数}
P=识别出的个体总数正确识别的个体总数
R = 正确识别的个体总数 测试集中存在的个体总数 R= \frac{正确识别的个体总数}{测试集中存在的个体总数} R=测试集中存在的个体总数正确识别的个体总数
例: 根据表中结果,计算 P P P和 R R R
(1)对猫进行预测时——实际有2只猫;预测结果中有2只猫、2只兔被判断为猫,合计找到4只猫。其中2只预测正确,2只预测错误。
P
=
2
/
4
=
0.5
R
=
2
/
2
=
1
P=2/4=0.5 \quad R=2/2=1
P=2/4=0.5R=2/2=1
(2)对狗进行预测时——实际有2条狗;预测结果中有1条狗被判断为狗,合计找到1条狗。这1条狗预测正确,但另1条没找到
P
=
1
/
1
=
1
R
=
1
/
2
=
0.5
P = 1/1=1 \quad R=1/2 =0.5
P=1/1=1R=1/2=0.5
(3)对兔进行预测时——实际有2只兔;预测结果中有1条狗被判断为兔,合计找到1只兔,但是判断错误。
P
=
0
/
1
=
0
R
=
0
/
2
=
0
P = 0/1=0 \quad R=0/2=0
P=0/1=0R=0/2=0
由此可见,这两个指标,只有一个指标高的话不一定有意义,比如说,总共有1000个实例,500个正例,500个反例,预测所有的实例都是正例,那肯定所有的真正的正例都被选出来了,查全率就是1,但这种预测它并没有意义。再比如说,最终的预测结果是只有5个正例,并且5个都正确,那么查准率就等于1,这也没有意义,有99%的正例没有被判断出来。最优的结果当然就是两个指标尽可能高。
实际上,查准率和查全率通常是一对矛盾的评估量。查准率高时,查全率往往偏低。为了综合考察查准率和查全率,提出了一种P-R曲线,利用P-R曲线来找到一个平衡点BER,目的就是让查准率
P
P
P和查全率
R
R
R的值都尽可能高。
以查准率
P
P
P为纵轴,以查全率
R
R
R为横轴,P-R曲线直观地显示出学习器在样本总体上的查全率和查准率,比如图中ABC代表三类学习器的结果,从图中可见,A的曲线完全包住C,可以断言A的性能优于C,如果两个学习器的曲线发生了交叉,则难以判断,一般会比较P-R曲线下的面积(AP),面积的大小一定程度上表征了学习器在查准率和查全率上取得相对“双高”的比例,就是所有的类的AP值求平均,则记为mAP。AP与mAP指标是目标检测算法中最重要的指标。
这个面积一般不容易估算,因此设计一些综合考虑查准率、查全率的性能度量,比如 F 1 F_1 F1度量等。
F1:综合考虑查准率和查全率:
1
𝐹
1
=
1
2
⋅
(
1
𝑃
+
1
𝑅
)
=
2
×
P
×
R
P
+
R
=
2
×
T
P
样例总数
+
T
P
−
T
N
\frac{1}{𝐹_1}=\frac{1}{2}\cdot \left(\frac{1}{𝑃}+\frac{1}{𝑅}\right)=\frac{2\times P \times R}{P+R}=\frac{2\times TP }{样例总数+TP-TN}
F11=21⋅(P1+R1)=P+R2×P×R=样例总数+TP−TN2×TP
F
1
F_1
F1度量的一般形式有:
1
F
β
=
(
1
+
β
2
)
×
P
×
R
(
β
2
×
P
)
+
R
\frac{1}{F_\beta}=\frac{(1+{\beta}^2)\times P \times R}{({\beta}^2\times P)+R}
Fβ1=(β2×P)+R(1+β2)×P×R
当
β
=
1
\beta=1
β=1时,为标准
F
1
F_1
F1,当
β
>
1
\beta>1
β>1时,偏重查全率,当
β
<
1
\beta<1
β<1时,偏重查准率
4 ROC
很多分类器可以为测试样例产生一个概率预测,因此可以根据预测的概率将测试样例进行排序,把最可能是正例的排在最前面,把最不可能是正例的排在最后面。这样,分类过程就相当于在这个排序中以某个“截断点”将样本分为两部分,前一部分判为正例,后一部分判为反例。在不同的应用任务下,用户可以根据不同的任务需求来选择不同的截断点。因此,排序本身的质量好坏体现了分类器在不同任务下的泛化性能。 ROC曲线就是从这个角度出发研究学习器泛化性能的有力工具。
ROC曲线,全称是“受试者工作特征”( Receiver Operating Characteristics )曲线。根据分类器的预测结果对样例排序,并按此顺序依次选择不同的“截断点”逐个把样例作为正例进行预测,每次计算出当前分类器的“真正例率”和“假正例率”,然后分别以它们为纵轴和横轴绘图,就可得到ROC曲线。
真正例率:被预测为正例占真实正例的比例:(与查全率/召回率定义一致)
T
P
R
=
T
P
T
P
+
F
N
TPR=\frac{TP}{TP+FN}
TPR=TP+FNTP
假正例率:被预测为正例占真实反例比例
T
P
R
=
F
P
T
N
+
F
P
TPR=\frac{FP}{TN+FP}
TPR=TN+FPFP
这两个指标就是按照真实情况,把正例和反例分开后分别计算得到的。
例: 绘制ROC曲线
解析:ROC曲线就是设置一堆阈值,每个阈值得到一个(TPR,FPR)对,纵轴为TPR,横轴为FPR,把所有的(TPR,FPR)对连起来。
由表格可知,样本中正例一共是4个,反例一共是5个。对预测结果排序情况是第三行数据,表示预测为正例的概率,现在设置截断点来依次计算:
第一种情况:全部预测为反例,那么TPR=0/4=0,FPR=0/5=0;
第二种情况:第一个预测为正例,其余为反例,那么TPR=0/4,FPR=1/5
以此类推,得到所有结果,然后绘制ROC曲线。
如果要预测的待测样本足够多,“截断点”就会密集,那么ROC折线图就会变成比较平滑的曲线图。ROC曲线越靠近左上角,那么它的排序性能就越好。
ROC与P-R比较
在面对正负样本数量不均衡的场景下,例如负样本增大10倍后俩个曲线的图。可以看出,ROC曲线基本没有变化,但P-R曲线确剧烈震荡。