分类指标

评估结果用于反应模型的好坏,必须设计合适的评估指标来测量该模型的好坏。模型的好坏是相对的,使用不同的评估指标对模型的判定会得到不一样的结果。
评估指标根据任务类型可以分为:分类指标、回归指标、聚类指标和排序指标等,本文主要关注分类指标。
分类的评价指标一般是分类准确率(accuracy):对于给定的数据集,分类正确的样本数与总的样本数之比。准确率在二分类与多分类都能应用。
对于二分类常用的指标为精确率(precision)与召回率(recall)。


混淆矩阵

根据上图的混淆矩阵可以得出精确率与召回率的定义:
TP—将正类预测为正类的样本数;
FN—将正类预测为负类的样本数;
FP—将负类预测为正类的样本数;
TN—将负类预测为负类的样本数;
精确率定义为:
P = \frac{TP}{TP + FP}
召回率定义为:
R = \frac{TP}{TP + FN}
精确率可以理解为在所有预测为正类这个事件的准确率有多高,召回率可以理解为真正的正类有多少被挑选了出来。理想情况下,精确率和召回率都是越高越好,但是事实一般相反,精确率高的时候,召回率低;召回率高的时候,精确率低。因此需要结合实际业务看更关注哪一个指标来判定模型好坏,为了达到更好效果,设计了一些综合考虑精确率与召回率的指标,如$F_1$值,$F_1$值是精确率和召回率的调和平均值:
\frac{2}{F_1} = \frac{1}{P} + \frac{1}{R}
精确率和召回率都高时,F_1值也会高。

ROC与AUC

[ROC曲线]作为常用的二分类评价指标,其全称为接收者操作特征曲线(Receiver Operating Characteristic)。该曲线纵坐标真正率(TPR),横坐标为假正率(FPR),其定义如下:
TPR = \frac{TP}{TP + FN}
FPR = \frac{FP}{FP + TN}
则ROC曲线位于横纵坐标阈值都为0-1之间,因此首先考虑4个特殊点(0,0)、(1, 1)、(0, 1)、(1, 0)。(0, 0)点表示TPR=FPR=0,即TP=FP=0,表示该分类器将所有样本都分为负类。同理,(1, 1)表示分类器将所有样本都分类为正类。(0, 1)点表示:FPR=0,TPR=1;意味着FP=0,FN=0,这样就是一个完美的分类器,正负类都分类完全正确。(1, 0)点表示TP=0, TN=0,这就是最糟糕的一个分类器,完美错过所有正确答案。综上,ROC曲线上的点越靠近左上方,那么该分类器就越好。

制作ROC曲线

每一对TPR与FPR值可以描绘出一个点,为了得到一条ROC曲线,需要调整不同的预测概率,来得到不同TPR于FPR值对,这样就可以得到一条ROC曲线。AUC(Area under the Curve of ROC)即ROC曲线下的面积,取值越大说明正确率越高。

sklearn包关于分类指标的API

sklearn.metrics模块实现了一些loss, score以及一些工具函数来计算分类性能。
一些二分类(binary classification)使用的case:

  • matthews_corrcoef(y_true, y_pred):Matthews相关系数,用于度量二分类的质量
  • precision_recall_curve(y_true, probas_pred):P-R曲线
  • roc_curve(y_true, y_score[, pos_label, …]):ROC曲线
    一些多分类(multiclass)使用的case:
  • confusion_matrix(y_true, y_pred[, labels]):混淆矩阵
  • hinge_loss(y_true, pred_decision[, labels, …])
    一些多标签(multilabel)的case:
  • accuracy_score(y_true, y_pred[, normalize, …]):准确率
  • classification_report(y_true, y_pred[, …]):分类报告,包含精确率、召回率等。
  • f1_score(y_true, y_pred[, labels, …]):F_1
  • fbeta_score(y_true, y_pred, beta[, labels, …])
  • hamming_loss(y_true, y_pred[, classes])
  • jaccard_similarity_score(y_true, y_pred[, …])
  • log_loss(y_true, y_pred[, eps, normalize, …]):logistic回归loss,或者交叉熵loss(cross-entropy loss),用于概率估计。
  • precision_recall_fscore_support(y_true, y_pred)
  • precision_score(y_true, y_pred[, labels, …])
  • recall_score(y_true, y_pred[, labels, …])
  • zero_one_loss(y_true, y_pred[, normalize, …])
    还有一些可以同时用于二标签和多标签(不是多分类)问题:
  • average_precision_score(y_true, y_score[, …])
  • roc_auc_score(y_true, y_score[, average, …])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容