Skip to content

评估与诊断

本章目标

  1. 理解当前正则化回归的两类评估输出——残差图和系数图(特征重要性)。
  2. 理解近零系数计数作为正则化回归独有诊断指标的价值。
  3. 明确当前流水线已实现未实现的评估项。

重点方法与概念速览

名称类型作用
plot_residuals(...)函数生成预测-真实散点图 + 残差分布图——诊断拟合质量
plot_feature_importance(...)函数生成系数柱状图——诊断稀疏性和特征权重分布
residuals = y_true - y_pred派生量衡量每个样本的预测误差
np.sum(np.abs(coef) < 1e-3)派生量近零系数计数——正则化回归独有的稀疏性诊断

1. 残差图

参数速览

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

参数名类型说明示例取值
y_testndarray,形状 (89,)测试集真实值糖尿病病情进展
y_predndarray,形状 (89,)模型预测值各模型分别预测
titlestr图标题"Lasso 残差分析"
dataset_namestr输出目录名"regularization"
model_namestr输出文件名前缀——区分三模型"lasso", "ridge", "elasticnet"

示例代码

python
y_pred = model.predict(X_test_s)
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="--")

理解重点

  • 每个模型生成独立的残差图——可以直接对比三种正则化策略的预测误差分布。
  • 左图看整体拟合:点越贴近对角线,预测越准确。在 diabetes 数据上,三种模型的散点分布差异通常不大——因为底层都是线性模型。
  • 右图看系统偏差:残差围绕 0 随机分布为健康状态。若残差呈 U 形或漏斗形,说明线性假设可能不足。
  • 残差图回答的是"预测误差分布如何"——与系数图回答的"模型如何分配权重"是互补关系。

2. 系数图(特征重要性)

参数速览

适用函数:plot_feature_importance(model, feature_names, title, dataset_name, model_name)

参数名类型说明示例取值
model已训练的模型coef_ 属性——系数向量Lasso / Ridge / ElasticNet
feature_nameslist[str]21 个特征名——与 coef_ 一一对应["age", "sex", ..., "noise_8"]
titlestr图标题"Lasso 系数"
dataset_namestr输出目录名"regularization"
model_namestr输出文件名前缀"lasso"

理解重点

  • 系数图是正则化回归最重要的诊断工具——比残差图更具模型特异性。
  • Lasso 的系数图中应能看到部分柱状条高度为零——被清零的特征一目了然。
  • Ridge 的系数图中所有柱状条非零但整体较小——收缩效果通过系数量级体现。
  • ElasticNet 的系数图介于两者之间——部分清零 + 部分收缩。

3. 近零系数计数:正则化回归独有的诊断指标

参数速览

指标计算方式诊断含义
near_zeronp.sum(np.abs(model.coef_) < 1e-3)系数绝对值小于 0.001 的特征数
阈值 1e-3工程容差——非严格等于零避免将极小但非零的系数误判为零

示例代码

python
for name, model in models.items():
    coef = model.coef_
    near_zero = np.sum(np.abs(coef) < 1e-3)
    print(f"{name} 近零系数: {near_zero}/{len(coef)}")
    for f, c in zip(feature_names, coef):
        print(f"  {f}: {c:.3f}")

理解重点

  • 近零系数计数直接量化 L1 的稀疏化效果——Lasso 的 near_zero 应 > 0,Ridge 通常 = 0。
  • < 1e-3 而非 == 0——坐标下降结果可能存在极小但非精确零的系数。
  • 重点关注 noise_* 特征的系数是否被清零——它们理论上不应有任何非零权重。
  • 对于 bmi/bmi_corr 共线对——Lasso 可能清零其中之一,Ridge 两者均保留。

4. 三模型对比:残差图 + 系数图 + 近零计数的联合解读

参数速览

诊断维度LassoRidgeElasticNet
近零系数数——noise_* 被清零——通常为 0——介于两者之间
noise_* 系数接近零非零但很小接近零
bmi vs bmi_corr可能只保留一个两者均非零,权重分摊两者均非零但较小
残差图与 Ridge 相近——底层都是线性模型与 Lasso 相近与两者相近
可解释性最高——系数表简洁中——所有特征都参与较高——兼具筛选和分摊

理解重点

  • 三种模型在 diabetes 数据上的残差图差异通常不大——因为它们都是线性模型,预测能力相近。
  • 真正的差异在系数结构——Lasso 的系数表比 Ridge 简洁得多(噪声被清零)。
  • 正则化回归的诊断核心不是"哪个模型预测更准",而是"哪个模型以更合理的系数结构达到相近的预测精度"。
  • 如果 Lasso 的预测精度与 Ridge 相近但系数更稀疏——则 Lasso 更可取(奥卡姆剃刀原则)。

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

参数速览

评估项状态原因
残差图已实现回归模型的核心诊断——每个模型独立生成
系数图(特征重要性)已实现正则化回归最关键的诊断——系数结构可视化
系数打印 + 近零计数已实现训练日志中打印——可对照系数图验证
MSE / MAE / RMSE / R² 数值打印未实现当前流水线侧重图形化诊断而非数值指标
学习曲线未实现PipelineSpec 中学可视化列表为 []
交叉验证未实现cross_val_score 等调用

理解重点

  • 与线性回归和决策树回归不同——正则化回归没有学习曲线PipelineSpec 中学可视化为 [])。
  • 评估设计聚焦于系数结构对比——残差图看预测误差,系数图 + 近零计数看正则化行为。
  • 正则化回归独有的评估优势是可以直接观察"特征选择"——其他回归模型没有 L1 清零机制。

6. 正则化回归 vs 线性回归 vs 决策树回归 评估对比

评估维度线性回归决策树回归正则化回归
核心可视化残差图 + 学习曲线残差图 + 特征重要性 + 学习曲线 + 树结构残差图 + 特征重要性——无学习曲线
模型解释coef_ + intercept_feature_importances_coef_ + 近零计数——可验证特征选择
独有诊断系数与真实公式对照树结构可视化近零系数计数——L1 稀疏化量化
定量指标无显式打印无显式打印无显式打印
对比模式单模型诊断单模型诊断三模型横向对比——Lasso vs Ridge vs EN

常见坑

  1. 只看残差图不看系数图——正则化回归的核心诊断在系数结构,残差图只是辅助。
  2. 把"系数更稀疏"等同于"预测更准"——稀疏性与准确性是正交的评估维度。
  3. 期待 near_zeronoise_* 全部精确为零——坐标下降可能产生 1e-5 量级的极小系数,用 1e-3 阈值统一判断。
  4. 忽略三模型对比视角——单独看一个模型的系数没有意义,必须并排对比 Lasso/Ridge/ElasticNet。

小结

  • 正则化回归有两类评估输出(残差图 + 系数图)+ 一项日志输出(近零系数计数)——三者构成完整的诊断体系。
  • 系数图是正则化回归最重要的诊断工具——比残差图更能体现三种正则化策略的行为差异。
  • 近零系数计数是正则化回归独有的诊断指标——直接量化 L1 的稀疏化效果。
  • 正则化回归没有学习曲线——这是 PipelineSpec 的明确配置,与线性回归和决策树回归不同。