Fork me on GitHub

机器学习模型评价指标

机器学习模型评价指标

分类模型的评价指标,准确率P、召回率R、F1、PR曲线、ROC、AUC

混淆矩阵 假设问题为二分类问题,样本中有一部分正例和一部分反例,用一个模型F对这组样本预测,预测的结果中有正例(P)有反例(N),有的预测对了,有的预测错了,若一个正(反)样本预测成了正(反)值,这时候就叫做真正例、真反例(TP,TN),但是有的正样本预测成了反样本,反样本预测成了正样本,这是就分别叫做假反例和假正例(FN,FP),我们就基于这些值来评估一个模型的好坏。

查准率与查全率 评估模型的好坏,首先要知道我们主要关注的是什么,先说P和R的定义。$ P = \frac{TP}{TP+FP} $,意思是说,你模型预测的正例中有多少是预测对的,比例多大,也就是准确率。$ R = \frac{TP}{TP+FN} $ ,模型预测对的正例和真实样本中正例的比例,也就是,真实样本中的正例有多少把他们找出来了,比例多大,这就是查全率,或者叫做召回率。如果你实际业务中关注预测的精度,那P高的模型就是好的,如果关注预测的全不全,完不完整,那R高的就是好的。但是我们也不能一味的追求P和R的大小,比如,把样本全部预测为正例,R=1,或者只关注那些非常有把握的样本才预测为正例,这样P可能接近于1,但是意义不大,更多时候需要综合考虑P和R来评估模型的好坏。

PR曲线&F1
P、R分别就是指的上述查准率和查全率,分别作为坐标轴的横纵坐标轴。假设这时候模型的输出是分类的概率,比如逻辑回归。我们对这组概率从大到小排一个序,然后依次按照概率作为阈值对样本进行预测,每次滑动取不同的阈值,那么就会得到不同的P和R,比方说得到了一组$(R_1,P_1),(R_2,P_2),\cdots $,将这组值依次画在P_R坐标系上,并用线段连接起来,最终就会得到一个弯弯曲曲的折线,这就是P_R曲线。通常来说P_R曲线下面的面积越大,我们就说模型越好(关键还是看你关注的点在哪里)。F1度量是查准率和查全率的调和平均值$F_1 = \frac{1}{2}(\frac{1}{P}+\frac{1}{R}) $

ROC与AUC
介绍ROC之前先给出两个与P和R类似的定义。真正例率$TPR = \frac{TP}{TP+FN} $,假正例率 $FPR = \frac{FP}{FP+TN} $,直观上理解TPR就是实际正例模型预测正例的比例,等于R,而FPR就是实际上是反例而正预测为反例的比例,画ROC的方法与画PR曲线的方法类似,都是先把模型对样本的输出概率作一个排序,然后从大到小依次将每个样本预测为正样本,每次调整,TPR和FPR都会随着变化,将$(FPR_1,TPR_1),(FPR_2,TPR_2),\cdots $画在FPR_TPR为横纵坐标轴的坐标系中,就画出了ROC,实际步骤可以是这样:假设当前点的坐标为$(x,y) $, 调整下一个样本为正样本,若这个样本本身就是正样本,那么下一点的坐标就是$(x,y+\frac{1}{m^+}) $, 反之,下一点的坐标就是$(x+\frac{1}{m^-},y) $,$m^+,m^- $分别是真实数据正样本和反样本的个数,相应的最终ROC下面包含的面积就叫做AUC. 从TPR和FPR的定义上来看,假设FPR=0,TPR=1,也就是说反例没有预测成正例,正例全部预测成了正例,这个模型简直完美,这个坐标为(0,1)。如果我们的模型表现的比较好,也就是正例预测的概率大多数都排在前面,当我们从头开始调整分类的阈值时,TPR(y轴)一直在增加,FPR(x轴)一直维持在一个较小的值,这时候得到的AUC就会比较大。所以AUC越大,模型就越好,从另一个角度来看AUC的话,AUC其实是衡量了模型预测概率排序的一个好坏,甭管预测的概率多大,只要正样本预测为正样本的概率一般都比负样本预测为正样本的概率大,那只要我们恰当的调整分类阈值,模型的分类能力就会很强。

ROC与PR曲线的关联可以参考The Relationship Between Precision-Recall and ROC Curves, 暂时没看,据说是存在一一对应的关系。