您的位置:首页 > 其它

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

2017-08-29 17:19 351 查看
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表现的效果会更好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐