分类模型的评估(三)

作者: tgbaggio | 来源:发表于2018-09-13 20:51 被阅读3次

在前两篇文章里(《分类模型的评估(一)》《分类模型的评估(二)》),针对二分类问题,我们分别讨论了

  • 评估某个给定分类结果的指标:查准率(Precision)、查全率(Recall)以及F-score
  • 综合评估分类模型整体效果的指标:ROC曲线-AUC值

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

一、什么是Python

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

图1

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

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

二、数据集以及模型简介

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

表1

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

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

三、Precision,Recall以及F-score

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

import numpy as np

def 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所示。图中的结果与《分类模型的评估(一)》中的讨论是一致的。

图2

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

图3

四、ROC曲线和AUC值

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

from sklearn import metrics

def 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所示。

图4

五、广告时间

这篇文章的大部分内容参考自我的新书《精通数据科学:从线性回归到深度学习》

李国杰院士和韩家炜教授在读过此书后,亲自为其作序,欢迎大家购买。

相关文章

  • 分类模型的评估(三)

    在前两篇文章里(《分类模型的评估(一)》和《分类模型的评估(二)》),针对二分类问题,我们分别讨论了 评估某个给定...

  • 复习 - 模型测试

    一、模型测试的API总结 1、分类算法评估方式 2、回归算法评估方式 二、分类模型测试 交叉验证:(Cross V...

  • 机器学习面试题集-图解准确率,精确率,召回率

    今天进入第二章:模型评估 1. 什么是模型评估 模型训练后要对其进行评估,看模型表现如何,哪里可以改进 分类、排序...

  • 【百面机器学习】优化算法

    机器学习算法 = 模型表征 + 模型评估 + 优化算法。不同的优化算法对应的模型表征和评估指标分别为线性分类模型和...

  • 分类模型的评估

    分类模型的评估 estimator.score() 一般最常见使用的是准确率,及预测结果正确的百分比 混淆矩阵:在...

  • 模型性能评估

    目录 1、模型评估指标 2、总结 1、模型评估指标 2、总结:本文以思维导图的方式罗列了二分类中模型评估中常用的指...

  • 活学活用之运用分类模型评估的方法以及用Python实现!

    提到分类模型评估相信大家应该都不会觉得陌生(不陌生你点进来干嘛[捂脸]),本文就分类模型评估的基本原理进行讲解,并...

  • 5、sklearn模型建立及评估

    前置工作 填充数据 编码分类变量 划分数据集 模型搭建 模型评估 模型评估是为了知道模型的泛化能力,主要指标有:1...

  • 从数据的角度理解TensorFlow鸢尾花分类程序8

    接上节,本节继续分析:5,评估模型的效果: 评估指的是确定模型进行预测的效果。要确定鸢尾花分类模型的效果,需要将测...

  • 7.7 分类模型评估

    “所有模型都是坏的,但有些模型是有用的”。建立模型之后,接下来就要去评估模型,以确定此模型是否“有用”。sklea...

网友评论

    本文标题:分类模型的评估(三)

    本文链接:https://www.haomeiwen.com/subject/ammggftx.html