马修斯相关系数MCC简介

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 在评估机器学习模型的性能时,F1score都被首选指标。在本文中,我们将介绍一个值得更多关注和认可的替代度量:马修斯相关系数(MCC)。

在评估机器学习模型的性能时,F1score都被首选指标。在本文中,我们将介绍一个值得更多关注和认可的替代度量:马修斯相关系数(MCC)。

F1score通过协调准确率和召回率来计算,旨在在两者之间取得平衡。但是假设我们有一个具有以下混淆矩阵的数据集:

在这种情况下,数据集代表了一种罕见疾病的医学测试,只有少量正例。混淆矩阵表明该模型具有高的真反例(TN)率,但具有低的真正例(TP)率。以下是精确度、召回率和F1分数的计算结果:

  • Precision = TP / (TP + FP) = 25 / (25 + 10) ≈ 0.714
  • Recall = TP / (TP + FN) = 25 / (25 + 5) = 0.833
  • F1 Score = 2 (Precision Recall) / (Precision + Recall) ≈ 0.769

F1的成绩在0.769左右,这似乎是一个合理的表现。但是少量遗漏的正例也可能对现实世界产生重大影响。

所以我们引入一个新的指标:马修斯相关系数(Matthews Correlation Coefficient,MCC)

马修斯相关系数MCC

马修斯相关系数 Matthews coefficient 是一种用于评估二元分类模型性能的指标,特别适用于处理不平衡数据集。它考虑了真正例(TP)、真反例(TN)、假正例(FP)和假反例(FN),提供一个能够总结分类质量的单一数值。

MCC的取值范围在-1到+1之间,其中:

  • +1 表示完美预测
  • 0 表示随机预测
  • -1 表示预测与实际观察完全不一致

MCC的计算公式为:

在这个公式中:

  • TP:真正例(正确预测的正例)
  • TN:真反例(正确预测的负例)
  • FP:假正例(错误预测的正例)
  • FN:假反例(错误预测的负例)
  • sqrt:平方根

MCC考虑了所有四个值(TP、TN、FP、FN),因此适用于存在类别不平衡的数据集,其中一个类别可能比另一个类别更常见。特别是希望评估模型性能而不受类别分布影响时,MCC非常有用。

根据上面的例子,我们的MCC计算结果为:

 MCC = (25 * 9000 - 10 * 5) / sqrt((25 + 10) * (25 + 5) * (9000 + 10) * (9000 + 5))
 MCC ≈ 0.517

MCC值约为0.517。

在实践中,较高的MCC值表示更好的性能,+1 是理想的得分。通常情况下,大于0.5的值被认为是良好的,约为0的值表示随机性能。负值则暗示性能较差或模型比随机猜测还要差。

与F1score的区别

  1. 定义和计算方式:- MCC 是一个综合性能指标,考虑了真正例、真反例、假正例和假反例,通过一个复杂的公式计算得出。- F1 分数是精确率(Precision)和召回率(Recall)的调和平均值,表示了模型在平衡了预测的精确性和覆盖率后的表现。
  2. 权衡不平衡数据集:- MCC 可以在不平衡的数据集中提供更准确的性能评估,因为它同时考虑了四个分类结果,包括真反例和真正例。- F1 分数也考虑了不平衡数据集,但主要关注了模型的精确率和召回率之间的权衡。
  3. 优点和适用场景:- MCC 对于类别不平衡的情况和样本量较小的情况下更有优势,因为它在评估性能时考虑了所有四个分类结果,减少了结果的随机性。- F1 分数在关注模型能够正确识别正例的情况下也保持较好的表现,适用于一些需要平衡精确率和召回率的场景。
  4. 解释性:- MCC 的取值范围在-1到+1之间,更容易解释。+1 表示完美预测,-1 表示完全不一致,0 表示随机。- F1 分数的取值范围在0到1之间,也很容易解释。1 表示完美的精确率和召回率平衡。

指标选取

马修斯相关系数(Matthews Correlation Coefficient,MCC)和 F1 分数(F1 Score)都是用于评估二元分类模型性能的指标,但它们从不同的角度考虑了模型的预测结果。

如果数据集存在严重的类别不平衡,并且想要一个更全面的性能评估指标,那么 MCC 可能更合适。如果只关心模型的精确率和召回率的平衡,而不太关心真反例和真正例的比例,那么 F1 分数可能更适合。

https://avoid.overfit.cn/post/935db4fa639d4fbfbfe9ef425ce73fbc

目录
相关文章
|
11月前
泊松分布简要介绍
泊松分布简要介绍
259 0
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
|
6月前
|
数据处理
R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数
R语言GARCH族模型:正态分布、t、GED分布EGARCH、TGARCH的VaR分析股票指数
|
6月前
|
存储 移动开发 Serverless
使用R语言进行时间序列(arima,指数平滑)分析(下)
使用R语言进行时间序列(arima,指数平滑)分析
|
6月前
|
数据可视化 算法 数据挖掘
【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福指数可视化|数据分享(下)
【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福指数可视化|数据分享
|
6月前
|
数据可视化 算法 数据挖掘
【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福指数可视化|数据分享(上)
【视频】KMEANS均值聚类和层次聚类:R语言分析生活幸福指数可视化|数据分享
|
6月前
|
算法 数据挖掘 Go
R语言k-Shape时间序列聚类方法对股票价格时间序列聚类
R语言k-Shape时间序列聚类方法对股票价格时间序列聚类
|
6月前
|
存储 Serverless
使用R语言进行时间序列(arima,指数平滑)分析(上)
使用R语言进行时间序列(arima,指数平滑)分析
|
6月前
|
C语言
使用R语言做极大似然估计实例
使用R语言做极大似然估计实例
|
6月前
|
数据可视化 Serverless
R语言ARMA-GARCH-COPULA模型和金融时间序列案例
R语言ARMA-GARCH-COPULA模型和金融时间序列案例
下一篇
无影云桌面