概述
- 优点:容易计算,易于理解和实现
- 缺点:容易欠拟合
- 适用数据类型:数值型和标称型
口头描述
线性回归试图构造一个线性函数,去拟合尽可能多的样本点。重点是如何确定线性函数的参数,使得该函数尽量穿过样本点,一般使用均方误差最小化来作为参数拟合效果的标准。
算法推导(解方程的方法)
- 给定训练数据集
D
=
{
(
x
i
,
y
i
)
}
i
=
1
m
D=\{(x_i,y_i)\}_{i=1}^m
D={(xi,yi)}i=1m,样本
x
i
x_i
xi由
d
d
d个属性描述,线性模型为:
f ω ( x ) = ω T x + b    ,    f ( x ) ⋍ y f_\omega(x)=\omega^Tx+b \; ,\;f(x) \backsimeq y fω(x)=ωTx+b,f(x)⋍y - 使用均方误差衡量
f
(
x
)
f(x)
f(x)与
y
y
y之间的差别,我们的目标是使他们的差别最小化。
E s ( s q u a r e    l o s s ) = ∑ i = 1 m ( f ( x i ) − y i ) 2 E_s(square \; loss)=\sum_{i=1}^{m}(f(x_i)-y_i)^2 Es(squareloss)=i=1∑m(f(xi)−yi)2 - 使用矩阵进行表达
- 参数向量矩阵:
ω ^ = ( ω ; b ) = [ ω 1 ω 2 . . . ω d b ] \hat{\omega}=(\omega ;b)= \begin{bmatrix} \omega_1 \\ \omega_2\\ ... \\ \omega_d \\ b \end{bmatrix} ω^=(ω;b)=⎣⎢⎢⎢⎢⎡ω1ω2...ωdb⎦⎥⎥⎥⎥⎤
注意: ω ^ \hat{\omega} ω^是 d + 1 d+1 d+1行 1 1 1列的 - 数据集矩阵:
X = [ x 11 x 12 … x 1 d 1 x 21 x 22 . . . x 2 d 1 ⋮ ⋮ ⋱ ⋮ ⋮ x m 1 x m 2 … x m d 1 ] = [ x 1 T 1 x 2 T 1 ⋮ ⋮ x m T 1 ] X=\begin{bmatrix} x_{11}&x_{12}&\dots&x_{1d}&1 \\ x_{21}&x_{22}&...&x_{2d}&1 \\ \vdots&\vdots&\ddots& \vdots&\vdots\\ x_{m1}&x_{m2}& \dots&x_{md}&1 \end{bmatrix} =\begin{bmatrix} x_1^T&1 \\ x_2^T&1 \\ \vdots&\vdots \\ x_m^T&1 \end{bmatrix} X=⎣⎢⎢⎢⎡x11x21⋮xm1x12x22⋮xm2…...⋱…x1dx2d⋮xmd11⋮1⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡x1Tx2T⋮xmT11⋮1⎦⎥⎥⎥⎤
注意:最后一列全是1,前d个元素对应样本的d个属性值 - 标记矩阵:
y = [ y 1 y 2 ⋮ y m ] y=\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_m \end{bmatrix} y=⎣⎢⎢⎢⎡y1y2⋮ym⎦⎥⎥⎥⎤
- 参数向量矩阵:
- 则均方误差为:
E s = ( y − X ω ^ ) T ( y − X ω ^ ) E_s=(y-X\hat{\omega})^T(y-X\hat{\omega}) Es=(y−Xω^)T(y−Xω^) - 令
E
ω
^
=
(
y
−
X
ω
^
)
T
(
y
−
X
ω
^
)
E_{\hat{\omega}}= (y-X\hat{\omega})^T(y-X\hat{\omega})
Eω^=(y−Xω^)T(y−Xω^),对
ω
^
\hat{\omega}
ω^求导得:
∂ E ω ^ ∂ ω ^ = 2 X T ( X ω ^ − y ) \frac{\partial E_{\hat{\omega}}}{\partial \hat{\omega}}=2X^T(X\hat{\omega}-y) ∂ω^∂Eω^=2XT(Xω^−y)
令上式为零可得 ω ^ \hat{\omega} ω^的最优解的闭式解
ω ^ ∗ = ( X T X ) − 1 X T y \hat{\omega}^*=(X^TX)^{-1}X^Ty ω^∗=(XTX)−1XTy
解出上式,也就得到了模型的公式:
f ( x i ^ ) = x i ^ T ( X T X ) − 1 X T y f(\hat{x_i})=\hat{x_i}^T(X^TX)^{-1}X^Ty f(xi^)=xi^T(XTX)−1XTy
其中,
x i ^ = [ x i 1 x i 2 ⋮ x i d 1 ] \hat{x_i}= \begin{bmatrix} x_{i1}\\ x_{i2}\\ \vdots \\ x_{id} \\ 1 \end{bmatrix} xi^=⎣⎢⎢⎢⎢⎢⎡xi1xi2⋮xid1⎦⎥⎥⎥⎥⎥⎤
算法推导(梯度下降)
目标是使均方误差最小化,即:
m
i
n
  
E
(
s
q
u
a
r
e
  
l
o
s
s
)
=
1
2
m
∑
i
=
1
m
(
f
ω
^
(
x
i
)
−
y
i
)
2
min \;E(square \; loss)=\frac{1}{2m}\sum_{i=1}^{m}(f_{\hat{\omega}}(x_i)-y_i)^2
minE(squareloss)=2m1i=1∑m(fω^(xi)−yi)2
这里的
1
2
m
\frac{1}{2m}
2m1是为了方便求偏导
对误差函数做偏导,对于每个特征(
ω
n
\omega ^n
ωn),其梯度(偏导)为:
∂
E
∂
ω
n
=
1
m
∑
i
=
1
m
(
f
ω
^
(
x
i
)
−
y
i
)
⋅
x
i
n
\frac{\partial E}{\partial \omega^n}=\frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^n_i
∂ωn∂E=m1i=1∑m(fω^(xi)−yi)⋅xin
这里是对每一个特征进行了求导,因为
f
ω
^
(
x
i
)
=
ω
0
x
i
0
+
ω
1
x
i
1
+
⋯
+
ω
n
x
i
n
      
(
x
i
:
t
h
e
  
i
t
h
  
d
a
t
a
)
f_{\hat{\omega}}(x_i)=\omega ^0x^0_i +\omega^1x^1_i+\dots+\omega^nx^n_i\;\;\;(x_i:the \; i^{th} \; data)
fω^(xi)=ω0xi0+ω1xi1+⋯+ωnxin(xi:theithdata)
则梯度下降的流程就是:
重复此过程直到收敛 {
ω
0
:
=
ω
0
−
α
1
m
∑
i
=
1
m
(
f
ω
^
(
x
i
)
−
y
i
)
⋅
x
i
0
\omega^0:=\omega^0-\alpha \frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^0_i
ω0:=ω0−αm1i=1∑m(fω^(xi)−yi)⋅xi0
ω
1
:
=
ω
1
−
α
1
m
∑
i
=
1
m
(
f
ω
^
(
x
i
)
−
y
i
)
⋅
x
i
1
\omega^1:=\omega^1-\alpha \frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^1_i
ω1:=ω1−αm1i=1∑m(fω^(xi)−yi)⋅xi1
⋮
\vdots
⋮
ω
n
:
=
ω
n
−
α
1
m
∑
i
=
1
m
(
f
ω
^
(
x
i
)
−
y
i
)
⋅
x
i
n
\omega^n:=\omega^n-\alpha \frac{1}{m}\sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i)\cdot x^n_i
ωn:=ωn−αm1i=1∑m(fω^(xi)−yi)⋅xin
}
解释一下, ∑ i = 1 m ( f ω ^ ( x i ) − y i ) \sum_{i=1}^{m}(f_{\hat{\omega}} (x_i)-y_i) ∑i=1m(fω^(xi)−yi)的意思是计算每个预测值与实际值的差别的总和。另外,对每个 ω i \omega^i ωi进行更新都是独立的,应当把所有的 ω i \omega^i ωi全部计算出来后再对其进行赋值更新。
X T X X^TX XTX的要求
当矩阵 X T X X^TX XTX是满秩矩阵的时候,上述最优解成立,但是很多情况下 X T X X^TX XTX往往不是满秩矩阵,此时可以解出 ω ^ \hat{\omega} ω^,他们都能使均方误差最小化,选择哪一个作为输出,将由学习算法的归纳偏好决定,常见的做法是引入正则化项。
对数线性回归
我们希望回归模型去逼近
l
n
  
y
ln\;y
lny不是
y
y
y时,模型变为
l
n
  
y
=
ω
T
x
+
b
ln\; y=\omega^Tx+b
lny=ωTx+b
这就是对数线性回归