【模式识别与机器学习(4)】主要算法与技术(中篇:概率统计与回归方法)之线性回归模型 - 实践
文章目录
一、考试范围知识框架
- 线性回归模型
- 最小二乘法
- 正则化方法(Lasso、Ridge)
二、正文内容
1. 线性回归模型
关键词:线性关系、回归系数、基函数、非线性变换
线性回归?就是什么
线性回归是一种预测连续数值的手段。轻松来说,就是找到一条直线(或超平面),使得这条直线能够最好地拟合数据点。
生活例子:根据房屋面积预测房价;根据学习时间预测考试成绩;根据广告投入预测销售额。
基本模型
给定有 N NN个样本的数据集D = { ( y i , x i 1 , . . . , x i D ) } D = \{(y_i, x_{i1}, ..., x_{iD})\}D={(yi,xi1,...,xiD)},其中:y i y_iyi是因变量(我们要预测的值,如房价、成绩),x i 1 , . . . , x i D x_{i1}, ..., x_{iD}xi1,...,xiD是自变量(特征,如房屋面积、学习时间)。
线性回归模型假设因变量y i y_iyi 与自变量 x i x_ixi(由 { x i 1 , . . . , x i D } \{x_{i1}, ..., x_{iD}\}{xi1,...,xiD} 构成的 D DD维向量)之间是线性关系:
y i = β 0 + β 1 x i 1 + β 2 x i 2 + . . . + β D x i D = x i T β y_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + ... + \beta_D x_{iD} = x_i^T \betayi=β0+β1xi1+β2xi2+...+βDxiD=xiTβ
其中:β 0 \beta_0β0是截距(当所有特征为0时的y yy 值),β 1 , . . . , β D \beta_1, ..., \beta_Dβ1,...,βD是回归系数(每个特征对y yy的影响程度),β = [ β 0 , β 1 , . . . , β D ] T \beta = [\beta_0, \beta_1, ..., \beta_D]^Tβ=[β0,β1,...,βD]T是参数向量。
例子:预测房价
假设我们想根据房屋面积x 1 x_1x1 和房间数 x 2 x_2x2 预测房价 y yy:
y = β 0 + β 1 ⋅ x 1 + β 2 ⋅ x 2 y = \beta_0 + \beta_1 \cdot x_1 + \beta_2 \cdot x_2y=β0+β1⋅x1+β2⋅x2
- β 0 = 50 \beta_0 = 50β0=50:基础房价(即使面积为0,也有基础成本)
- β 1 = 0.5 \beta_1 = 0.5β1=0.5:每增加1平方米,房价增加0.5万元
- β 2 = 10 \beta_2 = 10β2=10:每增加1个房间,房价增加10万元
若是一套房子面积100平方米,3个房间:
y = 50 + 0.5 × 100 + 10 × 3 = 50 + 50 + 30 = 130 万元 y = 50 + 0.5 \times 100 + 10 \times 3 = 50 + 50 + 30 = 130 \text{万元}y=50+0.5×100+10×3=50+50+30=130万元
基函数:让线性回归处理非线性关系
问题线性的呢?比如面积越大,每平方米的单价可能下降(非线性关系)。就是:如果房价和面积的关系不
解决方案:使用基函数(basis function)对输入特征进行非线性变换,然后在这些变换后的特征上做线性回归。
一般化模型:
y i = ϕ ( x i ) T β y_i = \phi(x_i)^T \betayi=ϕ(xi)Tβ
其中 ϕ ( x i ) \phi(x_i)ϕ(xi)是对输入特征x i x_ixi的变换函数(基函数)。
常见基函数:
多项式基函数:ϕ j ( x ) = x j \phi_j(x) = x^jϕj(x)=xj
- 许可拟合曲线关系
- 例子:ϕ ( x ) = [ 1 , x , x 2 , x 3 ] T \phi(x) = [1, x, x^2, x^3]^Tϕ(x)=[1,x,x2,x3]T → y = β 0 + β 1 x + β 2 x 2 + β 3 x 3 y = \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3y=β0+β1x+β2x2+β3x3
高斯基函数:ϕ j ( x ) = exp { − ( x − μ j ) 2 2 s 2 } \phi_j(x) = \exp\left\{-\frac{(x-\mu_j)^2}{2s^2}\right\}ϕj(x)=exp{−2s2(x−μj)2}
- 在特定位置 μ j \mu_jμj附近有较大值
- 能够拟合局部特征
S形(sigmoid)基函数:ϕ j ( x ) = σ ( x − μ j s ) \phi_j(x) = \sigma\left(\frac{x-\mu_j}{s}\right)ϕj(x)=σ(sx−μj),其中 σ ( a ) = 1 1 + e − a \sigma(a) = \frac{1}{1+e^{-a}}σ(a)=1+e−a1
- S形曲线,可以拟合平滑的过渡
例子:用多项式拟合非线性关系
曲线的:就是假设房价和面积的关系
- 原始特征:x xx(面积)
- 基函数:ϕ ( x ) = [ 1 , x , x 2 ] T \phi(x) = [1, x, x^2]^Tϕ(x)=[1,x,x2]T
- 模型:y = β 0 + β 1 x + β 2 x 2 y = \beta_0 + \beta_1 x + \beta_2 x^2y=β0+β1x+β2x2
这样虽然对原始特征x xx是非线性的,但对变换后的特征ϕ ( x ) \phi(x)ϕ(x)仍然是线性的,所以仍然叫"线性回归"(对参数β \betaβ是线性的)。
2. 最小二乘法
关键词:误差平方和、偏导数、参数估计、解析解
如何找到最好的参数?
找到参数就是线性回归的目标β \betaβ,使得模型预测值y ^ i \hat{y}_iy^i 和真实值 y i y_iyi尽可能接近。
误差定义:对于第 i ii个样本,预测误差为:
e i = y i − f ( x i , β ) = y i − y ^ i e_i = y_i - f(x_i, \beta) = y_i - \hat{y}_iei=yi−f(xi,β)=yi−y^i
最小二乘法
最小二乘法(Least Square Method)的核心思想:使得所有样本的误差平方和最小。
目标函数:
S = ∑ i = 1 N e i 2 = ∑ i = 1 N ( y i − f ( x i , β ) ) 2 S = \sum_{i=1}^{N} e_i^2 = \sum_{i=1}^{N} (y_i - f(x_i, \beta))^2S=i=1∑Nei2=i=1∑N(yi−f(xi,β))2
**为什么用平方?**避免正负误差相互抵消;对大误差惩罚更重(平方放大);数学上便于求导(平方函数可导)。
求解方法:
通过求偏导数并令其等于0:
∂ S ∂ β d = 0 , d = 0 , 1 , … , D \frac{\partial S}{\partial \beta_d} = 0, \quad d = 0, 1, \ldots, D∂βd∂S=0,d=0,1,…,D
能够得到参数的解析解(闭式解,不需要迭代)。
线性回归的解析解:
对于线性回归模型f ( x i , β ) = ϕ ( x i ) T β f(x_i, \beta) = \phi(x_i)^T \betaf(xi,β)=ϕ(xi)Tβ,参数估计为:
β ^ = ( Φ T Φ ) − 1 Φ T y \hat{\beta} = (\Phi^T \Phi)^{-1} \Phi^T yβ^=(ΦTΦ)−1ΦTy
其中:Φ \PhiΦ是基函数矩阵(每行是一个样本的基函数值),y yy是目标值向量。
例子:便捷线性回归
假设只有一个特征x xx,模型为 y = β 0 + β 1 x y = \beta_0 + \beta_1 xy=β0+β1x:
给定数据点:( 1 , 2 ) , ( 2 , 3 ) , ( 3 , 5 ) (1, 2), (2, 3), (3, 5)(1,2),(2,3),(3,5)
通过通过最小二乘法能够计算出:β 0 = 0.5 \beta_0 = 0.5β0=0.5,β 1 = 1.5 \beta_1 = 1.5β1=1.5。所以拟合的直线是:y = 0.5 + 1.5 x y = 0.5 + 1.5xy=0.5+1.5x
优点:有解析解,计算快速;不需要迭代,一步到位;理论保证全局最优。
缺点:需要计算矩阵的逆,当特征很多时计算量大;对异常值敏感(因为用平方误差)。
3. 正则化方式
关键词:过拟合、L1正则化、L2正则化、Lasso、Ridge
什么是过拟合?
**过拟合(Overfitting)**是指模型在训练数据上表现很好,但在新数据上表现很差的现象。
形象比喻:就像学生死记硬背了所有练习题,但遇到新题目就不会做了。
过拟合的原因:数据量太少;模型太复杂(参数太多);回归系数过大,导致曲线波动剧烈。
例子:
假设我们用多项式拟合房价数据:
- 欠拟合:用一次函数(直线)→ 太简单,拟合不好
- 合适拟合:用二次函数(抛物线)→ 刚好
- 过拟合:用10次多项式 → 曲线剧烈波动,完美拟合训练资料,但预测新数据很差
正则化:防止过拟合
正则化(Regularization)通过在目标函数中加入惩罚项,限制参数的大小,从而防止过拟合。
核心思想:不仅要让预测误差小,还要让参数不要太大。
正则化的目标函数:
S ′ = ∑ i = 1 N ( y i − f ( x i , β ) ) 2 + λ ⋅ 惩罚项 S' = \sum_{i=1}^{N} (y_i - f(x_i, \beta))^2 + \lambda \cdot \text{惩罚项}S′=i=1∑N(yi−f(xi,β))2+λ⋅惩罚项
其中:第一项是误差平方和(拟合数据),第二项是惩罚项(限制参数),λ \lambdaλ是正则化系数(控制惩罚的强度)。
L2正则化(Ridge回归)
惩罚项:参数的平方和(L2范数的平方)
S ′ = ∑ i = 1 N ( y i − f ( x i , β ) ) 2 + λ ∣ ∣ β ∣ ∣ 2 2 S' = \sum_{i=1}^{N} (y_i - f(x_i, \beta))^2 + \lambda ||\beta||_2^2S′=i=1∑N(yi−f(xi,β))2+λ∣∣β∣∣22
其中 ∣ ∣ β ∣ ∣ 2 2 = β 0 2 + β 1 2 + . . . + β D 2 = β T β ||\beta||_2^2 = \beta_0^2 + \beta_1^2 + ... + \beta_D^2 = \beta^T \beta∣∣β∣∣22=β02+β12+...+βD2=βTβ
特点:让所有参数都变小,但不会变成0;对异常值敏感(因为用平方);解稳定且唯一;适用于特征很多但都重要的情况。
例子:
假设 λ = 0.1 \lambda = 0.1λ=0.1,模型有两个参数β 1 \beta_1β1 和 β 2 \beta_2β2:
- 没有正则化:β 1 = 100 , β 2 = 50 \beta_1 = 100, \beta_2 = 50β1=100,β2=50
- L2正则化:β 1 = 10 , β 2 = 5 \beta_1 = 10, \beta_2 = 5β1=10,β2=5(都变小了,但都不为0)
L1正则化(Lasso回归)
惩罚项:参数的绝对值之和(L1范数)
S ′ = ∑ i = 1 N ( y i − f ( x i , β ) ) 2 + λ ∣ ∣ β ∣ ∣ 1 S' = \sum_{i=1}^{N} (y_i - f(x_i, \beta))^2 + \lambda ||\beta||_1S′=i=1∑N(yi−f(xi,β))2+λ∣∣β∣∣1
其中 ∣ ∣ β ∣ ∣ 1 = ∣ β 0 ∣ + ∣ β 1 ∣ + . . . + ∣ β D ∣ = ∑ j ∣ β j ∣ ||\beta||_1 = |\beta_0| + |\beta_1| + ... + |\beta_D| = \sum_{j} |\beta_j|∣∣β∣∣1=∣β0∣+∣β1∣+...+∣βD∣=∑j∣βj∣
特点:能够让某些参数变成0(稀疏解);有助于特征选择(自动去除不关键的特征);对异常值更鲁棒(因为用绝对值);适用于特征很多但只有部分重要的情况。
例子:
通过假设有100个特征,但只有10个真正重要:L1正则化能够自动将90个不重要特征的系数变成0,相当于自动做了特征选择。
L1 vs L2 对比
| 特性 | L2正则化(Ridge) | L1正则化(Lasso) |
|---|---|---|
| 参数是否可以为0 | 否(接近0但不为0) | 是(能够精确为0) |
| 特征选择 | 否 | 是(自动选择) |
| 对异常值 | 敏感 | 鲁棒 |
| 适用场景 | 所有特征都重要 | 只有部分特征要紧 |
如何选择正则化系数λ?
λ \lambdaλ控制正则化的强度:
- λ = 0 \lambda = 0λ=0:没有正则化,可能过拟合
- λ \lambdaλ 很小:轻微正则化,参数稍微变小
- λ \lambdaλ 适中:平衡拟合和泛化
- λ \lambdaλ 很大:过度正则化,参数都接近0,可能欠拟合
选择方法:通常使用交叉验证(Cross-Validation)来选择最优的λ \lambdaλ 值。
实际应用建议:
- 如果特征很多,想自动选择重要特征 → 使用L1正则化(Lasso)
- 如果所有特征都重要,只想防止过拟合 → 使用L2正则化(Ridge)
- 也可以同时使用L1和L2(Elastic Net)
浙公网安备 33010602011771号