模型评估指标详解:分类与回归场景

发布于:2025-03-16 ⋅ 阅读:(19) ⋅ 点赞:(0)

模型评估指标详解:分类与回归场景

一、引言

在机器学习领域,构建模型只是第一步,准确评估模型的性能才是确保模型有效性和可靠性的关键。模型评估指标能够帮助我们量化模型的表现,从而在不同的模型和参数设置之间进行比较和选择。根据任务类型的不同,模型评估指标主要分为用于分类问题的指标和用于回归问题的指标。本文将详细介绍常见的分类和回归模型评估指标的原理、应用,并给出相应的代码示例。

二、分类模型评估指标

2.1 混淆矩阵

原理

混淆矩阵是一个 C × C C\times C C×C 的矩阵( C C C 为类别数),用于展示分类模型在每个类别上的预测结果。对于二分类问题,混淆矩阵通常为 2 × 2 2\times 2 2×2 的形式,如下所示:

预测正类 预测负类
真实正类 真正例(True Positive, TP) 假负例(False Negative, FN)
真实负类 假正例(False Positive, FP) 真负例(True Negative, TN)
指标计算方法
  • 真正例(TP):模型预测为正类,且实际也为正类的样本数量。计算时,直接统计混淆矩阵中左上角的值。例如,在一个预测某种疾病是否存在的模型中,实际患病且被模型预测为患病的患者数量就是 TP。
  • 假负例(FN):模型预测为负类,但实际为正类的样本数量。对应混淆矩阵中右上角的值。在疾病预测场景中,就是实际患病但被模型预测为未患病的患者数量。
  • 假正例(FP):模型预测为正类,但实际为负类的样本数量。即混淆矩阵中左下角的值。如在疾病预测里,实际未患病却被模型预测为患病的数量。
  • 真负例(TN):模型预测为负类,且实际也为负类的样本数量。为混淆矩阵右下角的值。例如实际未患病且被模型预测为未患病的人数。
应用

混淆矩阵可以直观地展示模型在不同类别上的分类情况,帮助我们发现模型的优势和不足。例如,如果假正例较多,说明模型可能过于敏感;如果假负例较多,说明模型可能过于保守。

代码示例
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 创建决策树分类器
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)

# 预测测试集
y_pred = clf.predict(X_test)

# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)

# 可视化混淆矩阵
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.title('Confusion Matrix')
plt.show()

在这里插入图片描述

2.2 准确率(Accuracy)

原理

准确率是指模型正确预测的样本数占总样本数的比例。其计算依赖于混淆矩阵中的真正例(TP)、真负例(TN)、假正例(FP)和假负例(FN)。计算公式为:

[Accuracy=\frac{TP + TN}{TP+TN &