8.马修斯相关系数(MCC)-机器学习模型性能的常用的评估指标

一.马修斯相关系数(MCC)简介

1.1 背景和概念:

混淆矩阵: 在二分类问题中,模型的性能通常通过混淆矩阵来进行评估。混淆矩阵是一个 2x2 矩阵,其中包含了模型在测试数据上的真正例(True Positives,TP)、真负例(True Negatives,TN)、假正例(False Positives,FP)和假负例(False Negatives,FN)的数量。

准确度的局限性: 在不平衡的数据集中,即正例和负例的数量差异较大时,准确度(Accuracy)可能不是一个很好的评估指标。因为如果一个模型倾向于预测较多的样本为多数类别,那么它可能仍然具有高准确度,但在实际应用中可能并不理想。

MCC 的引入: 为了解决准确度的局限性,MCC 被引入。MCC 综合考虑了 TP、TN、FP 和 FN,通过一种方式来度量模型的分类性能,同时兼顾了不平衡数据集的问题。

1.2 公式

马修斯相关系数(Matthews Correlation Coefficient,MCC)是一种用于评估二分类模型性能的指标。它考虑了混淆矩阵中的所有四个类别(真正例、真负例、假正例、假负例)的计数,并对它们进行综合评估。MCC 的值范围从 -1 到 1,其中:

1 表示完美的预测。
0 表示模型的性能等同于随机预测。
-1 表示模型的预测完全与真实情况相反。

具体公式如下:
在这里插入图片描述其中:

TPTP 是真正例的数量(True Positives)。
TNTN 是真负例的数量(True Negatives)。
FPFP 是假正例的数量(False Positives)。
FNFN 是假负例的数量(False Negatives)。

1.3 MCC 的特性:

范围: MCC 的值范围在 -1 到 1 之间,其中 1 表示完美预测,0 表示等同于随机预测,-1 表示完全相反的预测。
适用性: MCC 尤其适用于样本不平衡的二分类问题,因为它同时考虑了各个类别的预测性能。
全面性: 与其他指标相比,MCC 更全面地考虑了分类模型在各个方面的性能,对于综合评估模型的质量提供了更全面的视角。

二.代码

在 Python 中,你可以使用 scikit-learn 库来计算马修斯相关系数。以下是一个简单的代码示例:

from sklearn.metrics import matthews_corrcoef
import numpy as np
# 生成一些示例数据
y_true = np.array([1, 0, 1, 1, 0, 1, 0])
y_pred = np.array([1, 0, 1, 0, 0, 1, 1])
# 计算马修斯相关系数
mcc = matthews_corrcoef(y_true, y_pred)
print("马修斯相关系数:", mcc)

以下是逐行实现马修斯相关系数的简单 Python 代码:

import numpy as np

# 定义混淆矩阵的计算函数
def confusion_matrix(y_true, y_pred):
    tp = np.sum((y_true == 1) & (y_pred == 1))
    tn = np.sum((y_true == 0) & (y_pred == 0))
    fp = np.sum((y_true == 0) & (y_pred == 1))
    fn = np.sum((y_true == 1) & (y_pred == 0))
    return tp, tn, fp, fn

# 计算马修斯相关系数的函数
def matthews_corrcoef(y_true, y_pred):
    tp, tn, fp, fn = confusion_matrix(y_true, y_pred)

    numerator = tp * tn - fp * fn
    denominator = np.sqrt((tp + fp) * (tp + fn) * (tn + fp) * (tn + fn))

    mcc = numerator / denominator if denominator != 0 else 0
    return mcc

# 示例数据
y_true = np.array([1, 0, 1, 1, 0, 1, 0])
y_pred = np.array([1, 0, 1, 0, 0, 1, 1])

# 计算马修斯相关系数
mcc = matthews_corrcoef(y_true, y_pred)

print("马修斯相关系数:", mcc)

此代码首先定义了一个计算混淆矩阵的函数 confusion_matrix,然后使用这个混淆矩阵计算了马修斯相关系数的函数 matthews_corrcoef。最后,使用示例数据进行演示和打印结果。请注意,这只是一个简单的实现,可能不适用于所有情况。在实际应用中,你可以使用库函数(如 scikit-learn 中的 matthews_corrcoef 函数)来更方便地计算。

三.未来发展:

  1. 集成到深度学习框架: 随着深度学习的发展,未来可能会看到更多深度学习框架集成马修斯相关系数等评估指标,使得在深度学习任务中更容易使用。

  2. 多分类问题: 马修斯相关系数主要用于二分类问题,未来可能会有更多针对多分类问题的类似指标的发展,以更好地满足不同任务的需求。

  3. 可解释性与不确定性: 随着对模型可解释性的需求增加,未来的发展可能会涉及将评估指标与模型的不确定性估计相结合,以提供更全面的性能评估。

  4. 领域特定的评估: 随着应用领域的不断扩展,可能会看到更多领域特定的版本或变种的评估指标的发展,以更好地满足特定领域的需求。

  • 29
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Algorithm_Engineer_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值