我们针对一个具体地问题建立了一个机器学习模型以后,怎么去评价这个模型的好坏呢?这就需要用到分类器的几个性能评价指标。下面简单谈一下。
准确率(accuracy)
准确率是最常用的分类性能指标。拿最常见的二分类问题来说,我们的模型无非是想要把正类和负类预测识别出来。在测试集中识别对的数量(不论是把正样本识别为正样本还是把负样本识别为负样本)除以测试集的数据总量就是准确率。在用scikit-learn调用分类器进行分类的时候,模型返回的score值其实就是准确率。
精确率(precision)和召回率(recall)以及F值
精确率容易和准确率被混为一谈。其实,精确率只是针对预测正确的正样本而不是所有预测正确的样本。它可以由预测正确的正样本数除以模型所有预测为正样本的数目之比来计算出来。表现为预测出是正的里面有多少真正是正的。
而召回率是由预测正确的正样本数目除以测试集中真正的实际正样本数目之比计算得出。表现出所有真正是正样本中分类器能召回多少。
哈哈,是不是晕了?下面盗一张图:
精确率 precision = TP / (TP+FP)
召回率 recall = TP / (TP+FN)
还有一个指标是F值,它是精确率和召回率的调和值,如上图。很多推荐系统的评测指标就是用F值的。
ROC曲线以及AUC面积
这货全称叫:受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线)。简单来说就是选两个指标,作为二维坐标的两个轴,然后通过描述在不同阈值下这两个指标的变化,画出一条曲线。
关键是,选哪两个指标呢?
ROC曲线选的两个指标是:
- 真正类率(true positive rate ,TPR), 计算公式为TPR=TP/(TP+ FN)
- 假正类率(1-specificity=FPR),计算公式为FPR=FP/(FP+TN)
将真正类率作为Y轴,假正类率作为X轴,然后就可以画出ROC曲线。ROC曲线与X坐标轴所围成的面积叫做AUC面积,这个面积也可以作为分类器的性能评价指标。面积越大,分类器性能越好。
P-R曲线
P-R曲线的P就是精确率,R就是召回率。用P作为横坐标,R作为纵坐标,就可以画出P-R曲线。那么P-R曲线和ROC曲线有什么关系呢?
当正负样本差距不大的情况下,ROC和PR的趋势是差不多的,但是当负样本很多的时候,两者就截然不同了,ROC效果依然看似很好,但是PR上反映效果一般,还需要继续努力啊。解释起来也简单,假设就1个正例,100个负例,那么基本上TPR可能一直维持在100左右,然后突然降到0.