Day 2:线性回归原理与正则化

Day 2:线性回归原理与正则化

📋 目录

  1. 线性回归基础原理
  2. 最小二乘法(解析解)
  3. 梯度下降法(数值解)
  4. 正则化:Ridge回归(L2)
  5. 正则化:Lasso回归(L1)
  6. 弹性网络(Elastic Net)

第一部分:线性回归基础原理(1.5小时理论)

1.1 什么是线性回归?

定义 :线性回归是一种监督学习方法,用于预测连续值输出。它假设输入特征和输出之间存在线性关系

数学形式
y=β0+β1x1+β2x2+⋯+βnxn+ϵ y = \beta_0 + \beta_1x_1 + \beta_2x_2 + \dots + \beta_nx_n + \epsilon y=β0+β1x1+β2x2+⋯+βnxn+ϵ

  • yyy:预测目标(如股票收益率)
  • x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn:特征(如过去收益率、成交量等)
  • β0,β1,...,βn\beta_0, \beta_1, ..., \beta_nβ0,β1,...,βn:模型参数(需要学习)
  • ϵ\epsilonϵ:误差项(噪声)

矩阵形式
y=Xβ+ϵ y = \boldsymbol{X}\boldsymbol{\beta} + ϵ y=Xβ+ϵ

其中 X\boldsymbol{X}X 是 m×(n+1)m \times (n+1)m×(n+1) 的设计矩阵(包含截距项),β\boldsymbol{\beta}β 是 (n+1)×1(n+1) \times 1(n+1)×1 的参数向量。

1.2 线性回归的假设条件

假设 含义 量化中的问题
线性性 特征与目标线性相关 金融数据常存在非线性
独立性 样本相互独立 时间序列存在自相关
同方差性 误差方差恒定 金融数据存在异方差(波动率聚类)
正态性 误差服从正态分布 金融收益具有厚尾特征

重要提示 :虽然这些假设在金融数据中常被违反,但线性回归仍然可以作为基准模型使用。

1.3 损失函数(Cost Function)

目标 :找到使预测误差最小的参数 β\mathbf{β}β

均方误差(MSE)损失函数
J(β)=12m∑i=1m(y(i)−y^(i))2=12m∑i=1m(y(i)−x(i)β)2 J(\boldsymbol{\beta}) = \frac{1}{2m} \sum_{i=1}^{m} (y^{(i)} - \hat{y}^{(i)})^2 = \frac{1}{2m} \sum_{i=1}^{m} (y^{(i)} - \boldsymbol{x}^{(i)} \boldsymbol{\beta})^2 J(β)=2m1i=1∑m(y(i)−y^(i))2=2m1i=1∑m(y(i)−x(i)β)2

  • mmm:样本数量
  • 除以 222 是为了求导时简化计算

为什么要最小化MSE?

  • 在正态误差假设下,MSE等价于最大似然估计
  • 数学上可导,便于优化
  • 对大误差惩罚更重

第二部分:最小二乘法(解析解)

2.1 原理推导

最小二乘法通过求解正规方程直接得到最优参数。

步骤

  1. 对损失函数求导:
    ∂J∂β=1mXT(Xβ−y) \frac{\partial J}{\partial \boldsymbol{\beta}} = \frac{1}{m} \boldsymbol{X}^T (\boldsymbol{X} \boldsymbol{\beta} - \boldsymbol{y}) ∂β∂J=m1XT(Xβ−y)

  2. 令导数为零:
    XTXβ=XTy \boldsymbol{X}^T \boldsymbol{X} \boldsymbol{\beta} = \boldsymbol{X}^T \boldsymbol{y} XTXβ=XTy

  3. 求解参数:
    β=(XTX)−1XTy \boldsymbol{\beta} = (\boldsymbol{X}^T \boldsymbol{X})^{-1} \boldsymbol{X}^T \boldsymbol{y} β=(XTX)−1XTy

2.2 最小二乘法的优缺点

优点 缺点
解析解,无需迭代 需要计算逆矩阵 O(n3)O(n^3)O(n3)
一次计算得到结果 特征数多时计算慢
结果稳定 特征数 > 样本数时不可逆
无超参数 对异常值敏感

2.3 数值稳定性问题

矩阵求逆问题

  • 当特征高度相关(多重共线性)时,XTX\mathbf{X}^T\mathbf{X}XTX 接近奇异
  • 导致数值计算不稳定

量化应用中的多重共线性

复制代码
# 示例:技术指标高度相关
# 5日移动平均和10日移动平均高度相关
# RSI和动量指标相关

解决方案

  • 使用伪逆(np.linalg.pinv
  • 添加正则化(后面会讲)
  • 使用梯度下降

第三部分:梯度下降法(数值解)

3.1 梯度下降原理

核心思想:沿着负梯度方向迭代更新参数,直到收敛。

更新公式
βj:=βj−α∂J∂βj \beta_j := \beta_j - \alpha \frac{\partial J}{\partial \beta_j} βj:=βj−α∂βj∂J

其中 α\alphaα 是学习率(learning rate)。

梯度计算
∂J∂βj=1m∑i=1m(hβ(x(i))−y(i))xj(i) \frac{\partial J}{\partial \beta_j} = \frac{1}{m} \sum_{i=1}^{m} (h_\beta(x^{(i)}) - y^{(i)}) x_j^{(i)} ∂βj∂J=m1i=1∑m(hβ(x(i))−y(i))xj(i)

3.2 三种梯度下降变体

变体 每次使用的样本数 优点 缺点
批量梯度下降(BGD) 全部样本 稳定收敛 大数据集慢
随机梯度下降(SGD) 1个样本 快速更新 收敛不稳定
小批量梯度下降 batch_size个 平衡效率和稳定性 需要调batch_size

3.3 学习率的选择

学习率的影响

  • 太大:震荡不收敛
  • 太小:收敛太慢
  • 合适:平稳收敛
python 复制代码
# 学习率选择策略
learning_rates = {
    '太大': 1.0,      # 可能发散
    '偏大': 0.1,      # 震荡
    '合适': 0.01,     # 平稳下降
    '偏小': 0.0001,   # 收敛慢
    '太小': 1e-6      # 几乎不变
}

自适应学习率方法

  • AdaGrad
  • RMSprop
  • Adam(最常用)

3.4 特征缩放的重要性

为什么需要特征缩放?

python 复制代码
# 示例:未缩放的特征
特征1:股价(100-200元)
特征2:成交量(1,000,000-10,000,000股)

# 梯度下降会沿着量纲大的方向震荡

常用缩放方法

方法 公式 适用场景
标准化(Standardization (Z-Score)) x′=x−μσx' = \frac{x - \mu}{\sigma}x′=σx−μ 特征近似正态分布
归一化(Min-Max Scaling) x′=x−min⁡max⁡−min⁡x' = \frac{x - \min}{\max - \min}x′=max−minx−min 特征有边界
鲁棒缩放(Robust Scaling) x′=x−medianIQRx' = \frac{x - \text{median}}{IQR}x′=IQRx−median 有异常值

第四部分:正则化 - Ridge回归(L2正则化)

4.1 为什么需要正则化?

过拟合问题

  • 模型过于复杂,记住噪声
  • 参数值变得很大
  • 对新数据预测能力差

正则化思想:在损失函数中加入参数惩罚项

4.2 Ridge回归原理

Ridge 回归(岭回归)是在普通线性回归基础上加入 L2 正则化 的改进版,专门解决多重共线性和过拟合问题。

核心思想 :不仅希望预测误差小,还希望模型的参数 β\boldsymbol \betaβ 不要太大。

损失函数
J(β)=12m∑i=1m(y(i)−g(i))2⏟MSE+λ∑j=1nβj2⏟L2惩罚项 J(\boldsymbol{\beta}) = \underbrace{\frac{1}{2m} \sum_{i=1}^{m} (y^{(i)} - g^{(i)})^2}{\text{MSE}} + \underbrace{\lambda \sum{j=1}^{n} \beta_j^2}_{\text{L2惩罚项}} J(β)=MSE 2m1i=1∑m(y(i)−g(i))2+L2惩罚项 λj=1∑nβj2

  • λ>0:正则化强度(超参数),控制"拟合"与"参数小"之间的权衡。
  • λ=0:退化为普通线性回归。
  • λ\lambdaλ 越大,参数越接近0
  • 惩罚项不包括 β0\beta_0β0(截距)

解析解
β=(XTX+λI)−1XTy \boldsymbol{\beta} = (\boldsymbol{X}^T \boldsymbol{X} + \lambda \boldsymbol{I})^{-1} \boldsymbol{X}^T \boldsymbol{y} β=(XTX+λI)−1XTy
关键性质

  • λI\lambda\boldsymbol{I}λI 保证了矩阵可逆(即使 XTX\boldsymbol{X}^T\boldsymbol{X}XTX 奇异)
  • 参数收缩但不为0

4.3 L2正则化的几何解释:圆与等高线的相遇

可以从两个视角理解 L2 正则化为什么能让参数变小。

1. 约束优化视角:限制参数"居住空间"

想象一下:

  • 我们要找损失函数的最低点(山谷底)。
  • 但这次我们规定:参数 β\boldsymbol{\beta}β 只能落在 原点附近的一个圆内(L2 球)。

几何过程

  1. 不加正则化时,最优解可能在很远的地方(参数很大)。
  2. 加上 L2 后,相当于画了一个圆/球形的"围墙"。
  3. 如果原来的最优解在圆外,我们就只能沿着圆边找一个既在圆内、又尽量靠近谷底的点。

结果就是:参数被"拉"向原点,整体变小。

2. 拉格朗日视角:梯度下降的"引力"

在梯度下降更新中,L2 项的作用就像一根弹簧
βj:=βj−α[(数据梯度假装)+2λβj] \beta_j := \beta_j - \alpha[(数据梯度假装) + 2\lambda\beta_j] βj:=βj−α[(数据梯度假装)+2λβj]

每次更新时,除了根据数据调整方向,还会额外减去一部分 βj\beta_jβj 本身。

这意味着:

  • 无论数据怎么变,参数都在被持续拉回原点
  • 参数越大,被拉回的力度就越大;参数越小,拉力也越小。

Ridge 回归通过 L2 正则化,牺牲一点点训练集上的拟合精度,换取参数估计的更小方差和更强稳定性,特别适合特征多、共线性强、数据少的场景。

4.4 Ridge在量化中的应用

应用场景

  1. 多因子模型:处理高度相关的因子
  2. 风险控制:防止单一因子权重过大
  3. 小样本学习:特征数 > 样本数时
python 复制代码
# 示例:多因子模型
from sklearn.linear_model import Ridge

# 价值因子、动量因子、质量因子高度相关
factors = ['PE', 'PB', 'ROE', 'Momentum_12m']
ridge = Ridge(alpha=1.0)
ridge.fit(factors_returns, stock_returns)

第五部分:正则化 - Lasso回归(L1正则化)

5.1 Lasso回归原理

Lasso(Least Absolute Shrinkage and Selection Operator)是在线性回归基础上引入 L1 正则化 的模型,旨在同时实现参数收缩特征选择

损失函数
J(β)=12m∑i=1m(y(i)−y^(i))2⏟拟合误差+λ∑j=1n∣βj∣⏟L1惩罚项 J(\boldsymbol \beta) = \underbrace{\frac{1}{2m} \sum_{i=1}^{m} (y^{(i)} - \hat{y}^{(i)})^2}{\text{拟合误差}} + \underbrace{\lambda \sum{j=1}^{n} |\beta_j|}_{\text{L1惩罚项}} J(β)=拟合误差 2m1i=1∑m(y(i)−y^(i))2+L1惩罚项 λj=1∑n∣βj∣
关键性质

  • 产生稀疏解(许多参数为0)

  • 自动进行特征选择(将部分参数压缩为 0,从而实现特征选择)

  • λ>0控制正则化强度;

  • L1 项使用绝对值 ∣βj∣,而非平方。

与 Ridge 的关键区别:

  • Ridge (L2) 倾向于让所有参数均匀变小
  • Lasso (L1) 倾向于让一部分参数变为精确的 0,从而自动完成特征筛选。

5.2 L1 vs L2正则化对比

特性 L1(Lasso) L2(Ridge)
惩罚项 $ \beta
解的性质 稀疏 稠密
特征选择 自动
计算 需要坐标下降 解析解
多重共线性 只选一个 全部保留
几何形状 菱形 圆形

5.3 几何解释:菱形与尖角

1. 约束优化视角:菱形边界

将优化问题看作:在满足 ∑∣βj∣≤t的条件下,最小化误差。

  • L2 约束是一个平滑的"圆"(等高线为椭圆);
  • L1 约束 是一个"菱形"(高维下是"多面体"),有尖锐的顶点

关键现象

误差函数的等高线(椭圆)在寻找最低点时,更容易"撞上"菱形的顶点。而在顶点处,某些坐标恰好为 0。这就导致了参数的稀疏性------部分特征直接被模型丢弃。

2. 贝叶斯视角:拉普拉斯先验

从概率角度看:

  • L2 对应高斯先验,认为参数大多接近 0 但很少正好为 0;
  • L1 对应拉普拉斯先验,它在 0 处有更高的概率密度峰,因此更"鼓励"参数等于 0。

5.4 Lasso在量化中的应用

应用场景

  1. 因子筛选:从数百个因子中选择最重要的
  2. 简化模型:只保留有效特征
  3. 提高可解释性:只关注非零系数
python 复制代码
from sklearn.linear_model import Lasso

# 从100个因子中选择有效因子
lasso = Lasso(alpha=0.01)
lasso.fit(all_factors, stock_returns)

# 非零系数的因子
selected_factors = all_factors.columns[lasso.coef_ != 0]

第六部分:弹性网络(Elastic Net)

6.1 为什么需要弹性网络?

L1的问题

  • 当特征数 > 样本数时,最多选择n个特征
  • 高度相关特征中只选一个

L2的问题

  • 不进行特征选择

弹性网络:结合L1和L2的优势

6.2 弹性网络原理

损失函数
J(β)=MSE+λ(1−ρ2∑j=1nβj2+ρ∑j=1n∣βj∣) J(\boldsymbol \beta) = \text{MSE} + \lambda\left( \frac{1 - \rho}{2} \sum_{j=1}^{n} \beta_j^2 + \rho \sum_{j=1}^{n} |\beta_j| \right) J(β)=MSE+λ(21−ρj=1∑nβj2+ρj=1∑n∣βj∣)

  • ρ\rhoρ:L1比率(0 = Ridge, 1 = Lasso)
  • λ\lambdaλ:正则化强度

6.3 选择建议

场景 推荐模型
特征少,样本多 普通线性回归
特征相关性强 Ridge
需要特征选择 Lasso
特征多且相关 Elastic Net
相关推荐
QQ676580082 小时前
基于yolo26算法的水下目标检测图像数据集 海洋生物识别 海胆识别 海龟识别数据集 海洋生物监测与保护工作 潜水作业安全辅助系 水下环境感知第10408期
算法·目标检测·水下目标检测·海洋生物识别·海胆 海龟识别·海洋生物监测与保护工作·潜水作业安全辅助 水下环境感知
sp_fyf_20242 小时前
【大语言模型】 揭秘OPD:大语言模型的长度膨胀与稳定化策略
人工智能·深度学习·神经网络·机器学习·语言模型
小鱼~~2 小时前
集成学习思想
人工智能·机器学习·集成学习
七颗糖很甜2 小时前
基于 OpenCV 的 FY2 云顶图云块追踪算法实现
人工智能·opencv·算法
__Wedream__2 小时前
NTIRE 2026 Challenge on Efficient Super-Resolution——冠军方案解读
人工智能·深度学习·算法·计算机视觉·超分辨率重建
FL16238631292 小时前
基于深度学习mediape实现人员跌倒人体姿势跌倒检测算法源码+说明文件
人工智能·深度学习·算法
wangwangmoon_light3 小时前
1.23 LeetCode总结(树)_一般树
算法·leetcode·职场和发展
被考核重击3 小时前
基础算法学习
学习·算法
小O的算法实验室3 小时前
2026年ASOC,学习驱动人工蜂群算法+移动机器人多目标路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进