前面两篇介绍了分类模型评估的两类方法,准确率分析和损失分析,
本篇介绍的杰卡德相似系数和马修斯相关系数为我们提供了不同的角度来观察模型的性能,
尤其在不平衡数据场景中,它们更能体现出其独特的价值。

接下来,让我们一起了解这两个评估指标的原理与特点。

1. 杰卡德相似系数

杰卡德相似系数(Jaccard similarity coefficient)用于衡量两个集合的相似度。
在分类模型中,通常将每个类别看作一个集合,然后计算模型预测结果与实际结果之间的杰卡德相似系数。

杰卡德相似系数能够直观地反映模型预测的准确性,并且对于不平衡数据集具有一定的鲁棒性。
它特别适用于二元分类问题,但也可以扩展到多类分类问题中。

1.1. 计算公式

\(J(y, \hat{y}) = \frac{|y \cap \hat{y}|}{|y \cup \hat{y}|}\)
其中,\(y\)是真实值,\(\hat y\)是预测值。

1.2. 使用示例

import numpy as np
from sklearn.metrics import jaccard_score n = 100
k = 2
y_true = np.random.randint(0, k, n)
y_pred = np.random.randint(0, k, n) s = jaccard_score(y_true, y_pred)
print("jaccard score:{}".format(s)) # 运行结果:
jaccard score:0.36585365853658536

上面的示例中,是针对二分类数据(k=2)来计算杰卡德相似系数的。

如果是多分类的数据,需要设置jaccard_score的average参数,否则会报错。
average参数主要有以下选项:

  • binary:仅当目标 是二分类时才适用
  • micro:通过计算总的真阳性、假阴性和假阳性来计算全局指标
  • macro:计算每个标签的指标,并找到它们的未加权平均值
  • weighted:计算每个标签的指标,并找到其平均值,并按支持度(每个标签的真实实例数)加权
  • samples:计算每个实例的指标,并找到它们的平均值(仅对多标签分类有意义)
import numpy as np
from sklearn.metrics import jaccard_score n = 100
k = 5
y_true = np.random.randint(0, k, n)
y_pred = np.random.randint(0, k, n) s1 = jaccard_score(y_true, y_pred, average="micro")
s2 = jaccard_score(y_true, y_pred, average="macro")
s3 = jaccard_score(y_true, y_pred, average="weighted")
print("jaccard score:\nmicro:{}\nmacro:{}\nweighted:{}".format(s1, s2, s3)) # 运行结果:
jaccard score:
micro:0.0989010989010989
macro:0.09772727272727273
weighted:0.09639935064935062

上面的示例是多分类的情况,不设置 average参数的话,会报错。

2. 马修斯相关系数

马修斯相关系数(Matthews correlation coefficient)是一种用于衡量二分类模型性能的指标,
它考虑了真阳性(TP)、真阴性(TN)、假阳性(FP)和假阴性(FN)四个方面的信息。

马修斯相关系数对于不平衡数据集具有较好的适应性,并且能够综合考虑模型的真正例率和真负例率。
与准确率、召回率等指标相比,马修斯相关系数在处理不平衡数据集时更为可靠。

2.1. 计算公式

\(MCC = \frac{tp \times tn - fp \times fn}{\sqrt{(tp + fp)(tp + fn)(tn + fp)(tn + fn)}}\)

关于 \(tp\),\(tn\),\(fp\),\(fn\)的概念,参见下表:


实际结果(真) 实际结果(假)
预测结果(真) tp(true positive)真阳性 fp(false positive)假阳性
预测结果(假) fn(false negative)假阴性 tn(true negative)真阴性

2.2. 使用示例

import numpy as np
from sklearn.metrics import matthews_corrcoef n = 100
k = 2
y_true = np.random.randint(0, k, n)
y_pred = np.random.randint(0, k, n) s = matthews_corrcoef(y_true, y_pred)
print("matthews corrcoef:{}".format(s)) # 运行结果
matthews corrcoef:0.028231544780468854

上面示例中,用的随机样本数据是二分类(k=2)的,不过,马修斯相关系数对多分类数据也是支持的。

3. 总结

总的来说,杰卡德相似系数和马修斯相关系数为我们提供了更全面、更深入的分类模型性能评估视角。
尤其是在处理不平衡数据集时,这两个指标的表现尤为突出。

杰卡德相似系数从集合相似度的角度展现了模型的预测准确性,
而马修斯相关系数则综合考虑了各类别的预测情况,为模型的整体性能给出了更为准确的反馈。

【scikit-learn基础】--『分类模型评估』之系数分析的更多相关文章

  1. 分类模型评估之ROC-AUC曲线和PRC曲线

    http://blog.csdn.net/pipisorry/article/details/51788927 在样本分布及其不均匀的情况下,建议用PRC...可以看下这个精确率.召回率.F1 值.R ...

  2. 笔记︱风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本笔记源于CDA-DSC课程,由常国珍老师主讲 ...

  3. 风控分类模型种类(决策、排序)比较与模型评估体系(ROC/gini/KS/lift)

    python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...

  4. Scikit-learn:模型评估Model evaluation

    http://blog.csdn.net/pipisorry/article/details/52250760 模型评估Model evaluation: quantifying the qualit ...

  5. scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类 (python代码)

    scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import ...

  6. (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探

    一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...

  7. 『高性能模型』轻量级网络ShuffleNet_v1及v2

    项目实现:GitHub 参考博客:CNN模型之ShuffleNet v1论文:ShuffleNet: An Extremely Efficient Convolutional Neural Netwo ...

  8. 2017-2018-2 20155303『网络对抗技术』Exp9:Web安全基础

    2017-2018-2 『网络对抗技术』Exp9:Web安全基础 --------CONTENTS-------- 一.基础问题回答 1.SQL注入攻击原理,如何防御? 2.XSS攻击的原理,如何防御 ...

  9. 『高性能模型』HetConv: HeterogeneousKernel-BasedConvolutionsforDeepCNNs

    论文地址:HetConv 一.现有网络加速技术 1.卷积加速技术 作者对已有的新型卷积划分如下:标准卷积.Depthwise 卷积.Pointwise 卷积.群卷积(相关介绍见『高性能模型』深度可分离 ...

  10. 『高性能模型』轻量级网络MobileNet_v2

    论文地址:MobileNetV2: Inverted Residuals and Linear Bottlenecks 前文链接:『高性能模型』深度可分离卷积和MobileNet_v1 一.Mobil ...

随机推荐

  1. Redis系列:使用 Redis Module 扩展功能

    ★ Redis24篇集合 1 啥是Redis Module Redis Module是Redis的一种扩展模块,从 4.0版本开始,允许用户自定义扩展模块,在Redis内部实现新的数据类型和功能,使用 ...

  2. JSP | IDEA中部署tomcat,运行JSP文件,编译后的JSP文件存放地点总结

    首先保证你正常部署了Tomcat,并且正常在浏览器中运行了JSP文件. 参考博客:Here 那么Tomcat编译后的JSP文件(_jsp.class 和 _jsp.java)的存放地点: (一)一般存 ...

  3. Windows 10 修改环境变量不重启生效的解决方案

    # 表示 Win 键 #R 进入 cmd(不要使用 Listary 的 cmd 方式进入,设置不会生效) 键入 set PATH=C: 关闭窗口 同样方式打开 cmd 键入 echo %PATH%,会 ...

  4. 邀请报名|11月24日阿里云原生 Serverless 技术实践营 深圳站

    活动简介 "阿里云云原生 Serverless 技术实践营 " 是一场以 Serverless 为主题的开发者活动,活动受众以关注 Serverless 技术的开发者.企业决策人. ...

  5. 从0开发3D引擎(十三):使用领域驱动设计,从最小3D程序中提炼引擎(第四部分)

    目录 上一篇博文 下一篇博文 本文流程 回顾上文 解释基本的操作 如何在浏览器上运行index.html 开始实现 准备 建立代码的文件夹结构,约定模块文件的命名规则 模块文件的命名原则 一级和二级文 ...

  6. 基于python安装app

    一.背景 有时候我们在做Android兼容性测试时,经常会使用adb命令一台一台的安装app,比较费事. 二.实现方法 利用python命令行启动web服务器,在手机浏览器输入存放apk包的目录url ...

  7. Android Emulator 画面闪烁

    Android 虚拟机经常会出现画面闪烁,可以通过修改设置解决. 打开虚拟机之后,点击 "..." 按钮.按照下图改为 "D3D11",冷重启虚拟机就好了.

  8. java项目实战-mybatis-基本配置01-day22

    目录 0. mysql navicate链接分享 1. mvn坐标引入 2. mysql的核心配置文件 3. 返回值类型 别名 4. 将数据的配置提取配置文件 4. log4j修改日志输出 0. my ...

  9. MyBatis 系列:MyBatis 源码环境搭建

    目录 一.环境准备 二.下载 MyBatis 源码和 MyBatis-Parent 源码 三.创建空项目.导入项目 四.编译 mybatis-parent 五.编译 mybatis 六.测试 总结 一 ...

  10. 基于python开发的口罩供需平台

    基于python开发的口罩供需平台 预览地址:https://i.mypython.me 开发语言:python/django 意见反馈:net936艾特163.com