前面两篇介绍了分类模型评估的两类方法,准确率分析和损失分析,
本篇介绍的杰卡德相似系数和马修斯相关系数为我们提供了不同的角度来观察模型的性能,
尤其在不平衡数据场景中,它们更能体现出其独特的价值。
接下来,让我们一起了解这两个评估指标的原理与特点。
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. 总结
总的来说,杰卡德相似系数和马修斯相关系数为我们提供了更全面、更深入的分类模型性能评估视角。
尤其是在处理不平衡数据集时,这两个指标的表现尤为突出。
杰卡德相似系数从集合相似度的角度展现了模型的预测准确性,
而马修斯相关系数则综合考虑了各类别的预测情况,为模型的整体性能给出了更为准确的反馈。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容