机器学习--混淆矩阵
·
混淆矩阵的定义
混淆矩阵(Confusion Matrix)是用于评估分类模型性能的表格,尤其适用于二分类问题。它展示了模型预测结果与实际标签之间的对应关系,包含四个关键指标:真正例(TP)、假正例(FP)、真负例(TN)、假负例(FN)。
混淆矩阵的结构
以二分类为例,混淆矩阵通常为2×2形式:
| 预测为正例 | 预测为负例 | |
|---|---|---|
| 实际为正例 | TP | FN |
| 实际为负例 | FP | TN |
混淆矩阵的衍生指标
基于混淆矩阵可计算以下评估指标:
- 准确率(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代价更高)。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)