文章目录

  • 分类
    • 什么是分类?
  • 分类模型的评价
    • 混淆矩阵(Confusion Matrix)
    • 1. Accuracy(正确率)
    • 2. Precision(精度)
    • 3. Recall(召回率)
    • 4. F1值(F值的特殊情况)
    • 5. Specificity(特异度)
    • 6. Kappa
    • 多分类模型下评价指标的改变
  • ROC曲线和AUC
    • Code

分类

什么是分类?

一种典型的有监督学习问题

分类模型的评价

混淆矩阵(Confusion Matrix)

机器学习中存在各种不同的分类模型,如逻辑回归、决策树、朴素贝叶斯和支持向量机等。对于不同的分类模型性能的评价方法是相通的。 在分类问题中,对于每一个样本存在两种角度的标签: 一个是样本真实的标签,一个是模型预测的标签。根据每一个样本的两种角度的标签,可以得到一个混淆矩阵(Confusion Matrix)。

混淆矩阵如下:**

预测结果 预测结果
0 1
实际答案 0 TN FP
实际答案 1 FN TP

1代表Positive,0代表Negative

明显地,对于二分类问题,每一个样本可以划分为以下四种类型:

  • 真正例(TP, True Positive): 样本真实类别是正向的,模型预测的类别也是正向的;
  • 真负例(TN, True Negative): 样本真实类别是负向的,模型预测的类别也是负向的;
  • 假正例(FP, False Positive): 样本真实类别是负向的,模型预测的类别是正向的;
  • 假负例(FN, False Negative): 样本真实类别是正向的,模型预测的类别是负向的。

(Positive,Negative由预测值决定,然后分出真假)

import numpy as np
from sklearn.metrics import confusion_matrixy_pred = np.array([1,0,0,1,1,1])
y_true = np.array([0,1,1,0,0,1])
confusion_matrix(y_true,y_pred) #Get the Confusion Matrix# Get the return values
(tn, fp, fn, tp) = confusion_matrix(y_true,y_pred).ravel()
print(tn, fp, fn, tp)# 0 3 2 1

上面的代码实际得到了一个如下的混淆矩阵:

sklearn提供了许多的测量函数实现了多种分类学习器和回归学习器的评价指标计算。这些函数都包含在 metrics 模块中。对于 分类模型而言,包括了F1值 metrics.f1_score 、正确率 metrics.accuracy_score 、召回率 metrics.recall_sco re 和AUC值 metrics.roc_auc_score 等。

1. Accuracy(正确率)

表示模型预测正确的样本比例,定义如下:

Accuracy=TP+TNTN+FN+FP+TP\Large\text{Accuracy} = \frac{TP + TN}{TN + FN + FP + TP} Accuracy=TN+FN+FP+TPTP+TN​

Accuracy在样本不均衡时不是一个很好的度量模型好坏的指标

例如在文本情绪分类数据集中,正面的样本占比为90%,负 面的内容占比只有10%(不均衡)。如果一个分类模型将所有的样本都预测为正面,这个模型显然是一个无用的模型,但是它的正确率却可以达到90%。

对于不平衡数据,精度和召回率是比正确率更好的性能评价指标。

2. Precision(精度)

精度是指正确预测的正样本占所有预测为正样本的比例,定义如下:

Precision=TPTP+FP\Large\text{Precision} = \frac{TP}{TP + FP}Precision=TP+FPTP​

可以形象理解为你认为或预测是对的中,有多少的确是对的

3. Recall(召回率)

召回率,又称灵敏度和命中率,是指正样本中(实际答案为正),被正确预测的比例,定义如下:

Recall=TPTP+FN\Large\text{Recall} = \frac{TP}{TP + FN}Recall=TP+FNTP​

可以形象理解为本来就是对的中,你找回了多少对的

通常精度和召回率是负相关的,实际应用中高精度往往对应低召回率,反之亦然。我们需要根据实际问题场景和需求来在精度和召回率指标上做权衡。

但单独考虑精度和召回率是片面的,两种需要综合考虑。在二分类问题中,可以定义一个综合考虑精度和召回率的指标,这个指标为F值。

4. F1值(F值的特殊情况)

广义上的F值定义如下:

Fβ=(1+β2)Precision×Recallβ2×Precision+Recall\Large\ F_\beta = (1 + \beta^2)\frac{Precision \times Recall}{\beta^2 \times Precision + Recall} Fβ​=(1+β2)β2×Precision+RecallPrecision×Recall​

其中β\large\betaβ是正数,其作用是调整精度和召回率的权重。 β\large\betaβ越大,召回率的权重更大; β\large\betaβ越小,则精度的权重更大

当β=1\large\beta=1β=1时,精度和召回率的权重一样,此时称为F1值,它是精度和召回率的调和平均数。

F1=2×Precision×RecallPrecision+Recall\Large\text{F1} = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}F1=Precision+Recall2×Precision×Recall​

化成以下形式便于理解:

F1=21Precision+1Recall\Large\text{F1} = \frac{2 }{ \frac{1}{\text{Precision}} + \frac{1}{\text{Recall}} }F1=Precision1​+Recall1​2​

5. Specificity(特异度)

特异度是在负样本中正确预测的概率,换言之,负样本的召回率

Specificity=TNTN+FP\Large\text{Specificity} = \frac{TN}{TN + FP}Specificity=TN+FPTN​

6. Kappa

Kappa是用于计算分类精度和评价一致性的指标。

多分类模型下评价指标的改变

对于混淆矩阵,由于多分类问题,矩阵从2×22\times22×2的结构变成了n×n(n>2)n\times n(n>2)n×n(n>2)。也不可以直接通过TP,TN,FP,FN来标注各单元格所 代表的含义。

与二分类模型相比, 可以直接适用的评价指标包括准确度,而其他的评价指标,都需要进行一定程度的转化。

多分类模型评价指标中,精度、召回率都是计算的平均值

将每一个分类都当作是正样本,非此分类皆为负样本,转化为一个多次的二分类模型。计算每一个二分类模型的精准率和召回率,取平均数得到多分类模型的平均精准率和召回率,再通过调和平均计算出F1值。同理,特异度也是这种计算方式。

ROC曲线和AUC

ROC曲线和AUC是一个从整体上评价二分类模型优劣的指标,其中AUC(Area Under the Curve)是ROC曲线(Receiver operating characteristic curve,“受试者工作特征曲线”)与横轴之间的面积。

相比于其他评价指标,ROC曲线具有一定的稳定性,它不会因为正负样本分布的变化而产生不同的曲线

ROC曲线通过***真阳率***(True Positive Rate, TPR)和***假阳率***(False Positive Rate, FPR)两个指标进行绘制。真阳率又称为敏感度(Sensitivity),表示真实标签为正向的样本中,模型预测也是正向的样本比例(和召回率一样)。假阳率表示真实标签是负向的样本中,模型预测为正向的比例。真阳率和假阳率的定义为:

TPR=TPTP+FN\Large\ TPR = \frac{TP}{TP + FN} TPR=TP+FNTP​

FPR=FPFP+TN\Large\ FPR = \frac{FP}{FP + TN} FPR=FP+TNFP​

假设预测概率大于阈值的样本才为正例,那么通过调整模型的阈值,我们可以得到一组TPR和FPR。以FPR作为横轴,TPR作为纵 轴,可以针对一个模型绘制ROC曲线。ROC曲线下面积(Area Under Curve, AUC)代表了模型性能的好坏。完美的模型在ROC曲线的(0,1)。通过调整阈值,ROC曲线是经过(0,0),(0, 1),(1,1)三个点的曲线,此时ROC曲线下面积为1。一个示例的ROC曲线如下图所示:

一个随机模型在ROC曲线中是一条直线,AUC=0.5

  • AUC = 0.5: 说明模型与偶然造成的结果效果差不多 ,模型没有预测价值

  • AUC < 0.5: 说明模型不如偶然造成的效果,但只要总是反预测而行,就优于随机猜测

  • AUC > 0.5: 说明模型较好

  • AUC > 0.75:一般来说,可以认为是一个比较理想的模型

  • AUC = 1.0: 是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器

    (完美的模型:通过调整阈值,ROC曲线是经过(0,0),(0,1),(1,1)(0,0),(0, 1),(1,1)(0,0),(0,1),(1,1)三个点的曲线,此时ROC曲线下面积为1)

在多分类模型下,ROC和AUC并不适用,虽然有研究者提出在多分类下的ROC曲线和AUC,但实际应用的较少。 与二分类模型相比, 可以直接适用的评价指标包括准确度,而其他的评价指标,都需要进行一定程度的转化。

Code

import numpy as np
from sklearn.metrics import roc_curve
from sklearn.metrics import confusion_matrixy = np.array([1, 1, 2, 2])
scores = np.array([0.1, 0.4, 0.35, 0.8])# Get the FPR,TPR
fpr, tpr, thresholds = roc_curve(y, scores ,pos_label=2)print('fpr:',fpr)
print('tpr:',fpr)
print('thresholds:',thresholds)

分类(Classification)相关推荐

  1. 分类(classification)是认知的基础、分类步骤及主要算法、分类与回归的区别、分类过程

    分类(classification)是认知的基础.分类步骤及主要算法.分类与回归的区别.分类过程 目录

  2. 机器学习笔记04:逻辑回归(Logistic regression)、分类(Classification)

    之前我们已经大概学习了用线性回归(Linear Regression)来解决一些预测问题,详见: 1.<机器学习笔记01:线性回归(Linear Regression)和梯度下降(Gradien ...

  3. 机器学习12:分类 Classification

    分类(Classification)是一个有监督的学习过程,目标数据集(示例集)中具有的类别是已知的,分类过程需要做的就是把每一条记录归到对应的类别下.由于必须事先知道各个类别的信息,并且所有待分类的 ...

  4. 回归(regression)与分类(classification)的区别

    回归与分类的不同 1.回归问题的应用场景 2.分类问题的应用场景 3.如何选择模型 回归与分类的不同 1.回归问题的应用场景 回归问题通常是用来预测一个值,如预测房价.未来的天气情况等等,例如一个产品 ...

  5. 分类 Classification

    文章目录 分类 什么是分类? 前置知识 点到平面距离 最大似然估计 训练集的矩阵表示 感知机(Perceptron) 支持向量机(Support Vector Machines) 核方法与核函数 逻辑 ...

  6. 分类Classification:决策树Decision Tree

    目录 分类的定义 决策树Decision Tree 混乱衡量指标Gini index 决策树的特点 分类的定义 分类:建立一个学习函数(分类模型)将每个属性集合(x1,x2,...xn)对应到一组已定 ...

  7. 独家思维导图!让你秒懂李宏毅2020机器学习(二)—— Classification分类

    独家思维导图!让你秒懂李宏毅2020机器学习(二)-- Classification分类 在上一篇文章我总结了李老师Introduction和regression的具体内容,即1-4课的内容,这篇我将 ...

  8. KNN 分类算法原理代码解析

    作者 | Charmve 来源 | 迈微AI研习社 k-最近邻算法是基于实例的学习方法中最基本的,先介绍基x`于实例学习的相关概念. 基于实例的学习 已知一系列的训练样例,很多学习方法为目标函数建立起 ...

  9. 随机森林RandomForest挖掘生物标记预测分类

    随机森林简介 如果读者接触过决策树(Decision Tree)的话,那么会很容易理解什么是随机森林.随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习 ...

  10. RandomForest:随机森林预测生物标记biomarker——分类

    随机森林简介 R randomForest包 安装与加载 分类Classification 分类结果主坐轴分析 随机选取2/3预测,1/3验证 无监督分类 分层抽样 Reference 猜你喜欢 写在 ...

最新文章

  1. 卷积神经网络CNN——图像卷积与反卷积(后卷积,转置卷积)
  2. 50行Python代码 就能轻松实现中英文对接翻译小程序
  3. Linux内核学习的一些国外网站
  4. WebCore中的渲染机制(二):块和内嵌(Blocks and Inlines)
  5. 阿里云天池 金融风控训练营Task1 广东工业站
  6. ansys 内聚力模型_《ANSYS Workbench有限元分析实例详解(静力学)》,9787115446312
  7. RHEL7 -- 使用Chrony设置时间与时钟服务器同步
  8. C# async/await 使用总结
  9. nodemon运行 提示错误:无法加载文件 C:\Users\gxf\AppData\Roaming\npm\nodemon.ps1,因为在此系统上禁止运行脚本。...
  10. 后缀的形容词_4.1.3后缀or形容词比较级【p78】
  11. 在 SELECT 查询中使用分组集
  12. 前台登录账号改变时迅速清空记录的登录密码
  13. 利用不共线三点求解并联机构动系在定系中的位姿的另一种解法
  14. FPGA基础知识21(PL控制PS端DDR的设计)
  15. 1236mysql,MySQL1236错误的恢复
  16. 流程表结构设计第二版
  17. 统计年鉴 excel
  18. Axure RP8 授权码亲测可用
  19. Js节流(防连点)和防抖动
  20. eclipse不自动弹出提示(alt+/快捷键失效)

热门文章

  1. 4.数据库的连接(编目)-远程连接
  2. andorid关于selector更换图片失效
  3. 使用VS2010开发一个简单的自定义字段类型
  4. 约数国王c语言,求最大公约数问题
  5. JDK1.8 LinkedHashMap源码
  6. linux 修改普通用户的 max user process
  7. 随机产生13个0~51不同的随机数 -思想(定义参考系)
  8. [zz]cocos2d-x如何优化内存的应用
  9. linux shell 常用参数 $? $# 等等解析
  10. lan口配置 petalinux_PetaLinux开发文档