Skip to content

线性回归

本章目标

  1. 明确本分册对应的线性回归源码入口与运行方式——这是本仓库最基础的回归模型,关系透明、系数可解释。
  2. 理解当前线性回归文档各章节分别负责解释什么内容。
  3. 建立从线性模型、OLS 求解、系数解释到残差评估的整体阅读路线。

对应代码速览

组件路径说明
数据生成src/mlAlgorithms/datasets/tabular/regressionDatasets.pyRegressionDatasetFactory.loadLinearRegressionDataset() 手工合成线性房价数据
训练封装src/mlAlgorithms/training/regression/regressionModels.pytrainLinearRegressionModel(...) 封装 sklearn.linear_model.LinearRegression 训练
流水线注册src/mlAlgorithms/catalog/pipelines.pyPipelineSpec("regression.linear_regression", ...)——注册数据集、训练器、可视化配置
端到端流水线src/mlAlgorithms/workflows/regressionRunner.py完成数据切分、训练、预测、残差图和学习曲线输出

默认配置速览(来自源码)

项目当前实现
训练模型LinearRegression()——使用 scikit-learn 默认配置,无超参数
数据来源手工合成——price = 2×面积 + 10×房间数 - 3×房龄 + N(0,10²) + 50,200 样本
数据形态3 个连续特征——面积 [20,80]房间数 [1,5]房龄 [1,20]
特征预处理——当前流水线未使用标准化(数据量纲直观且关系简单)
数据切分train_test_split(test_size=0.2, random_state=42)——随机切分
评估方式残差图 + 学习曲线(scoring='r2'

线性回归与本仓库其他回归算法的定位对比

配置项线性回归决策树回归SVR
算法范式全局线性拟合——OLS 闭式解递归区域划分 + 局部常数核方法 + ε-不敏感损失
关系假设全局线性无条件假设非线性(核映射)
可解释性极强——coef_ 直接解释影响方向与大小中等——feature_importances_ 只看分裂贡献弱——支持向量难以直接解释
标准化无(当前实现)有(StandardScaler
核心输出coef_intercept_feature_importances_get_depth()support_vectors_dual_coef_
超参数数034
数据来源手工合成(关系透明)California Housing 真实数据make_friedman1 合成非线性
教学定位回归起点——建立系数直觉非线性 + 特征交互核方法 + 最大间隔

阅读路线

  1. 数学原理
  2. 数据构成
  3. 思路与直觉
  4. 模型构建
  5. 训练与预测
  6. 评估与诊断
  7. 工程实现
  8. 练习与参考文献

如何运行

示例代码

bash
python -m src.mlAlgorithms.workflows.regressionRunner --pipeline regression.linear_regression

理解重点

  • 这个命令会训练一个线性回归模型——在手工合成的房价数据上拟合线性参数。
  • 运行后会打印截距和各特征系数,并生成残差图和学习曲线。
  • 当前流程是有监督回归——price 是训练标签,模型通过最小化平方误差学习 wb

先修

小结

  • 本分册严格对应当前仓库中的线性回归源码实现——手工合成数据、OLS 拟合、系数解释、残差评估构成最基础的回归流水线。
  • 线性回归的核心特点:全局线性假设 + 闭式解 + 系数直接可解释——是回归学习的逻辑起点,也是后续正则化、SVR、决策树回归的对比基线。
  • 当前使用显式公式生成的 3 特征合成数据 + 默认 LinearRegression(),是展示"关系透明 → 系数可验证"这一教学闭环的最简配置。