前置知识指引:在学习线性回归之前,建议先掌握:
假设你是一名房地产数据分析师,老板希望你能构建一个数学模型,输入房屋的数据,就能自动预测出它的合理市场价格:
这就是经典机器学习中最基石的算法——线性回归 (Linear Regression)。我们将从简单的一元回归开始,逐步扩展到特征缩放、多元矩阵表达与正则化。
scikit-learn 官方结果精准核对。当输入特征只有一个(例如房屋面积 )时,预测输出 为一条拟合直线方程:
其中:
为了评估拟合直线的好坏,我们计算所有样本真实值 与预测值 之间差值的平方和平均数——均方误差 (MSE):
要使用梯度下降法寻找最优的 和 ,我们需要分别对 和 求偏导数:
对权重 求偏导:使用复合函数求导链式法则:
对偏置 求偏导:
| 样本 | 真实 | 预测 | 残差 | 平方残差 | 梯度积 | |
|---|---|---|---|---|---|---|
| 样本 1 | 1.0 | 2.2 | 2.00 | -0.20 | 0.0400 | -0.20 |
| 样本 2 | 2.0 | 3.8 | 3.50 | -0.30 | 0.0900 | -0.60 |
| 样本 3 | 3.0 | 6.1 | 5.00 | -1.10 | 1.2100 | -3.30 |
| 样本 4 | 4.0 | 8.5 | 6.50 | -2.00 | 4.0000 | -8.00 |
| 样本 5 | 5.0 | 9.9 | 8.00 | -1.90 | 3.6100 | -9.50 |
与上图实验室默认参数对齐:已知 5 个样本点为 。当前初始参数 ,学习率 :
在现实场景中,预测目标往往受多个特征共同影响。
当包含 个特征时,对第 个样本的预测公式扩展为:
利用线性代数,我们将全量 个样本并行打包为矩阵运算:
| 样本 | 特征 | 特征 | 真实 | 预测 | 残差 | ||
|---|---|---|---|---|---|---|---|
| 样本 1 | 1.0 | 1.0 | 3.2 | 5.50 | +2.30 | +2.30 | +2.30 |
| 样本 2 | 2.0 | 1.0 | 5.1 | 7.50 | +2.40 | +4.80 | +2.40 |
| 样本 3 | 2.0 | 2.0 | 7.8 | 10.00 | +2.20 | +4.40 | +4.40 |
| 样本 4 | 3.0 | 2.0 | 9.5 | 12.00 | +2.50 | +7.50 | +5.00 |
| 样本 5 | 4.0 | 3.0 | 13.9 | 16.50 | +2.60 | +10.40 | +7.80 |
与上图 3D 实验室默认参数对齐:前 3 个样本的特征矩阵 与真实标签 为:
把偏置 合并入权重向量(给 增加一列常数 1 构成增广矩阵),令损失函数对 的梯度为零 ,可以直接导出闭式解析解:
当特征维度 极其庞大时,矩阵求逆十分困难,我们使用梯度下降法通过多次迭代逼近最优解。
将 MSE 损失写作矩阵二次型形式 :
展开二次型:
应用矩阵求导法则(利用 与 ):
由此推出多元矩阵参数更新公式为:
已知 2 个样本的真实标签 ,模型预测值 :
在真实业务中,不同的输入特征往往具有数量级完全不同的量纲(单位)。例如“房屋面积 ”取值范围在 平方米,而“房间数 ”取值范围在 间。
如果不进行特征缩放,将会带来两大严重后果:
Z-Score 标准化通过移除均值并按标准差缩放,将特征数据转换为均值为 0、标准差为 1 的标准分布:
其中:
为特征的样本均值;
为特征的样本标准差。
核心特点:不改变原始数据的分布形状,不限制固定边界,对包含离群值 (Outliers) 的数据更加鲁棒,是基于梯度下降的回归模型首选预处理方法。
Min-Max 归一化将原始特征线性映射放缩至固定的 闭区间内部:
其中:
为特征全量样本中的最小值;
为特征全量样本中的最大值。
核心特点:强制将数据限制在 范围,输出分布界限明确;但对离群值极其敏感(若数据中存在极大值 Outlier, 极大,会导致正常数据集中在极其狭窄的 区间内)。
与上图实验室默认 3 个样本观测值 完全精确对齐:
| 特性维度 | Z-Score 标准化 (Standardization) | Min-Max 归一化 (Normalization) |
|---|---|---|
| 转换公式 | ||
| 映射范围 | 无固定边界,均值为 0,标准差为 1 | 严格限制在 闭区间 |
| 抗离群值能力 | 较强(对异常极值具备更好的容错性) | 极弱(一个极大异常值会导致整体特征压缩) |
| 首选应用场景 | 梯度下降优化算法、线性回归、逻辑回归、SVM | 神经网络激活函数输入、图像像素处理 (0-255)、kNN 距离度量 |
在机器学习中,拟合 (Fitting) 是指模型通过调整内部参数(如权重 和偏置 ),去“贴合”和“匹配”真实数据分布的过程:
当模型的特征数量过多、或者训练样本中包含噪音时,简单的线性回归极易产生过拟合 (Overfitting) 现象——权重参数 被拉得极大,模型在训练集上表现完美,但在测试集上预测惨败。
为了防止参数权重膨胀,我们在损失函数中引入对参数大小的惩罚机制——正则化 (Regularization):
在 MSE 损失后加上权重向量的 L2 范数平方惩罚项:
其中 为正则化强度超参数。
在 MSE 损失后加上权重向量的 L1 范数绝对值惩罚项:
RM 平均房间数、CRIM 犯罪率、PTRATIO 师生比、LSTAT 低收入人群比例),预测目标 MEDV 为自住房价中位数;fetch_california_housing) 作为波士顿数据集的更新替代品。它包含 20,640 个街区样本,涵盖 MedInc (中位数收入)、HouseAge (房龄)、AveRooms (平均房间数) 等 8 维现代特征,是衡量回归模型拟合能力的标准基准。下方的代码展示了如何加载经典房价 Benchmark 数据集,完成数据切分、Z-Score 特征标准化、线性回归模型拟合(OLS),并对比 Ridge (L2) 与 Lasso (L1) 正则化模型的效果:
在经典 Kaggle 竞赛 / UCI 官方共享单车租赁数据集 (Bike Sharing Dataset) 中,城市共享单车每日总租赁量 (cnt)受到季节(season)、天气状况(weathersit)、体感温度(atemp)、湿度(hum)与风速(windspeed)等多个关键特征的显著影响。
本实验同时提供仓库内的小样例与原始完整数据入口:先用小样例快速跑通流程,再按需下载完整数据做更可靠的评估。
python bike_sharing_lab.py day.csv;字段与本实验使用的日粒度数据兼容。season: 季节 (1:春, 2:夏, 3:秋, 4:冬)workingday: 1 为工作日,0 为周末/节假日weathersit: 天气状况 (1:晴朗/多云, 2:薄雾, 3:小雪/小雨, 4:大雨暴雪)temp: 归一化气温 (Celsius / 41)hum: 归一化湿度 (Humidity / 100)windspeed: 归一化风速 (Windspeed / 67)cnt: 目标预测变量 (共享单车日总租赁量 count)| 错误现象 / 异常类型 | 常见原因 | 标准排查与处理方式 |
|---|---|---|
梯度下降收敛极慢或提示 ValueError: Input contains NaN | 未对跨数量级特征进行特征缩放(如面积 50-300 与房间数 1-5),梯度轨迹在狭长峡谷中震荡 | 训练模型前必须先使用 StandardScaler (Z-Score) 或 MinMaxScaler 对输入特征 进行缩放 |
| Min-Max 缩放后多数数据全挤在 0 附近 | 原始特征中存在极大的异常值 (Outliers),导致 分母极大 | 优先使用 StandardScaler (Z-Score) 替代 MinMaxScaler,或先对异常值进行截断处理 |
LinAlgError: Singular matrix | 特征存在高度多重共线性,或样本量少于特征数 (),导致矩阵不可逆 | 选用梯度下降法求解、使用 np.linalg.pinv 伪逆,或者加入 Ridge (L2) 正则化 |
| Lasso 正则化后所有权重全被压缩为 0 | 正则化超参数 (alpha) 设置过大,惩罚项强度掩盖了数据拟合 | 将 调小几个数量级(如从 10.0 调小至 0.01),使用交叉验证网格搜索选择超参数 |
scikit-learn 模型进行验证核对。共 4 道精选测试题 · 答题进度已自动保存
完成本节学习后,你已经打通了从一元线性回归、特征缩放、正规方程与梯度下降到 L1/L2 正则化的完整闭环!