机器学习系列16:机器学习系统设计

  • 2019 年 10 月 7 日
  • 筆記

偏斜分类的误差评估

举个例子,我们想训练一个模型去诊断患者是否患有癌症。在人群中,患有癌症是一个极小概率发生的事情,比如 1000 个人中患有癌症的只有 5 人。那么在这个样本中,患有癌症的人的概率为 0.5%,正常人的概率为 99.5%,这是一个偏斜类,正结果(设为 1 )占总样本数极小。

如果我们训练的机器学习模型的正确率为 99%,看似这个正确率非常高,模型表现的很好,可是考虑下面这个模型(这都算不上一个模型):令所有的结果全部输出为 0(也就是认为所有人都是没有癌症的),它的正确率会达到 99.5%,比我们用机器学习训练的模型正确率还要高,那么这么模型就是好的吗?肯定不是,这个模型什么事情都没有做!我们被它欺骗了。

为了防止被结果欺骗,我们要用到偏斜分类的误差评估这种方法。其中用到了评估度量值:查准率(precision)召回率(recall)。如下图:

我们将算法预测的结果分为 4 中情况:

1.正确肯定(True Positive): 预测为真,结果为真

2.正确否定(True Negative): 预测为假,结果为假

3.错误肯定(False Positive): 预测为真,结果为假

4.错误否定(False Negative):预测为假,结果为真

查准率和召回率的定义已经在上图中列出来了。可以知道,查准率是在所有我们预测结果为真的情况下,预测成功的概率;召回率是在所有实际结果为真的情况下,我们预测成功的概率。那么回到刚才的问题,查准率是在所有我们预测为癌症的患者中,实际患有癌症的概率;召回率是在全部实际患有癌症的患者中,我们预测成功的概率。对于认为所有人都没有患癌症的算法,召回率为 0,那么这种算法就表现的很差,我们就不会被算法表面的结果所欺骗。

权衡查准率和召回率

回顾逻辑回归算法:

当我们把临界值 0.5 增大,查准率就会增大而召回率就会减小,当我们把临界值 0.5 减小,查准率就会减小而召回率就会增大。

评估一个算法的好坏我们要用到评估度量值,评估度量值是一个实数,能够评估这个算法的好坏,但是现在有两个值,我们就没办法确定究竟怎么选择。这时候首先想到用平均值,但是会发现,Algorithm 3 的平均值最大但是这个算法表现的是最差的,因此取查准率和召回率的平均值这种做法是不可取的。

我们需要要用到 F1 值去计算评估度量值。根据 F1 值的定义,当查准率和召回率其中有一个为 0 时,F1 值就为 0,因此 F1 值可以作为评估度量值。