我们都知道机器学习要建模,但是对于模型性能的好坏我们并不知道是怎样的,很可能这个模型就是一个差的模型,对测试集不能很好的预测。那么如何知道这个模型是好是坏呢?必须有个评判的标准,需要用某个指标来衡量,这就是性能度量的意义。有了一个指标,就可以对比不同模型了,从而知道哪个模型更好,或者通过这个指标来调参优化选用的模型。
对于分类、回归、聚类等,分别有各自的评判标准。本篇主要介绍二分类算法(多分类可以扩展转化成二分类)的相关指标。评估一个二分类的分类器的性能指标有:准确率、查准率、查全率、F1值、AUC/ROC。前面几个比较直观,AUC/ROC相对抽象一点。经常会以AUC/ROC为代表来考察对分类算法指标的认知程度:什么是AUC/ROC?横轴纵轴都代表什么?有什么优点?为什么要使用它?不是因为它的复杂度更高,主要是它对项目场景的衡量更贴切。
背景介绍-混淆矩阵与常规定义
对于二分类模型,预测情况与实际情况会得出2*2=4种组合,形成混淆矩阵:
预测正例 | 预测反例 | |
---|---|---|
实际正例 | TP: True Positive | FN: False Negative |
实际反例 | FP: False Positive | TN: True Negative |
真正(True Positive , TP):被模型预测为正的正样本
假正(False Positive , FP):被模型预测为正的负样本
假负(False Negative , FN):被模型预测为负的正样本
真负(True Negative , TN):被模型预测为负的负样本
真正率(True Positive Rate,TPR):TPR=TP/(TP+FN),即被预测为正的正样本数 /正样本实际数
假正率(False Positive Rate,FPR) :FPR=FP/(FP+TN),即被预测为正的负样本数 /负样本实际数
假负率(False Negative Rate,FNR) :FNR=FN/(TP+FN),即被预测为负的正样本数 /正样本实际数
真负率(True Negative Rate,TNR) :TNR=TN/(TN+FP),即被预测为负的负样本数 /负样本实际数
性能指标
准确率(Accuracy): Accuracy = (TP+TN)/(TP+FN+FP+TN)
即正确预测的正反例数 /预测总数。准确率是预测正确的结果占总样本的百分比,是很自然就会想到的指标,但很多项目场景都不适用!最主要的原因是样本不平衡。举个简单的例子,比如在一个总样本中,正样本占90%,负样本占10%,样本是严重不平衡的。对于这种情况,我们只需要将全部样本预测为正样本即可得到90%的高准确率,但实际上我们并没有很用心的分类,只是随便无脑一分而已。这就说明了:由于样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效。
精确率(Precision): Precision = TP/(TP+FP)
即正确预测的正例数 /预测正例总数。可理解为查准率。在预测为正的记录中,有多少实际为正?
召回率(Recall): Recall = TP/(TP+FN)
即正确预测的正例数 /实际正例总数 。可理解为查全率。在实际为正的记录中,有多少预测为正?
F1 score : 2/F1 = 1/Precision + 1/Recall
精确率和召回率的调和值。由于Precision和Recall是一对不可调和的矛盾,很难同时提高二者,也很难综合评价。故提出F1来试图综合二者,F1是P和R的调和平均。F1更接近于两个数较小的那个,所以精确率和召回率接近时值最大。很多推荐系统会用的评测指标。
ROC曲线: 以假正率FPR为横轴,以真正率TPR为纵轴,绘制的曲线
FPR表示模型虚报的响应程度,而TPR表示模型预测响应的覆盖程度。我们希望:虚报的越少越好,覆盖的越多越好。总结一下就是FPR越低TPR越高(即ROC曲线越陡),那么模型就越好。ROC曲线无视样本不平衡。
画曲线的用意是:用假正率与真正率的变化趋势,来观察模型是否能在较低的假正率下得到较高的真正率。
AUC: Area under the ROC curve
绘制ROC曲线时,横轴纵轴都是0~1,形成一个1*1的正方形。AUC就是在这个正方形里ROC曲线围成的面积。
如果连接正方形的对角线,它的面积正好是0.5。对角线的实际含义是:随机判断响应与不响应,正负样本覆盖率都是50%,即AUC =0.5表示随机分类器。AUC < 0.5表示差于随机分类器,没有建模价值;AUC = 1表示完美分类器,不存在;0.5 < AUC < 1,优于随机分类器,大多模型都在这个区间里。
AUC的一般判断标准
0.5 - 0.7:效果较低,但用于预测股票已经很不错了
0.7 - 0.85:效果一般
0.85 - 0.95:效果很好
0.95 - 1:效果非常好,但基本不太可能
场景决定指标
指标没有单纯的谁比谁好,选择指标还是要结合具体的使用场景。比如:
嫌疑人定罪:基于不错怪一个好人的原则,有时候放过一些嫌疑人也是值得的。宁漏,不错。
地震的预测:情愿发出100次警报10次都没漏,也不要发出10次警报对了8次漏了2次。宁错,不漏。
在地震场景中可以只看Recall=99.99999%(地震全中)时的Precision,其他指标就变得没有了意义。
学习参考:
https://www.cnblogs.com/zongfa/p/9431807.html 综合性介绍
https://www.jianshu.com/p/7b3cc8e44096 非AUC/ROC示例好理解
https://www.jianshu.com/p/f07a79dfeb1d AUC/ROC的讲解更清晰