在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),ROC曲线与PR曲线这些概念,那这些概念到底有什么用处呢?
首先,我们需要搞清楚几个概念:
听起来还是很费劲,不过我们用一张图就很容易理解了。图如下所示,里面绿色的半圆就是TP(True Positives), 红色的半圆就是FP(False Positives), 左边的灰色长方形(不包括绿色半圆),就是FN(False Negatives)。右边的 浅灰色长方形(不包括红色半圆),就是TN(True Negatives)。这个绿色和红色组成的圆内代表我们分类得到模型结果认为是正值的样本。
精确率(Precision)的定义在上图可以看出,是绿色半圆除以红色绿色组成的圆。严格的数学定义如下:
P=TP/(TP+FP)
召回率(Recall)的定义也在图上能看出,是绿色半圆除以左边的长方形。严格的数学定义如下:
R=TP/(TP+FN)
特异性(specificity)的定义图上没有直接写明,这里给出,是红色半圆除以右边的长方形。严格的数学定义如下:
S=FP/(FP+TN)
有时也用一个F1值来综合评估精确率和召回率,它是精确率和召回率的调和均值。当精确率和召回率都高时,F1值也会高。严格的数学定义如下:
2/F1=1/P+1/R
有时候我们对精确率和召回率并不是一视同仁,比如有时候我们更加重视精确率。我们用一个参数ββ来度量两者之间的关系。如果β>1, 召回率有更大影响,如果β<1,精确率有更大影响。
自然,当β=1的时候,精确率和召回率影响力相同,和F1形式一样。含有度量参数β的F1我们记为FβF_\betaFβ, 严格的数学定义如下:
Fβ=1+β2∗P∗Rβ2∗P+RF_\beta=\frac {1+\beta^2*P*R}{\beta^2*P+R}Fβ=β2∗P+R1+β2∗P∗R
我们熟悉了精确率, 召回率和特异性,后面的ROC曲线和PR曲线就好了解了。
有了上面精确率, 召回率和特异性的基础,理解ROC曲线和PR曲线就小菜一碟了。
以召回率为y轴,以特异性为x轴,我们就直接得到了ROC曲线。从召回率和特异性的定义可以理解,召回率越高,特异性越小,我们的模型和算法就越高效。也就是画出来的ROC曲线越靠近左上越好。如下图左图所示。从几何的角度讲,ROC曲线下方的面积越大越大,则模型越优。所以有时候我们用ROC曲线下的面积,即AUC(Area Under Curve)值来作为算法和模型好坏的标准。
以精确率为y轴,以召回率为x轴,我们就得到了PR曲线。仍然从精确率和召回率的定义可以理解,精确率越高,召回率越高,我们的模型和算法就越高效。也就是画出来的PR曲线越靠近右上越好。如上图右图所示。
使用ROC曲线和PR曲线,我们就能很方便的评估我们的模型的分类能力的优劣了。