27-如何度量分类算法的性能好坏(Scoring metrics for classification)

最近两天拥抱了北京这个城市,感觉大气粗犷,整个人都更有精神了。紫禁城好大,颐和园更大,不自量力的我买了联票,结果根本没法逛完。北京人民也热情,坐在船上,开船大爷不停招呼:这边可以拍十七孔桥了,视野好面积大;那边可以拍玉带桥了;坐着我帮你拍几张;你手托着塔,自然点没事。然后走在路上,问一个姑娘东宫门在哪呢,一个走路风风火火的大妈不打自招:就在前面右拐……北京人民的热情,足以抵御漫长的寒冬。

回来也要好好学习了,今天学习度量分类算法的性能好坏的几个重要指标:)

首先申明下缩写:P: Positive; N: Negative; TP: True Positive; FP: False Positive; TPR: True Positive Rate; TN, FN, FPR:你懂的。

1. 准确率(accuracy)

对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。

A = (TP + TN)/(P+N) = (TP + TN)/(TP + FN + FP + TN);    反映了分类器统对整个样本的判定能力——能将正的判定为正,负的判定为负。

2. 混淆矩阵(confusion matrix)

 

3. 精确率(Precision), 召回率(Recall)和F1-Measure

精确率(Precision):

PRE = TP/(TP+FP) ;  反映了被分类器判定的正例中真正的正例样本的比重。

召回率(Recall),也称为 True Positive Rate:

REC = TP/(TP+FN) ;  反映了被正确判定的正例占总的正例的比重。

F1-Measure,可以理解为精确率和召回率的几何平均:

F1 = 2 *  PRE *  REC/ (PRE+REC);

另外一个有用的函数是classification_report,它对所有分类类别(y的所有取值)都提供了精确率, 召回率, fscore计算 。

以上几个metrics特别适用于实践中经常遇到的两种情况:

1.不平衡的类别:即某一类别比其他类别出现频率高得多;

2.不对等的代价:即某一分类错误比其他分类错误需要付出更高的代价(如把癌症患者判断为非癌症,后果不堪设想)。

4. ROC & AUC

首先理解两个公式:

TPR = TP / (TP + FN)  ——  可以理解为对正例的敏感度

FPR = FP / (FP + TN)  ——  可以理解为对正例的瞎敏感度

WIKI定义:

The ROC curve is created by plotting the true positive rate (TPR) against the false positive rate (FPR) at various threshold settings.

ROC曲线画的是当threshold变化时,FPR(x)和TPR(y)的对应关系。当测试样本是正样本的概率值大于某个阈值时(常用0.5),即认为它是正样本,这里的阈值就是threshold。

举个例子:如果threshold很低(如0.1),那么很容易测试样本是正样本的概率值>0.1,因此FPR会很高(对正例太敏感),同时TPR也很高,假设 threshold=0.1时,FPR=TPR=1,可以在坐标系中画第一个点(1,1);同理,随着threshold的增大,FPR和TPR都会逐渐降低,最后甚至为0。画出的曲线形状通常如下:

如果分类器效果很好, 那么曲线应该靠近左上角(TPR大,FPR小)。

AUC(Area Under Curve)被定义为ROC曲线下的面积,显然这个面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方(对应随机猜测),所以AUC的取值范围在0.5和1之间。使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好。

下周学习决策树,干货多多,敬请期待:)

原文地址:https://www.cnblogs.com/turingbrain/p/7787992.html