机器学习二分类问题模型效果度量方法

来源:互联网 发布:台湾 导弹 知乎 编辑:程序博客网 时间:2024/06/02 07:04

ref
http://blog.csdn.net/ice110956/article/details/20288239
http://www.cnblogs.com/Allen-rg/p/5821949.html
http://blog.csdn.net/taoyanqi8932/article/details/54409314
https://www.zhihu.com/question/30643044/answer/48955833
http://blog.csdn.net/login_sonata/article/details/54288653

主要有以下几种度量方法:
Accuracy、Error Rate、Precision(精确率)、Recall(召回率)、F-measure(调和均值)、ROC(受试者工作特征曲线(receiver operating characteristic curve))、Precision-Recall curve、AUC(AreaUnderCurve,曲线下的面积)…………………

不同的任务需求会采用不同的度量方法,从而导致不同的评判结果,这意味着模型的好坏事相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务的需求。

1.Accuracy和Error Rate
Accuracy:准确度、Error Rate:错误率
它们的定义如下:
这里写图片描述

这两种度量方法很直观明了,但是有时并不能满足任务的要求,其准确度将每个类看得同等的重要,因此它可能不适合用来分析不平衡的数据集,即正类样本远远小于负类的样本。

比如1000个样本中有990个负样本,10个正样本;有一个分类器把所有的正样本判成负样本,此时该分类器的accuracy=99%。但这显然是没有意义的,因为我们关心的是正样本。

2.confusion matrix混淆矩阵
对于二分类问题,关于两类分类问题,原始类为p,n,分类后的类别为Y,N。排列组合后得到4种结果,定义混淆矩阵如下:
这里写图片描述

其中:
(1)precision:准确率,查准率)
(2)recall:召回率,查全率)
(3)TPR:在所有实际为阳性的样本中,被正确地判断为阳性之比率。
(4)FPR:在所有实际为阴性的样本中,被错误地判断为阳性之比率。可看出,FPR=recall

(5)F-measure
这里写图片描述
当β=1,成为F1值(上图中的就是F1值)
β>1,recall有更大影响
β<1,precision有更大影响

3.ROC曲线、PR曲线、Auc
对于0,1两类分类问题,一些分类器得到的结果往往不是0,1这样的标签,如对数几率回归(Logistic Regression,LR),得到诸如0.5,0.6,0,8这样的分类结果。这时,我们人为取一个阈值(threshold),比如0.7,那么小于0.7的为0类,大于等于0.7的为1类,可以得到一个分类结果。同样,这个阈值我们还可以取0.5,0.6等等。取不同的阈值,得到的最后的分类情况也就不同。

阈值不同,可以得到不同的结果。这时候就需要一个独立于阈值,只与分类器有关的评价指标,来衡量特定分类器的好坏。
于是就有了ROC曲线。

以FPR为横轴,TPR为纵轴,得到如下ROC曲线

对于每一个阈值,得到一个点(FPR,TPR)。也就是遍历所有的阈值,得到ROC曲线。
这里写图片描述
而且一般来说,如果ROC是光滑的,那么基本可以判断没有太大的overfitting

AUC(Area Under Curve)被定义为曲线下的面积。

在医学诊断中,假设有病为正样本。
那么尽量把有病的揪出来是主要任务,也就是第一个指标TPR,要越高越好。
而把没病的样本误诊为有病的,也就是第二个指标FPR,要越低越好。

不难发现,这两个指标之间是相互制约的。如果某个医生对于有病的症状比较敏感,稍微的小症状都判断为有病,那么他的第一个指标应该会很高,但是第二个指标也就相应地变高。最极端的情况下,他把所有的样本都看做有病,那么第一个指标达到1,第二个指标也为1。

这里写图片描述

在上图中,我们可以看出,左上角的点(TPR=1,FPR=0),为完美分类,也就是这个医生医术高明,诊断全对。

点A(TPR>FPR),医生A的判断大体是正确的。中线上的点B(TPR=FPR),也就是医生B全都是蒙的,蒙对一半,蒙错一半;下半平面的点C(TPR<FPR),这个医生说你有病,那么你很可能没有病,医生C的话我们要反着听,为真庸医。

PR曲线(Precision-Recall曲线),也是对阈值threshold进行遍历,这样也得到 了不同的precision和recall的点。
当正负类样本差数量距很大时,ROC的就不能很好的反应分类器的真实性能了,这时候PR将是更好的选择。假设负类的数量远大于正类,当FP的数量有比较大的变化时,FP_rate= FP / N 因为N很大,所以FP_rate不会有很大变化。但是PR=TP /TP +FP ,它可以捕获到这个差异,所以效果会更好。
Precision和Recall成负相关
这里写图片描述

下面节选自:What is the difference between a ROC curve and a precision-recall curve? When should I use each?

Particularly, if true negative is not much valuable to the problem, or negative examples are abundant. Then, PR-curve is typically more appropriate. For example, if the class is highly imbalanced and positive samples are very rare, then use PR-curve. One example may be fraud detection, where non-fraud sample may be 10000 and fraud sample may be below 100.
In other cases, ROC curve will be more helpful.

其说明,如果是不平衡类,正样本的数目非常的稀有,而且很重要,比如说在诈骗交易的检测中,大部分的交易都是正常的,但是少量的非正常交易确很重要。

Let’s take an example of fraud detection problem where there are 100 frauds out of 2 million samples.
Algorithm 1: 90 relevant out of 100 identified
Algorithm 2: 90 relevant out of 1000 identified

Evidently, algorithm 1 is more preferable because it identified less number of false positive.
In the context of ROC curve,
Algorithm 1: TPR=90/100=0.9, FPR= 10/1,999,900=0.00000500025
Algorithm 2: TPR=90/100=0.9, FPR=910/1,999,900=0.00045502275
The FPR difference is 0.0004500225

For PR, Curve
Algorithm 1: precision=0.9, recall=0.9
Algorithm 2: Precision=90/1000=0.09, recall= 0.9
Precision difference= 0.81

可以看到在正样本非常少的情况下,PR表现的效果会更好。

原创粉丝点击