数学表达式: 从恐惧到单挑 (9. 线性回归)

9. 线性回归

线性回归是一个常用的机器学习算法.

9.1 示例

表 1. 单变量股价预测

时间 (天)股价
110
211
3?

x x x 表示第 x x x 天, y = f ( x ) y = f(x) y=f(x) 表示第 x x x 天的股价.
建立线性模型:
y = f ( x ) = a x + b y = f(x) = ax + b y=f(x)=ax+b
求系数 a a a b b b.
解:
{ 10 = 1 a + b 11 = 2 a + b ⇒ { a = 1 b = 9 ⇒ f ( x ) = x + 9 \left\{\begin{array}{l}10 = 1 a + b \\ 11 = 2a + b\end{array}\right. \Rightarrow \left\{\begin{array}{l}a = 1 \\ b = 9 \end{array}\right. \Rightarrow f(x) = x + 9 {10=1a+b11=2a+b{a=1b=9f(x)=x+9
源码: \left{\begin{array}{l}10 = 1 a + b \ 11 = 2a + b\end{array}\right. \Rightarrow \left{\begin{array}{l}a = 1 \ b = 9 \end{array}\right. \Rightarrow f(x) = x + 9.
x = 3 x = 3 x=3 代入, 可以预测第 3 天的股价为 12 元.

表 2. 多变量股价预测

时间 (天)外围股指股价
12500010
22550011
32560011.4
425800?

x 1 x_1 x1 表示时间, x 2 x_2 x2 表示外围股指, y y y 表示股价.
建立线性模型:
y = f ( x 1 , x 2 ) = a 1 x 1 + a 2 x 2 + b (1) y = f(x_1, x_2) = a_1 x_1 + a_2 x_2 + b \tag{1} y=f(x1,x2)=a1x1+a2x2+b(1)
由于有三个变量 a 1 a_1 a1, a 2 a_2 a2, b b b, 我们需要用三天的数据获得它们.
{ 10 = 1 a 1 + 25000 a 2 + b 11 = 2 a 1 + 25500 a 2 + b 11.4 = 3 a 1 + 25600 a 2 + b \left\{\begin{array}{l} 10 = 1 a_1 + 25000 a_2 + b \\ 11 = 2 a_1 + 25500 a_2 + b \\ 11.4 = 3 a_1 + 25600 a_2 + b \end{array}\right. 10=1a1+25000a2+b11=2a1+25500a2+b11.4=3a1+25600a2+b
然后就可以对第 4 天的股价进行预测.

当自变量 (属性) 较多时, 这样写太麻烦.
可将第 i i i 天的数据写成向量 x i = [ x i 1 , … , x i m ] \mathbf{x}_i = [x_{i1}, \dots, x_{im}] xi=[xi1,,xim], 相应系数写为 w = [ w 1 , … , w m ] T \mathbf{w} = [w_1, \dots, w_m]^\mathrm{T} w=[w1,,wm]T. 则 (1) 式可改写为
y i = x i w + b (2) y_i = \mathbf{x}_i \mathbf{w} + b \tag{2} yi=xiw+b(2)
进一步地, 扩展 x i = [ x i 0 , x i 1 , … , x i m ] \mathbf{x}_i = [x_{i0}, x_{i1}, \dots, x_{im}] xi=[xi0,xi1,,xim], 其中 x i 0 ≡ 1 x_{i0} \equiv 1 xi01. 源码: x_{i0} \equiv.
同时扩展 w = [ w 0 , w 1 , … , w m ] T \mathbf{w} = [w_0, w_1, \dots, w_m]^\mathrm{T} w=[w0,w1,,wm]T, 其中 w 0 = b w_0 = b w0=b. 则 (2) 式改写为
y i = x i w (3) y_i = \mathbf{x}_i \mathbf{w} \tag{3} yi=xiw(3)

该方案看起来完美, 但在实际数据中, m m m 个属性远远不止 m + 1 m + 1 m+1条训练数据, 这里我们需要更复杂的方案.

9.2 拟合

在这里插入图片描述
图 1 线性回归示意图

给定数据集 X = [ x i j ] n × ( m + 1 ) \mathbf{X} = [x_{ij}]_{n \times (m + 1)} X=[xij]n×(m+1) 与其标签 Y = [ y 1 , … , y n ] T \mathbf{Y} = [y_1, \dots, y_n]^{\mathrm{T}} Y=[y1,,yn]T. 线性回归的目的是获得一个系数向量 w \mathbf{w} w (它是 ( m + 1 ) × 1 (m + 1) \times 1 (m+1)×1 列向量) 使得
X w ≈ Y \mathbf{X} \mathbf{w} \approx \mathbf{Y} XwY, 源码: \mathbf{X} \mathbf{w} \approx \mathbf{Y}. 或者更准确地说, 是
arg min ⁡ w ∣ ∣ X w − Y ∣ ∣ 2 2 (1) \argmin_{\mathbf{w}} ||\mathbf{X} \mathbf{w} - \mathbf{Y}||_2^2 \tag{1} wargminXwY22(1)
源码: \argmin_{\mathbf{w}} ||\mathbf{X} \mathbf{w} - \mathbf{Y}||_2^2, 双竖线在 Latex 中换成 \| 表示.
注意这里已经扩展了 X \mathbf{X} X w \mathbf{w} w.

表 2 对应的
X = [ 1 1 25000 1 2 25500 1 3 25600 ] \mathbf{X} = \begin{bmatrix} 1 & 1 & 25000 \\ 1 & 2 & 25500 \\ 1 & 3 & 25600 \end{bmatrix} X=111123250002550025600
源码:
在这里插入图片描述

分析:

  • 我们希望用 ∑ j = 0 m x i j w j \sum_{j = 0}^m x_{ij} w_j j=0mxijwj 来拟合 y j y_j yj.
  • 对于新的实例 x \mathbf{x} x, 则将 x w \mathbf{xw} xw 作为 y y y 的预测值.
  • X \mathbf{X} X w \mathbf{w} w 的维度分别为 n × ( m + 1 ) n \times (m + 1) n×(m+1) ( m + 1 ) × 1 (m + 1) \times 1 (m+1)×1, 因此其乘积的维度为 n × 1 n \times 1 n×1.
  • 复习矩阵的乘法 A = U V \mathbf{A} = \mathbf{U} \mathbf{V} A=UV, 则 a i j a_{ij} aij U \mathbf{U} U 的第 i i i 行与 U \mathbf{U} U j j j 行的乘积.

9.2 推导

如何获得 w \mathbf{w} w?
推导过程:
∣ ∣ X w − Y ∣ ∣ 2 2 = ( X w − Y ) T ( X w − Y ) = ( w T X T − Y T ) ( X w − Y ) = w T X T X w − w T X T Y − Y T X w + Y T Y \begin{array}{ll}||\mathbf{X} \mathbf{w} - \mathbf{Y}||_2^2 &= (\mathbf{X} \mathbf{w} - \mathbf{Y})^{\textrm{T}} (\mathbf{X} \mathbf{w} - \mathbf{Y})\\ &= (\mathbf{w}^{\textrm{T}} \mathbf{X}^{\mathrm{T}} - \mathbf{Y}^{\mathrm{T}}) (\mathbf{X} \mathbf{w} - \mathbf{Y})\\ & = \mathbf{w}^{\mathrm{T}} \mathbf{X}^{\mathrm{T}}\mathbf{X} \mathbf{w} - \mathbf{w}^{\mathrm{T}} \mathbf{X}^{\mathrm{T}}\mathbf{Y} - \mathbf{Y}^{\mathrm{T}}\mathbf{X} \mathbf{w} + \mathbf{Y}^{\mathrm{T}}\mathbf{Y} \end{array} XwY22=(XwY)T(XwY)=(wTXTYT)(XwY)=wTXTXwwTXTYYTXw+YTY
将该式关于 w \mathbf{w} w 求导 (使用向量求导法则) 并令其为 0, 可得
X T X w − X T Y = 0 \mathbf{X}^{\mathrm{T}}\mathbf{X} \mathbf{w} - \mathbf{X}^{\mathrm{T}}\mathbf{Y} = 0 XTXwXTY=0
最后
w = ( X T X ) − 1 X T Y \mathbf{w} = (\mathbf{X}^{\mathrm{T}}\mathbf{X})^{-1}\mathbf{X}^{\mathrm{T}}\mathbf{Y} w=(XTX)1XTY.

更多知识见向量求导法则线性回归与最小二乘法.

9.3 岭回归

将优化目标改为
arg min ⁡ w ∣ ∣ X w − Y ∣ ∣ 2 2 + λ ∣ ∣ w ∣ ∣ 2 2 (2) \argmin_{\mathbf{w}} ||\mathbf{X} \mathbf{w} - \mathbf{Y}||_2^2 + \lambda ||\mathbf{w}||^2_2\tag{2} wargminXwY22+λw22(2)
可推导出
X T X w − X T Y + λ w = 0 \mathbf{X}^{\mathrm{T}}\mathbf{X} \mathbf{w} - \mathbf{X}^{\mathrm{T}}\mathbf{Y} + \lambda \mathbf{w} = 0 XTXwXTY+λw=0
最后
w = ( X T X + λ I ) − 1 X T Y \mathbf{w} = (\mathbf{X}^{\mathrm{T}}\mathbf{X} + \lambda \mathbf{I})^{-1}\mathbf{X}^{\mathrm{T}}\mathbf{Y} w=(XTX+λI)1XTY.

9.3 作业

自己写一个小例子 ( n = 3 n = 3 n=3, m = 1 m = 1 m=1) 来验证最小二乘法.

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值