为了账号安全,请及时绑定邮箱和手机立即绑定

分类模型的评估(三)

标签:
机器学习

针对二分类问题,我们分别讨论了

  • 评估某个给定分类结果的指标:查准率(Precision)、查全率(Recall)以及F-score

  • 综合评估分类模型整体效果的指标:ROC曲线-AUC值

这篇文章将借助一个具体的例子来讨论上述指标的代码实现(使用Python)

一、什么是Python

Python是一门计算机编程语言,它在数据科学领域的应用极其广泛,具体的江湖地位可用图1来表示。

webp

图1

限于篇幅,Python的安装和语法介绍在此就不展开了,有需要的同学可以参考这个网页

其实我在这里单列一节出来讲Python,主要是为了展示我画的图1。

二、数据集以及模型简介

为了更具体地讨论实现,我们使用美国个人收入的普查数据来搭建模型(源自美国加州大学欧文分校,点击这里下载)。数据中具体的变量以及说明如表1所示。

webp

表1

需要被预测的年收入分类(label)是一个二元变量,因此使用逻辑回归来解决这个二分类问题。另外为了建模方便,我们在这里只使用数值型自变量。

注意:本篇文章的完整代码这里

三、Precision,Recall以及F-score

针对一个给定的预测结果,Precision,Recall以及F-score的实现十分简单,如下所示。其中参数“pred”是模型的预测结果、“label”是真实结果、beta是F-score的beta权重。

import numpy as npdef PrecisionRecallFscore(pred, label, beta=1):
    """
    计算预测结果的Precision, Recall以及Fscore
    """
    bins = np.array([0, 0.5, 1])
    tp, fp, fn, tn = np.histogram2d(label, pred, bins=bins)[0].flatten()
    precision = tp / (tp + fp)
    recall = tp / (tp + fn)
    fscore = (1 + beta ** 2) * precision * recall / (beta ** 2 * precision + recall)    return precision, recall, fscore

由于逻辑回归的直接预测结果是类别1的概率,即,而最终预测结果与人为选择的阈值 有关,具体的如公式(1)所示。

\hat{y_i} = \begin{cases}1, \hat{P}(y_i = 1) > \alpha \\0, else \end{cases}\tag{1}

那么这三个指标随着\alpha的变动情况如图2所示。图中的结果与《分类模型的评估(一)》中的讨论是一致的。

webp

图2

另外对于一个给定的阈值,比如,不同的beta会使得F-score有不同的侧重点,如图3所示。

webp

图3

四、ROC曲线和AUC值

对于逻辑回归模型,ROC曲线和AUC值的实现代码也很简单,如下所示。其中参数“predProb”是预测的类别1的概率,参数“label”是真实结果。可以看到这份代码不仅针对逻辑回归,对其他评分模型也是适用的。

from sklearn import metricsdef AUC(predProb, label):
    """
    计算False positive rate, True positive rate和AUC
    """
    # 得到False positive rate和True positive rate
    fpr, tpr, _ = metrics.roc_curve(label, predProb)    # 得到AUC
    auc = metrics.auc(fpr, tpr)    return fpr, tpr, auc

将模型结果表示出来就如图4所示。

webp

图4



作者:tgbaggio
链接:https://www.jianshu.com/p/e07ce827d9d9


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消