混淆矩阵的定义

混淆矩阵(Confusion Matrix)是用于评估分类模型性能的表格,尤其适用于二分类问题。它展示了模型预测结果与实际标签之间的对应关系,包含四个关键指标:真正例(TP)、假正例(FP)、真负例(TN)、假负例(FN)。

混淆矩阵的结构

以二分类为例,混淆矩阵通常为2×2形式:

预测为正例预测为负例
实际为正例TPFN
实际为负例FPTN

混淆矩阵的衍生指标

基于混淆矩阵可计算以下评估指标:

  • 准确率(Accuracy):模型正确预测的比例。
    [ \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} ]
  • 精确率(Precision):预测为正例中实际为正例的比例。
    [ \text{Precision} = \frac{TP}{TP + FP} ]
  • 召回率(Recall):实际为正例中被正确预测的比例。
    [ \text{Recall} = \frac{TP}{TP + FN} ]
  • F1分数:精确率和召回率的调和平均数。
    [ F1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} ]

混淆矩阵的扩展应用

  • 多分类问题:混淆矩阵可扩展为N×N矩阵(N为类别数),对角线元素表示正确分类的样本数。
  • 阈值调整:通过调整分类阈值(如逻辑回归中的概率阈值),可优化混淆矩阵中的FP与FN平衡。

Python代码示例

使用sklearn生成混淆矩阵:

from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns

y_true = [1, 0, 1, 1, 0, 1]
y_pred = [0, 0, 1, 1, 0, 1]
cm = confusion_matrix(y_true, y_pred)

sns.heatmap(cm, annot=True, fmt='d')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()

注意事项

  • 类别不平衡:若数据中某一类别占比极高,准确率可能失效,需结合精确率或召回率分析。
  • 业务场景:不同场景对FP/FN的容忍度不同(如医疗诊断中FN代价更高)。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐