线性回归(linear regression):试图学得一个线性模型以尽可能准确地预测实际值的输出。
以一个例子来说明线性回归,假设银行贷款会根据 年龄 和 工资 来评估可放款的额度。即:
数据:工资和年龄(2个特征)
目标:预测银行放款额度(标签)
参数:考虑工资和年龄分别对放款额度的影响程度
可以写成这样: Y = X 1 θ 1 + X 2 θ 2 Y=X_1\theta_1+X_2\theta_2 Y=X1θ1+X2θ2,这里 X 1 、 X 2 就是特征, Y X_1、X_2 就是特征,Y X1、X2就是特征,Y就是银行最终放款额度。
找到最合适的一个平面来拟合数据点:
拟合的平面方程:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
h_{\theta}(x)=\theta_0+\theta_1x_1+\theta_2x_2
hθ(x)=θ0+θ1x1+θ2x2,这里
θ
0
\theta_0
θ0是偏置项。整合该方程可以写成如下形式:
h
θ
(
x
)
=
∑
i
=
0
n
θ
i
x
i
=
θ
⊤
x
h_{\theta}(x)=\sum_{i=0}^n \theta_ix_i=\theta^\top x
hθ(x)=i=0∑nθixi=θ⊤x
注意这里
x
0
=
1
x_0=1
x0=1,添加一个全为1的特征,方便表示。
真实值和预测值之间肯定存在误差,用
ϵ
\epsilon
ϵ来表示误差。对于每个样本:
y
i
=
θ
⊤
x
i
+
ϵ
i
y_i = \theta^\top x_i + \epsilon_i
yi=θ⊤xi+ϵi
这里
y
i
y_i
yi 为真实值,
θ
⊤
x
i
\theta^\top x_i
θ⊤xi为预测值,
ϵ
i
\epsilon_i
ϵi为误差项
对于误差的理解:误差 ϵ i \epsilon_i ϵi是独立同分布的,且服从均值为0方差为 θ 2 \theta^2 θ2的高斯分布
- 独立:每个样本 x i x_i xi是没有关系的(张三李四一起放款,他俩没关系)
- 同分布:每个 x i x_i xi都是对于同一个问题的(他俩都是来同一家银行 )
- 高斯分布:误差可大可小,但是绝大多数情况下这个浮动不会太大,极小情况下浮动会比较大,符合正常情况。
由于误差服从高斯分布:
p
(
ϵ
i
)
=
1
2
π
σ
e
−
1
2
(
ϵ
i
σ
)
2
p(\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{\epsilon_i}{\sigma}\right)^2}
p(ϵi)=2πσ1e−21(σϵi)2
将预测值和误差带入上式得:
y
i
=
θ
⊤
x
i
+
ϵ
i
带入
p
(
ϵ
i
)
=
1
2
π
σ
e
−
1
2
(
ϵ
i
σ
)
2
:
p
(
y
i
∣
x
i
;
θ
)
=
1
2
π
σ
e
−
1
2
(
y
i
−
θ
⊤
x
i
σ
)
2
y_i = \theta^\top x_i + \epsilon_i \\ 带入\ \ p(\epsilon_i) = \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{\epsilon_i}{\sigma}\right)^2}:\\ p(y_i|x_i;\theta)=\frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2}
yi=θ⊤xi+ϵi带入 p(ϵi)=2πσ1e−21(σϵi)2:p(yi∣xi;θ)=2πσ1e−21(σyi−θ⊤xi)2
上式的似然函数如下:
L
(
θ
)
=
∏
i
=
1
m
p
(
y
i
∣
x
i
;
θ
)
=
∏
i
=
1
m
1
2
π
σ
e
−
1
2
(
y
i
−
θ
⊤
x
i
σ
)
2
L(\theta) = \prod_{i=1}^mp(y_i|x_i;\theta)=\prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2}
L(θ)=i=1∏mp(yi∣xi;θ)=i=1∏m2πσ1e−21(σyi−θ⊤xi)2
对似然函数的解释:
什么样的参数跟我们的数据组合后恰好是真实值
对数似然:
l
o
g
L
(
θ
)
=
l
o
g
∏
i
=
1
m
p
(
y
i
∣
x
i
;
θ
)
=
l
o
g
∏
i
=
1
m
1
2
π
σ
e
−
1
2
(
y
i
−
θ
⊤
x
i
σ
)
2
=
m
l
o
g
1
2
π
σ
−
1
σ
2
∗
1
2
∗
∑
i
=
1
m
(
y
i
−
θ
⊤
x
i
)
2
log L(\theta) =log \prod_{i=1}^mp(y_i|x_i;\theta)=log \prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma } e^{-\frac{1}{2}\left(\frac{y_i-\theta^\top x_i}{\sigma}\right)^2}\\=mlog\frac{1}{\sqrt{2 \pi}\sigma}-\frac{1}{\sigma ^2}*\frac12*\sum_{i=1}^m(y_i-\theta^\top x_i)^2
logL(θ)=logi=1∏mp(yi∣xi;θ)=logi=1∏m2πσ1e−21(σyi−θ⊤xi)2=mlog2πσ1−σ21∗21∗i=1∑m(yi−θ⊤xi)2
目标是让似然函数(对数变换之后)越大越好:
m
a
x
l
o
g
L
(
θ
)
→
m
i
n
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
i
−
θ
⊤
x
i
)
2
(最小二乘法)
max \ log L(\theta)\\ →min \ J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2(最小二乘法)
max logL(θ)→min J(θ)=21i=1∑m(yi−θ⊤xi)2(最小二乘法)
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
i
−
θ
⊤
x
i
)
2
J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2
J(θ)=21∑i=1m(yi−θ⊤xi)2即为最小二乘法。
将目标函数写为矩阵形式:
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
i
−
θ
⊤
x
i
)
2
=
1
2
(
X
θ
−
y
)
⊤
(
X
θ
−
y
)
对
θ
求偏导
:
∇
θ
J
(
θ
)
=
X
⊤
X
θ
−
X
⊤
y
令
∇
θ
J
(
θ
)
=
0
得
:
θ
=
(
X
⊤
X
)
−
1
X
⊤
y
J(\theta)=\frac12 \sum_{i=1}^m(y_i-\theta^\top x_i)^2= \frac12(X\theta-y)^\top (X\theta-y)\\ 对\theta 求偏导:\\ \nabla_\theta J(\theta)=X^\top X\theta-X^\top y\\ 令\nabla_\theta J(\theta)=0得:\\ \theta=(X^\top X)^{-1}X^\top y
J(θ)=21i=1∑m(yi−θ⊤xi)2=21(Xθ−y)⊤(Xθ−y)对θ求偏导:∇θJ(θ)=X⊤Xθ−X⊤y令∇θJ(θ)=0得:θ=(X⊤X)−1X⊤y
采用微分和迹的关系
d
f
=
t
r
(
(
∂
f
∂
X
)
⊤
d
X
)
df= tr((\frac{\partial f}{\partial X})^\top dX)
df=tr((∂X∂f)⊤dX)进行求导,求导过程如下:
d
J
(
θ
)
=
t
r
(
d
J
(
θ
)
)
=
d
[
1
2
(
X
θ
−
y
)
⊤
(
X
θ
−
y
)
]
=
t
r
[
d
(
1
2
(
θ
⊤
X
⊤
X
θ
−
2
y
⊤
X
θ
+
y
⊤
y
)
)
]
=
t
r
[
d
(
1
2
θ
⊤
X
⊤
X
θ
)
]
−
t
r
(
d
(
2
y
⊤
X
θ
)
)
+
t
r
(
d
(
y
⊤
y
)
)
=
t
r
(
1
2
d
θ
⊤
X
⊤
X
θ
)
+
t
r
(
1
2
θ
⊤
X
⊤
X
d
θ
)
−
t
r
(
2
y
⊤
X
d
θ
)
+
0
=
t
r
(
1
2
θ
⊤
X
⊤
X
d
θ
)
+
t
r
(
1
2
θ
⊤
X
⊤
X
d
θ
)
−
t
r
(
2
y
⊤
X
d
θ
)
=
t
r
(
θ
⊤
X
⊤
X
d
θ
−
2
y
⊤
X
d
θ
)
=
t
r
(
(
θ
⊤
X
⊤
X
−
2
y
⊤
X
)
d
θ
)
=
t
r
(
(
X
⊤
X
θ
−
2
X
⊤
y
)
⊤
d
θ
)
故:
∂
J
(
θ
)
∂
θ
=
X
⊤
X
θ
−
2
X
⊤
y
dJ(\theta)= tr(dJ(\theta))=d[\frac12(X\theta-y)^\top (X\theta-y)]\\ =tr[d(\frac12(\theta^\top X^\top X\theta-2y^\top X\theta+y^\top y))]\\ =tr[d(\frac12\theta^\top X^\top X\theta)]-tr(d(2y^\top X\theta))+tr(d(y^\top y))\\ =tr(\frac12d\theta^\top X^\top X\theta)+tr(\frac12\theta^\top X^\top Xd\theta)-tr(2y^\top Xd\theta)+0\\ =tr(\frac12\theta^\top X^\top Xd\theta)+tr(\frac12\theta^\top X^\top Xd\theta)-tr(2y^\top Xd\theta)\\ =tr(\theta^\top X^\top Xd\theta-2y^\top Xd\theta)=tr((\theta^\top X^\top X-2y^\top X)d\theta)\\ =tr(( X^\top X\theta - 2X^\top y)^\top d\theta)\\ 故:\\ \frac{\partial J(\theta)}{\partial \theta}=X^\top X\theta - 2X^\top y\\
dJ(θ)=tr(dJ(θ))=d[21(Xθ−y)⊤(Xθ−y)]=tr[d(21(θ⊤X⊤Xθ−2y⊤Xθ+y⊤y))]=tr[d(21θ⊤X⊤Xθ)]−tr(d(2y⊤Xθ))+tr(d(y⊤y))=tr(21dθ⊤X⊤Xθ)+tr(21θ⊤X⊤Xdθ)−tr(2y⊤Xdθ)+0=tr(21θ⊤X⊤Xdθ)+tr(21θ⊤X⊤Xdθ)−tr(2y⊤Xdθ)=tr(θ⊤X⊤Xdθ−2y⊤Xdθ)=tr((θ⊤X⊤X−2y⊤X)dθ)=tr((X⊤Xθ−2X⊤y)⊤dθ)故:∂θ∂J(θ)=X⊤Xθ−2X⊤y
当
X
⊤
X
X^\top X
X⊤X为满秩矩阵或者正定矩阵时,令偏导数
∂
J
(
θ
)
∂
θ
=
X
⊤
X
θ
−
2
X
⊤
y
=
0
\frac{\partial J(\theta)}{\partial \theta}=X^\top X\theta - 2X^\top y=0
∂θ∂J(θ)=X⊤Xθ−2X⊤y=0得到:
θ
=
(
X
⊤
X
)
−
1
X
⊤
y
\theta=(X^\top X)^{-1}X^\top y
θ=(X⊤X)−1X⊤y
其中 ( X ⊤ X ) − 1 (X^\top X)^{-1} (X⊤X)−1是矩阵 X ⊤ X X^\top X X⊤X的逆矩阵。但是现实任务中, X ⊤ X X^\top X X⊤X通常不是满秩矩阵,例如在许多任务中会遇到大量的变量,其数目甚至超过样例数,导致X的列数多于行数, X ⊤ X X^\top X X⊤X , X ⊤ X X^\top X X⊤X显然不满秩。此时可以解出多个 θ \theta θ,他们都能使均方差最小化。选择哪一个解作为输出,将由机器学习算法的归纳偏好决定,常见的做法是引入正则化项。