偏斜类是指在分类任务中一类的数据远大于另一类的数据.最典型的例子是判断是否得癌症.因为患癌症的概率比较小,所以数据中患癌症的样本数要远小于没有患癌症的样本.
偏斜类会导致一些问题,比如说我们有一个癌症判断模型,这个模型的错误率为1%.如果是正常的分类任务,我们认为1%的错误率还可以,但是在偏斜类中,考虑到患癌症的人数只有0.5%,那么这个错误率就很差了.因为即使把全部患癌人都判断错,错误率也只有0.5%,而模型1%的错误率显然误差很大.
遇到偏斜类问题时,我们可以使用精准率和召回率来衡量的正确率.
精准率(Precision):
召回率(Recall):
精准率与回召率都是越高越好.
精准率和召回率又被称为查准率和查全率,我觉着这两个名字更为贴切,查准率衡量预测是不是准确,查全率衡量预测是不是全面.
就这两个概念,我记了能有四五次了吧,也没记住谁除以谁,这里画个图帮助记忆:
有的时候我们很难决定查准率高点好,还是回召率高点好.比如说下面的数据:
Precision | Recall | F1 score | |
---|---|---|---|
Algorithm1 | 0.5 | 0.4 | 0.444 |
Algorithm2 | 0.7 | 0.1 | 0.175 |
Algorithm3 | 0.02 | 1.0 | 0.0392 |
这时我们可以使用F1 score最高的.
另外F1 score最大值为1,即P与R都为1的时候.而P与R有一个比较小,F1 score就会很小.
有时候我们对精确率和召回率并不是一视同仁,比如有时候我们更加重视精确率。我们用一个参数β来度量两者之间的关系。如果, 召回率有更大影响,如果,精确率有更大影响。自然,当的时候,精确率和召回率影响力相同,和F1形式一样。含有度量参数的F1我们记为, 严格的数学定义如下:
假阳性率(False Positive Rate):
真阳性率(True Positive Rate):
以TPR为y轴,以FPR为x轴,我们就直接得到了RoC曲线。从FPR和TPR的定义可以理解,TPR越高,FPR越小,我们的模型和算法就越高效。也就是画出来的RoC曲线越靠近左上越好。如下图左图所示。从几何的角度讲,RoC曲线下方的面积越大越大,则模型越优。所以有时候我们用RoC曲线下的面积,即AUC(Area Under Curve)值来作为算法和模型好坏的标准。
以精确率为y轴,以召回率为x轴,我们就得到了PR曲线。仍然从精确率和召回率的定义可以理解,精确率越高,召回率越高,我们的模型和算法就越高效。也就是画出来的PR曲线越靠近右上越好。如上图右图所示。
使用RoC曲线和PR曲线,我们就能很方便的评估我们的模型的分类能力的优劣了。