1. 线性回归基础概念与数学表达
线性回归是机器学习中最基础且广泛应用的算法之一,它通过建立输入特征与输出目标之间的线性关系模型来进行预测。在实际应用中,从房价预测到用户行为分析,线性回归都发挥着重要作用。
线性模型的基本形式可以表示为: h(x) = wᵀx + b 其中w是权重向量,b是偏置项。为了简化表达,我们通常会将偏置项b并入权重向量,通过在特征向量x中增加一个值为1的维度来实现。因此扩展后的模型表达式为: h(x) = wᵀx
平方损失函数(又称L2损失)的数学表达式为: ℓ(w) = (1/N)∑(wᵀxₙ - yₙ)² 这个损失函数衡量了模型预测值与真实值之间的差异程度。选择平方损失的原因主要有三点:
- 数学性质良好,便于求导和优化
- 对大误差给予更高惩罚,对小误差相对宽容
- 对应了高斯噪声假设下的最大似然估计
在实际应用中,当特征量纲差异较大时,建议先对数据进行标准化处理,这可以显著提高模型收敛速度和稳定性。
2. 最小二乘法解析解
2.1 正规方程推导
最小二乘法的核心思想是通过最小化平方损失函数来求解最优权重w*。我们可以通过求导并令导数为零来获得解析解。
对损失函数求梯度: ∇ℓ(w) = (2/N)Xᵀ(Xw - Y)
令梯度为零,得到正规方程: XᵀXw = XᵀY
当XᵀX可逆时,最优解为: w* = (XᵀX)⁻¹XᵀY
这个解被称为最小二乘估计量,具有以下性质:
- 是无偏估计量
- 在满足高斯-马尔可夫定理条件下是最优线性无偏估计(BLUE)
- 计算复杂度为O(p³),其中p是特征维度
2.2 数值稳定性问题
在实际计算中,XᵀX可能接近奇异矩阵,导致求逆不稳定。常见的解决方案包括:
添加L2正则化(岭回归): w* = (XᵀX + λI)⁻¹XᵀY
使用奇异值分解(SVD): X = UΣVᵀ w* = VΣ⁺UᵀY
QR分解方法: 将X分解为QR,其中Q是正交矩阵,R是上三角矩阵 w* = R⁻¹QᵀY
当特征数量超过样本数量时,XᵀX必然不可逆。这时必须使用正则化或其他降维方法。
3. 梯度下降优化方法
3.1 标准梯度下降算法
当数据规模较大或特征维度很高时,解析解的计算成本可能过高。这时可以使用迭代优化方法,如梯度下降:
基本更新规则: w_{t+1} = w_t - η∇ℓ(w_t)
其中η是学习率,控制每次更新的步长。选择合适的学习率至关重要:
- 太大:可能导致震荡甚至发散
- 太小:收敛速度过慢
实践中常用的学习率调整策略:
- 固定学习率:简单但需要仔细调参
- 学习率衰减:如η_t = η₀/(1+kt)
- 自适应方法:如AdaGrad、Adam等
3.2 随机梯度下降(SGD)
标准梯度下降每次迭代需要使用全部训练数据计算梯度,计算成本高。随机梯度下降每次随机选取一个样本计算梯度:
w_{t+1} = w_t - η∇ℓ(w_t; x_i,y_i)
SGD的优点:
- 每次迭代计算量小
- 可以online学习
- 可能跳出局部极小值
SGD的缺点:
- 收敛路径震荡
- 对学习率敏感
- 可能难以达到精确最优
实践中常采用小批量梯度下降(mini-batch),平衡计算效率和稳定性。
4. 高级优化算法
4.1 动量法(Momentum)
动量法引入速度变量,模拟物理中的动量概念:
v_t = γv_{t-1} + η∇ℓ(w_t) w_{t+1} = w_t - v_t
其中γ∈(0,1)是动量系数。这种方法可以:
- 加速收敛
- 减少震荡
- 帮助跳出局部极小值
4.2 AdaGrad
AdaGrad为每个参数自适应调整学习率:
G_t = G_{t-1} + (∇ℓ(w_t))² w_{t+1} = w_t - (η/√(G_t+ε))∇ℓ(w_t)
这种方法特别适合稀疏数据,但对学习率初始值敏感。
4.3 RMSProp
改进AdaGrad的缺陷,使用指数移动平均:
E[g²]t = γE[g²]{t-1} + (1-γ)g_t² w_{t+1} = w_t - (η/√(E[g²]_t+ε))g_t
4.4 Adam
结合动量法和RMSProp的优点:
m_t = β₁m_{t-1} + (1-β₁)g_t v_t = β₂v_{t-1} + (1-β₂)g_t² m̂_t = m_t/(1-β₁^t) v̂_t = v_t/(1-β₂^t) w_{t+1} = w_t - ηm̂_t/(√v̂_t+ε)
Adam通常设置β₁=0.9,β₂=0.999,ε=1e-8
5. 线性回归的扩展与应用
5.1 从回归到分类
虽然线性回归主要用于回归问题,但通过阈值处理也可以用于二分类:
y_pred = sign(wᵀx)
这与感知机算法类似,但线性回归先优化连续输出,再离散化。
5.2 多项式回归
通过特征工程将线性模型扩展为非线性:
原始特征:x 扩展特征:[x, x², x³,...]
这保持了模型的线性in参数性质,但能拟合更复杂的模式。
5.3 正则化方法
为防止过拟合,常加入正则化项:
L2正则化(岭回归): ℓ(w) = ∥Xw-Y∥² + λ∥w∥²
L1正则化(Lasso): ℓ(w) = ∥Xw-Y∥² + λ∥w∥₁
Elastic Net: ℓ(w) = ∥Xw-Y∥² + λ₁∥w∥₁ + λ₂∥w∥²
6. 实践建议与常见问题
6.1 数据预处理要点
缺失值处理:
- 删除包含缺失值的样本
- 用均值/中位数填充
- 建立预测模型估算
特征缩放:
- 标准化:(x-μ)/σ
- 归一化:(x-min)/(max-min)
类别特征编码:
- 独热编码(One-hot)
- 标签编码(Label Encoding)
6.2 模型评估指标
回归任务:
- 均方误差(MSE)
- 均方根误差(RMSE)
- R²分数
分类任务:
- 准确率
- F1分数
- ROC-AUC
6.3 常见问题排查
模型欠拟合:
- 增加特征
- 减小正则化强度
- 使用更复杂模型
模型过拟合:
- 增加训练数据
- 加强正则化
- 特征选择
训练不稳定:
- 调整学习率
- 使用自适应优化器
- 检查数据质量
在实际项目中,线性回归往往作为基线模型,它的简洁性和可解释性使其成为理解数据和验证特征工程有效性的重要工具。虽然深度学习等复杂模型在某些任务上表现更好,但线性回归因其高效和稳定,仍然是许多实际应用的首选方案。