在之前的练习中,评价模型的好坏我都采用了准确率(accuracy),准确率即分类正确的样本数占总样本数的比例。与准确率对应的还有错误率,即分类错误的样本数占总样本数的比例。以下引用西瓜书(《机器学习》)中的例子。准确率和错误率就是在一车西瓜中,有多少比例的瓜被判断正确或判断错误。假如我们的关注点不仅仅在分类是否正确,而是要知道有多少瓜是好瓜,好瓜有多少被正确的分类出来,那么用准确率是不太直观的,所以还有其他的评价方法,如精确率(Precision)、召回率(Recall)、F-measure和ROC曲线。
混淆矩阵
对于二分类问题,根据分类结果与实际结果相比较,可以将分类结果分为四种
TP+FN+FP+TN=样本总数
以分类结果1/0为例
TP:预测结果为1,实际结果为1
FN:预测结果为0,实际结果为1
FP:预测结果为1,实际结果为0
TN:预测结果为0,实际结果为0
精确率
还是以西瓜为例,精确率就是挑出的西瓜中,有多少比例是好瓜。这句话中,挑出的西瓜就是我们模型预测结果为正例的那些西瓜,就是模型认为是好瓜的那些西瓜,这其中包括真的是好瓜的西瓜和不是好瓜而被模型认为的好瓜的西瓜…
精确率就是真正的好瓜和挑出西瓜的百分比,即:
P
=
T
P
T
P
+
F
P
P=\frac{TP}{TP+FP}
P=TP+FPTP乍看之下精确度好像并不没有什么突出的地方。但如果以公安系统的人脸识别为例,根据人脸图像分类为嫌疑犯和非嫌疑犯,嫌疑犯就是上述的挑出瓜,那肯定希望在嫌疑犯中,是罪犯(好瓜)的人数越多越好,这是就需要精确率P越高越好。
召回率
召回率就是在全部好瓜中,有多少好瓜能被正确的挑出来。全部好瓜就是被模型预测为好瓜的好瓜+被模型预测为坏瓜的好瓜,即TP+FN,所以召回率表达式为: R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP
召回率与精确率是相互矛盾的。比如,我们要使召回率较高,可以多挑几个瓜,没准其中就有好瓜,但是这种方法,会掺杂进坏瓜,让挑出的西瓜中,好瓜的比例降低,即精确率降低了。
P-R图
根据精确率和召回率两者矛盾的关系,我们可以以P为Y轴,R为X轴做一个两者的关系图。
一般的机器模型的预测结果,会按照“最可能”是正例至“最不可能”是正例的样本进行排序。我们可以计算每个样本点的P(精确率)和R(召回率),并在图上将这个样本点表示出来,最后将整个数据集的样本点都连起来,就得到P-R曲线。
上图是西瓜书中所给的例图,查准率就是精确率,查全率就是召回率。
可以看到有A、B、C三条曲线,A、B、C是对于同一个数据集的机器学习模型,加入一个模型的P-R曲线能完全“包"住另一个模型的P-R曲线,可以认为前者优于后者,如图中的A与C,A的曲线包住了C,所以A模型优于C。但如果两个P-R曲线有相交,并完全包住,这时则需要根据实际来考虑,根据数据集对P要求高还是对R要求高,即P、R的权重,常用F值来判断。
F-measure(F值)
当需要协调P和R的矛盾时,常用F-measure的方法。
F-measure是对P和R的加权和平均,表达式是:
F
β
=
(
β
2
+
1
)
⋅
P
⋅
R
β
2
⋅
P
⋅
R
F_β=\frac{(β^2+1)·P·R}{β^2·P·R}
Fβ=β2⋅P⋅R(β2+1)⋅P⋅R将它写成倒数形式更加直观
1
F
β
=
1
1
+
β
2
⋅
(
1
P
+
β
2
R
)
\frac{1}{F_β}=\frac{1}{1+β^2}·(\frac{1}{P}+\frac{β^2}{R})
Fβ1=1+β21⋅(P1+Rβ2)
当β=1时,为
F
1
=
2
⋅
P
⋅
R
P
⋅
R
F_1=\frac{2·P·R}{P·R}
F1=P⋅R2⋅P⋅R
当β>1时,召回率较为重要
当β<1时,精确率较为重要
所以,可以根据需求设置β值
ROC曲线与AUC
ROC(Receiver Operating Characteristic)受试者特征曲线
AUC(Area under Curve )意思是曲线下面积。
以下内容参考:机器学习算法中的准确率(Precision)、召回率(Recall)、F值(F-Measure)是怎么一回事
ROC图很像P-R图,不同的就是它的横纵坐标变了
ROC曲线是以真正率(TPR=TP/(TP+FN))为纵坐标,以假正率(FPR,FPR=FP/(FP+TN))为横坐标。
我们分类时,通常使用0.5作为阈值,若分类结果大于0.5就认为为正,小于0.5为负。若我们调整阈值,混淆矩阵中四种分类结果的数量将会发生改变,此时的真正率为X,假正率为Y,记点(X,Y)。在0~1不断调整阈值,会有许多点(X,Y),根据这些点可做出ROC曲线
曲线与轴围成的面积为AUG,曲线下面积,AUC值越大的分类器,正确率越高。
ROC曲线相较于单独的精确率或召回率要显得更为合理,但存在一个问题就是ROC曲线在高度不平衡的数据条件下的的表现仍然过于理想,不能够很好的展示实际情况,这时不妨采用P-R图试试。