二分类模型评价指标

0. 前言

前面学习了一些分类算法,但是对于如何评价模型的好坏并未有太多了解,故此篇博客来讨论一下这个问题。

二分类问题

二分类问题其实就是预测某个样本是或不是的问题,在计算机中的是或不是我们用1和0来表示,即预测该样本是1这类还是0这类。
举个栗子:预测某条评论是不是正面的评价
用10条数据来说明:

某条评论是不是正面评价 实际结果(1:是,0:不是) 预测结果 预测对了么?
1 0 ×
1 0 ×
1 1
1 1
1 1
不是 0 0
不是 0 0
不是 0 0
不是 0 0
不是 0 1 ×

对于二分类的问题,可以将样本根据真实类别与预测类别进行组合,有4中组合结果(真正例、假正例,真反例、假反例),由此会得到一个分类结果的混淆矩阵。

混淆矩阵

真实情况 预测结果
TP(真正例) FN(假反例)
FP(假正例) TN(真反例)

以上面表格中的数据来建立一个混淆矩阵就是:

真实情况 预测结果
实际:正面评价
预测:正面评价 √
实际:正面评价
预测:反面评价 ×
实际:反面评价
预测:正面评价 ×
实际:反面评价
预测:反面评价 √

将上面的文字用数据代替,则混淆矩阵如下:

真实情况 预测结果
3 2
1 4

关于TP FP TN FN,这就是上面提到的4种组合,实际是由这4个英文单词组合:
True、False、Positive、Negative
① 其中T和F就是我们上面表格中的√、×,即最终预测对了还是错了(是正确的预测还是错误的预测)。
② 其中的P和F就是机器学习算法或者模型预测的结果(P表示是正例、1、正面评价,N是反例、0、反面评价)
TP:正确预测为正例
FP:错误预测为正例
TN:正确预测为反例
FN:错误预测为反例
所以

真实情况 预测结果
3(TP) 2(FN)
1(FP) 4(TN)

准确率、精确率、召回率

还是用上边的10条数据为例讲解:

某条评论是不是正面评价 实际结果(1:是,0:不是) 预测结果 预测对了么?
1 0 ×
1 0 ×
1 1
1 1
1 1
不是 0 0
不是 0 0
不是 0 0
不是 0 0
不是 0 1 ×
  • 准确率
    准确率(accuracy),即对于整个测试样本来说,机器学习算法预测对的占比。
    用上面的数据来计算就是:预测对的数目(√)7个除以总的样本数目10条
    7/10 = 70%
  • 精确率
    精确率(precision),又称查准率,即机器学习算法预测为正(正例、0、正面评价…)的样本中,实际为正的占比。
    用上面的数据来计算就是:3/4 = 75%
    通过混淆矩阵,查准率P有如下计算公式:

P = T P T P + F P {TP}\over{TP+FP} TP+FPTP

即P = 3 3 + 4 {3}\over{3+4} 3+43 = 3 7 {3}\over{7} 73 = 75%

  • 召回率
    召回率(recall),又称查全率,即实际为正的样本中,预测为正的样本的占比。
    用上面的数据来计算就是:3/5 = 60%
    通过混淆矩阵,查全率R有如下计算公式:

R = T P T P + F N {TP}\over{TP+FN} TP+FNTP

即R = 3 3 + 2 {3}\over{3+2} 3+23 = 3 5 {3}\over{5} 53 = 60%

关于上述的查全率(召回率)和查准率(精确率)便于理解,可以有更形象化的解释:
查全率:宁可错杀一个,也不放过一个
查准率:宁可不杀,也不错杀

以查准率为纵轴、查全率为横轴作图,可以得到查准率-查全率曲线,即“P-R”曲线。
下面是西瓜书中的“P-R图”
二分类模型评价指标
可以观察到查准率和查全率大致呈一个反比的趋势。

如果能综合考虑查准率和查全率的性能度量肯定很好,F1就是这样的一个度量。
F1度量
F1是基于查准率与查全率的调和平均定义的:

1 F 1 {1}\over{F1} F11 = 1 2 {1}\over{2} 21 *( 1 P {1}\over{P} P1 + 1 R {1}\over{R} R1

所以F1公式如下:

F1 = 2 ∗ 查 准 率 ∗ 查 全 率 查 准 率 + 查 全 率 {2*查准率*查全率}\over{查准率+查全率} +2 = 2 ∗ P ∗ R P + R {2*P*R } \over {P+R} P+R2PR