sklearn基础--『分类模型评估』之系数分析

前面两篇介绍了分类模型 评估的两类方法,准确率分析损失分析

本篇介绍的杰卡德相似系数马修斯相关系数 为我们提供了不同的角度来观察模型的性能,

尤其在不平衡数据场景中,它们更能体现出其独特的价值。

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

1. 杰卡德相似系数

杰卡德相似系数Jaccard similarity coefficient)用于衡量两个集合的相似度。

在分类模型中,通常将每个类别看作一个集合,然后计算模型预测结果与实际结果之间的杰卡德相似系数。

杰卡德相似系数 能够直观地反映模型预测的准确性,并且对于不平衡数据集具有一定的鲁棒性。

它特别适用于二元分类问题,但也可以扩展到多类分类问题中。

1.1. 计算公式

J ( y , y ^ ) = ∣ y ∩ y ^ ∣ ∣ y ∪ y ^ ∣ J(y, \hat{y}) = \frac{|y \cap \hat{y}|}{|y \cup \hat{y}|} J(y,y^)=∣y∪y^∣∣y∩y^∣

其中, y y y是真实值, y ^ \hat y y^是预测值。

1.2. 使用示例

python 复制代码
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_scoreaverage参数,否则会报错。
average参数主要有以下选项:

  • binary :仅当目标 是二分类时才适用
  • micro :通过计算总的真阳性假阴性假阳性来计算全局指标
  • macro :计算每个标签的指标,并找到它们的未加权平均值
  • weighted:计算每个标签的指标,并找到其平均值,并按支持度(每个标签的真实实例数)加权
  • samples:计算每个实例的指标,并找到它们的平均值(仅对多标签分类有意义)
python 复制代码
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. 计算公式

M C C = t p × t n − f p × f n ( t p + f p ) ( t p + f n ) ( t n + f p ) ( t n + f n ) MCC = \frac{tp \times tn - fp \times fn}{\sqrt{(tp + fp)(tp + fn)(tn + fp)(tn + fn)}} MCC=(tp+fp)(tp+fn)(tn+fp)(tn+fn) tp×tn−fp×fn

关于 t p tp tp, t n tn tn, f p fp fp, f n fn fn的概念,参见下表:

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

2.2. 使用示例

python 复制代码
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. 总结

总的来说,杰卡德相似系数马修斯相关系数 为我们提供了更全面、更深入的分类模型性能评估视角。

尤其是在处理不平衡数据集时,这两个指标的表现尤为突出。

杰卡德相似系数 从集合相似度的角度展现了模型的预测准确性,

马修斯相关系数则综合考虑了各类别的预测情况,为模型的整体性能给出了更为准确的反馈。

关于分类模型的内容可参考之前的文章:

  1. sklearn基础--『监督学习』之K-近邻分类
  2. sklearn基础--『监督学习』之逻辑回归分类
  3. sklearn基础--『监督学习』之贝叶斯分类
  4. sklearn基础--『监督学习』之决策树分类
  5. sklearn基础--『监督学习』之随机森林分类
  6. sklearn基础--『监督学习』之支持向量机分类
相关推荐
船厂电气自动化ai大模型26 分钟前
AI大模型与数学|第81天 课程:正交向量、正交基、格拉姆‑施密特(Gram‑Schmidt)正交化
开发语言·数据结构·人工智能·线性代数·机器学习
FL162386312929 分钟前
电力场景变电站设备识别关键部件识别分割数据集labelme格式1660张15类别
人工智能·机器学习
Omics Pro1 小时前
上海AI Lab孙思琦×高张阳:虚拟细胞代码库智能体
数据库·人工智能·算法·机器学习·自然语言处理
hrrrrxeeeee1 小时前
文件读取→比对→风险标记,拆解采购 AI 完整工作链路
大数据·人工智能·机器学习·prompt
richard_yuu1 小时前
LMS 算法:从最小二乘到随机梯度下降,工业自适应滤波的核心
深度学习·神经网络·机器学习
β添砖java2 小时前
机器学习2 KNN算法、距离度量、特征预处理、超参数选择、手写数字、鸢尾花
人工智能·算法·机器学习
TAN-90°-2 小时前
Deep Learning for Computer Vision——Generative Models 2
人工智能·深度学习·神经网络·算法·目标检测·机器学习·计算机视觉
PNP Robotics2 小时前
【PNP具身解读】GPT6 Astra:具身智能新范式,大模型 + Franka机器人快速落地验证一、GPT6 Astra 背后的布局、数据与具身方向
人工智能·学习·机器学习·机器人
Omics Pro2 小时前
1个月2轮融资!长寿虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
程序猿在线码字3 小时前
深度学习(一)
python·深度学习·神经网络·机器学习