举个例子,我们想训练一个模型去诊断患者是否患有癌症。在人群中,患有癌症是一个极小概率发生的事情,比如 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 值可以作为评估度量值。
ps. 本篇文章是根据吴恩达机器学习课程整理的学习笔记。如果想要一起学习机器学习,可以关注微信公众号「SuperFeng」,期待与你的相遇。