9. 线性回归
线性回归是一个常用的机器学习算法.
9.1 示例
表 1. 单变量股价预测
时间 (天) | 股价 |
---|---|
1 | 10 |
2 | 11 |
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=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.
将
x
=
3
x = 3
x=3 代入, 可以预测第 3 天的股价为 12 元.
表 2. 多变量股价预测
时间 (天) | 外围股指 | 股价 |
---|---|---|
1 | 25000 | 10 |
2 | 25500 | 11 |
3 | 25600 | 11.4 |
4 | 25800 | ? |
令
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
xi0≡1. 源码: 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}
Xw≈Y, 源码: \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}
wargmin∣∣Xw−Y∣∣22(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}
∣∣Xw−Y∣∣22=(Xw−Y)T(Xw−Y)=(wTXT−YT)(Xw−Y)=wTXTXw−wTXTY−YTXw+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
XTXw−XTY=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}
wargmin∣∣Xw−Y∣∣22+λ∣∣w∣∣22(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
XTXw−XTY+λ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) 来验证最小二乘法.