Skip to content

评估与诊断

本章目标

  1. 理解当前线性回归流水线的两类评估输出——残差图和学习曲线。
  2. 理解每类评估分别诊断什么——残差图看误差分布,学习曲线看泛化趋势。
  3. 明确当前流水线已实现未实现的评估项——线性回归评估以图形化诊断为主。

重点方法与概念速览

名称类型作用
plot_residuals(...)函数生成预测-真实散点图 + 残差分布图——诊断拟合质量和系统偏差
plot_learning_curve(...)函数生成训练/验证 R² 曲线——诊断样本量充足性和泛化趋势
residuals = y_true - y_pred派生量衡量每个样本的预测误差——残差图的数据源
scoring='r2'参数学习曲线使用的评分指标——R2=1(yiy^i)2(yiy¯)2

1. 残差图

参数速览

适用函数:plot_residuals(y_true, y_pred, title, dataset_name, model_name)

参数名类型说明示例取值
y_truendarray,形状 (40,)测试集真实房价y_test
y_predndarray,形状 (40,)模型预测房价model.predict(X_test)
titlestr图标题"线性回归 残差分析"
dataset_namestr输出目录名"linear_regression"
model_namestr输出文件名前缀"linear_regression"

示例代码

python
y_pred = model.predict(X_test)
residuals = y_test - y_pred

# 左图: 预测值 vs 真实值散点图(对角线 = 完美预测)
ax1.scatter(y_test, y_pred, alpha=0.6)

# 右图: 残差 vs 预测值散点图(红线 = 零残差)
ax2.scatter(y_pred, residuals, alpha=0.6)
ax2.axhline(y=0, color="r", linestyle="--")

输出

残差图

理解重点

  • 左图(预测 vs 真实):点越贴近对角线 y=y^,预测越准确。对于线性回归,在数据关系近线性的前提下,点应大致沿对角线分布。
  • 右图(残差 vs 预测):残差应围绕 0 随机分布。若残差呈现明显的曲线趋势(如 U 形),说明线性假设可能不足——数据中存在非线性关系需要捕捉。
  • 当前合成数据的关系是精确线性的(仅叠加高斯噪声),残差图通常表现规整——残差随机散开,无系统模式。这也是为什么线性回归在该数据上是最合适的模型。
  • 若残差随预测值增大而发散(漏斗形),说明存在异方差——不同预测值区间的误差方差不一致。

2. 学习曲线

参数速览

适用函数:plot_learning_curve(estimator, X, y, scoring, cv, title, dataset_name, model_name)

参数名类型说明示例取值
estimatorLinearRegression未训练的新模型实例——学习曲线内部会多次 fitLinearRegression()
Xndarray,形状 (160, 3)训练集特征X_train
yndarray,形状 (160,)训练集目标y_train
scoringstr评分指标。"r2"——R² 决定系数"r2""neg_mean_squared_error"
cvint交叉验证折数。默认 55
train_sizesndarray训练样本比例序列。默认 10 个点从 0.1 到 1.0np.linspace(0.1, 1.0, 10)

示例代码

python
plot_learning_curve(
    LinearRegression(),
    X_train,
    y_train,
    scoring="r2",
    title="线性回归 学习曲线",
    dataset_name=DATASET,
    model_name=MODEL,
)

输出

学习曲线

理解重点

  • 对于线性回归在当前数据上,学习曲线通常表现良好——因为 3 特征线性模型参数极少(4 个),160 训练样本远多于参数数,不容易过拟合。
  • 训练和验证得分应较快收敛到相近的值——两条曲线之间不应有大的间隙。
  • 如果样本量极少(如 < 20),验证曲线可能出现大幅波动——这是小样本下 CV 估计不稳定的典型表现。
  • 学习曲线和残差图回答不同问题:残差图回答"这次预测误差分布如何",学习曲线回答"样本量变化时性能如何变化"。

3. 已实现 vs 未实现的评估

参数速览

评估项状态原因
残差图已实现回归模型的核心诊断工具——可视化误差分布
学习曲线已实现诊断样本量充足性和泛化趋势
系数打印已实现训练日志中打印 coef_intercept_——可对照真实公式
MSE / MAE / RMSE / R² 数值打印未实现当前流水线侧重图形化诊断而非数值指标
交叉验证 R² 均值未实现学习曲线内部使用了 CV,但未单独输出 CV 均值
特征重要性图不适用线性回归的 coef_ 直接表达了特征影响——不需要重要性图

理解重点

  • 当前评估设计强调图形化诊断 + 系数对照——残差图看误差模式,系数对照验证 OLS 恢复精度。
  • 线性回归独有的评估优势是可以直接对照 coef_ 与真实公式——这比任何数值指标都更直观地验证模型正确性。
  • 评估章节必须以源码为准——不能将常见的回归指标(MSE/MAE)写成当前已实现。

4. 线性回归 vs 决策树回归 评估对比

评估维度线性回归决策树回归
核心可视化残差图 + 学习曲线残差图 + 特征重要性 + 学习曲线 + 树结构
模型解释coef_ + intercept_——直接对照真实公式feature_importances_——分裂贡献排名
独有诊断系数方向与大小的可验证性树结构可视化——完整规则路径
过拟合风险低——参数极少高——需显式深度约束
定量指标无显式打印无显式打印
教学价值残差 + 系数的联合解读结构 + 重要性 + 残差的交叉诊断

常见坑

  1. 只看残差图不看学习曲线——残差图只反映单次测试集表现,学习曲线揭示泛化趋势。
  2. 在关系近线性的合成数据上期待看到复杂诊断信号——线性回归在此数据上表现良好是正常的,不需要"调优"。
  3. 误以为当前流水线已输出 MSE/MAE/R² 数值——实际上仅打印了系数,数值指标需自行添加。
  4. 忽略了线性回归独有的"系数可验证"评估优势——对照 coef_[2, 10, -3] 是其他任何回归模型都没有的评估手段。

小结

  • 当前线性回归有两类评估输出(残差图 + 学习曲线)+ 一项日志输出(系数打印)——三者构成完整的诊断体系。
  • 残差图揭示"误差分布是否健康",学习曲线揭示"泛化趋势是否稳定",系数打印揭示"模型是否学到了正确的方向与大小"。
  • 线性回归独有的评估优势:coef_intercept_ 可以直接与透明生成公式对照——这是所有回归分册中唯一能进行"有标准答案验证"的评估。