在上一篇中,我们介绍了机器学习任务的一般步骤。现在我们对具体任务进行讲解
文章目录
#一、模型#
给定训练数据集 D = { x i , y i } i = 1 N \textit{D}=\left \{ \mathbf{x}_{i} ,y_{i}\right \}_{i=1}^{N} D={xi,yi}i=1N ,其中 y ∈ R y\in \mathbb{R} y∈R。回归学习一个从输入 x \mathbf{x} x到输出 y y y的映射 f f f。当增加新的数据集时, 用学习到的映射 f f f对其进行预测 y ^ = f ( x ) \hat{y}=f(\mathbf{x}) y^=f(x)。若是学习到的这个映射 f f f是一个线性函数:
y ^ = f ( x ∣ w ) = w T x \hat{y}=f(\mathbf{x}|\mathbf{w})=\mathbf{w^{T}}\mathbf{x} y^=f(x∣w)=wTx
则我们称之为线性回归模型。
##1.目标函数##
前面我们已经提过,目标函数通常包括两项:损失函数和正则项
其中,我们的L2损失就使用到残差平方和(residual sum of squares,RSS):
R
S
S
=
∑
i
=
1
N
(
y
i
−
y
i
^
)
=
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
RSS=\sum_{i=1}^{N}(y_{i}-\hat{y_{i}})=\sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}x_{i}})^{2}
RSS=∑i=1N(yi−yi^)=∑i=1N(yi−wTxi)2
(1)、最小二乘线性回归(Ordinary Least Square,OLS):
由于线性模型比较简单,所以当
R
(
θ
)
=
0
R(\theta)=0
R(θ)=0时,目标函数为
J
(
w
)
=
∑
i
=
1
N
L
(
y
i
,
y
i
^
)
=
∑
i
=
1
N
(
y
i
−
y
i
^
)
=
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
J(\mathbf{w})=\sum_{i=1}^{N}L(y_{i},\hat{y_{i}})=\sum_{i=1}^{N}(y_{i}-\hat{y_{i}})=\sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}x_{i}})^{2}
J(w)=∑i=1NL(yi,yi^)=∑i=1N(yi−yi^)=∑i=1N(yi−wTxi)2
(2)、岭回归(Ridge Regression):
当正则项为L2时,即
R
(
θ
)
=
λ
∣
∣
w
∣
∣
2
R(\theta)=\lambda ||\mathbf{w}||^{2}
R(θ)=λ∣∣w∣∣2,目标函数为
J
(
w
)
=
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
+
λ
∣
∣
w
∣
∣
2
J(\mathbf{w})=\sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}x_{i}})^{2}+\lambda ||\mathbf{w}||^{2}
J(w)=∑i=1N(yi−wTxi)2+λ∣∣w∣∣2
(3)、Lasso模型:
当正则项为L1时,即
R
(
θ
)
=
λ
∣
w
∣
R(\theta)=\lambda |\mathbf{w}|
R(θ)=λ∣w∣,目标函数为
J
(
w
)
=
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
+
λ
∣
w
∣
J(\mathbf{w})=\sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}x_{i}})^{2}+\lambda |\mathbf{w}|
J(w)=∑i=1N(yi−wTxi)2+λ∣w∣
##2.概率解释##
(1)、最小二乘(线性)回归等价于极大似然估计
假设$y=f(x)+\varepsilon =\mathbf{w^{T}x}+\varepsilon
,
其
中
,其中
,其中\varepsilon
为
线
性
预
测
值
与
真
值
之
间
的
残
差
,
我
们
通
常
假
设
这
个
残
差
服
从
高
斯
分
布
,
为线性预测值与真值之间的残差,我们通常假设这个残差服从高斯分布,
为线性预测值与真值之间的残差,我们通常假设这个残差服从高斯分布,\varepsilon \sim N(0,\sigma ^{2})$.因此线性回归可以写成:
p
(
y
∣
x
,
θ
)
∼
N
(
y
∣
w
T
x
,
σ
2
)
p(y|\mathbf{x},\mathbf{\theta })\sim N(y|\mathbf{w^{T}x},\sigma ^{2})
p(y∣x,θ)∼N(y∣wTx,σ2),其中
θ
=
(
w
,
σ
2
)
\theta=(\mathbf{w},\sigma ^{2})
θ=(w,σ2)
我们复习下极大似然估计(Maximize Likelihood Estimator,MLE)的定义:
θ
^
=
a
r
g
m
a
x
θ
  
log
 
p
(
D
∣
θ
)
\hat{\theta} = \underset{\theta}{argmax}\; \log{}\, p(D|\theta)
θ^=θargmaxlogp(D∣θ)
其中(log)似然函数为:
l
(
θ
)
=
log
  
p
(
D
∣
θ
)
=
∑
i
=
1
N
log
 
p
(
y
i
∣
x
i
,
θ
)
l(\theta)=\log\;p(D|\theta)=\sum_{i=1}^{N}\log\, p(y_{i}|x_{i},\theta)
l(θ)=logp(D∣θ)=∑i=1Nlogp(yi∣xi,θ)
表示在参数为
θ
\theta
θ的情况下,数据
D
=
{
x
i
,
y
i
}
i
=
1
N
\textit{D}=\left \{ \mathbf{x}_{i} ,y_{i}\right \}_{i=1}^{N}
D={xi,yi}i=1N出现的概率。极大似然就是选择数据出现概率最大的参数。
线性回归法MLE:
p
(
y
i
∣
x
i
,
w
,
σ
2
)
=
N
(
y
i
∣
w
T
x
i
,
σ
2
)
=
1
2
π
σ
e
x
p
(
−
1
2
σ
2
(
(
y
i
−
w
T
x
i
)
2
)
)
p(y_{i}|\mathbf{x}_{i},\mathbf{w},\sigma ^{2})=N(y_{i}|\mathbf{w^{T}}\mathbf{x}_{i},\sigma ^{2})=\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{1}{2\sigma ^{2}}((y_{i}-\mathbf{w^{T}}\mathbf{x}_{i})^{2}))
p(yi∣xi,w,σ2)=N(yi∣wTxi,σ2)=2πσ1exp(−2σ21((yi−wTxi)2))
因为OLS的似然函数为:
l
(
θ
)
=
log
  
p
(
D
∣
θ
)
=
∑
i
=
1
N
log
 
p
(
y
i
∣
x
i
,
θ
)
l(\theta)=\log\;p(D|\theta)=\sum_{i=1}^{N}\log\, p(y_{i}|x_{i},\theta)
l(θ)=logp(D∣θ)=∑i=1Nlogp(yi∣xi,θ)
又因为极大似然可等价地写成极小负log似然损失(negative log likelihood,NLL):
N
L
L
(
θ
)
=
−
∑
i
=
1
N
log
 
p
(
y
i
∣
x
i
,
θ
)
NLL(\theta)=-\sum_{i=1}^{N}\log\, p(y_{i}|x_{i},\theta)
NLL(θ)=−∑i=1Nlogp(yi∣xi,θ)
=
−
∑
i
=
1
N
log
[
1
2
π
σ
e
x
p
(
−
1
2
σ
2
(
(
y
i
−
w
T
x
i
)
2
)
)
]
=-\sum_{i=1}^{N}\log[\frac{1}{\sqrt{2\pi }\sigma }exp(-\frac{1}{2\sigma ^{2}}((y_{i}-\mathbf{w^{T}}\mathbf{x}_{i})^{2}))]
=−∑i=1Nlog[2πσ1exp(−2σ21((yi−wTxi)2))]
=
N
2
log
(
2
π
σ
2
)
+
1
2
σ
2
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
=\frac{N}{2}\log(2\pi \sigma ^{2}) + \frac{1}{2\sigma ^{2}}\sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}}\mathbf{x}_{i})^{2}
=2Nlog(2πσ2)+2σ21∑i=1N(yi−wTxi)2
最大化似然公式L(θ)相当于最小化
N
L
L
(
θ
)
∼
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
NLL(\theta)\sim \sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}}\mathbf{x}_{i})^{2}
NLL(θ)∼∑i=1N(yi−wTxi)2 等价于最小二乘回归
J
(
w
)
J(\mathbf{w})
J(w)
(2)、正则回归等价于贝叶斯分布
假设残差分布
ε
∼
N
(
0
,
σ
2
)
\varepsilon \sim N(0,\sigma ^{2})
ε∼N(0,σ2),线性回归可以写成
p
(
y
∣
x
,
θ
)
∼
N
(
y
∣
w
T
x
,
σ
2
)
p(y|\mathbf{x},\mathbf{\theta })\sim N(y|\mathbf{w^{T}x},\sigma ^{2})
p(y∣x,θ)∼N(y∣wTx,σ2)
p
(
y
i
∣
x
i
,
w
,
σ
2
)
=
N
(
y
i
∣
w
T
x
i
,
σ
2
I
N
)
∝
e
x
p
(
−
1
2
σ
2
[
(
y
−
X
w
)
T
(
y
−
X
w
)
]
)
p(y_{i}|\mathbf{x}_{i},\mathbf{w},\sigma ^{2})=N(y_{i}|\mathbf{w^{T}}\mathbf{x}_{i},\sigma ^{2}\mathbf{I}_{N})\propto exp(-\frac{1}{2\sigma ^{2}}[(\mathbf{y}-\mathbf{Xw})^{T}(\mathbf{y}-\mathbf{Xw})])
p(yi∣xi,w,σ2)=N(yi∣wTxi,σ2IN)∝exp(−2σ21[(y−Xw)T(y−Xw)])
a、假设
w
\mathbf{w}
w的先验分布为高斯分布
w
∼
N
(
0
,
τ
2
)
\mathbf{w} \sim N(0,\tau ^{2})
w∼N(0,τ2)
所以 p ( w ) = ∏ j = 1 D N ( w j ∣ 0 , τ 2 ) ∝ e x p ( − 1 2 τ 2 ∑ j = 1 D w j 2 ) = e x p ( − 1 2 τ 2 [ w T w ] ) p(\mathbf{w})=\prod_{j=1}^{D}N(\mathbf{w}_{j}|0,\tau ^{2})\propto exp(-\frac{1}{2\tau^{2}}\sum_{j=1}^{D}\mathbf{w}^{2}_{j})=exp(-\frac{1}{2\tau^{2}}[\mathbf{w}^{T}\mathbf{w}]) p(w)=∏j=1DN(wj∣0,τ2)∝exp(−2τ21∑j=1Dwj2)=exp(−2τ21[wTw])
其中
1
/
τ
2
1/\tau ^{2}
1/τ2控制先验的强度
根据贝叶斯公式公式,得到参数的后验分布为
p
(
w
∣
X
,
y
,
σ
2
)
∝
p
(
y
i
∣
x
i
,
w
,
σ
2
)
p
(
w
)
p(\mathbf{w}|\mathbf{X},\mathbf{y},\sigma ^{2}) \propto p(y_{i}|\mathbf{x}_{i},\mathbf{w},\sigma ^{2})p(\mathbf{w})
p(w∣X,y,σ2)∝p(yi∣xi,w,σ2)p(w)
=
e
x
p
(
−
1
2
σ
2
[
(
y
−
X
w
)
T
(
y
−
X
w
)
]
−
1
2
τ
2
[
w
T
w
]
)
= exp(-\frac{1}{2\sigma ^{2}}[(\mathbf{y}-\mathbf{Xw})^{T}(\mathbf{y}-\mathbf{Xw})]-\frac{1}{2\tau^{2}}[\mathbf{w}^{T}\mathbf{w}])
=exp(−2σ21[(y−Xw)T(y−Xw)]−2τ21[wTw])
为方便计算,取对数
log
p
(
w
∣
X
,
y
,
σ
2
)
\log p(\mathbf{w}|\mathbf{X},\mathbf{y},\sigma ^{2})
logp(w∣X,y,σ2) 得到最大后验估计(MAP)等价于最小目标函数
J
(
w
)
=
(
y
−
X
w
)
T
(
y
−
X
w
)
+
σ
2
τ
2
w
T
w
J(\mathbf{w})=(\mathbf{y}-\mathbf{Xw})^{T}(\mathbf{y}-\mathbf{Xw})+\frac{\sigma ^{2}}{\tau ^{2}}\mathbf{w}^{T}\mathbf{w}
J(w)=(y−Xw)T(y−Xw)+τ2σ2wTw
对比下岭回归的目标函数
J
(
w
)
=
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
+
λ
∣
∣
w
∣
∣
2
J(\mathbf{w})=\sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}x_{i}})^{2}+\lambda ||\mathbf{w}||^{2}
J(w)=∑i=1N(yi−wTxi)2+λ∣∣w∣∣2
b、假设
w
\mathbf{w}
w的先验分布为Laplace分布
w
∼
N
(
0
,
b
)
\mathbf{w} \sim N(0,b)
w∼N(0,b)
所以 p ( w ) = ∏ j = 1 D N ( w j ∣ μ , b ) = 1 2 b e x p ( ∣ w − μ ∣ b ) p(\mathbf{w})=\prod_{j=1}^{D}N(\mathbf{w}_{j}|\mu ,b)= \frac{1}{2b}exp(\frac{|\mathbf{w}-\mu|}{b}) p(w)=∏j=1DN(wj∣μ,b)=2b1exp(b∣w−μ∣)
=
∏
j
=
1
D
N
(
w
j
∣
0
,
b
)
∝
e
x
p
(
∣
w
∣
b
)
=\prod_{j=1}^{D}N(\mathbf{w}_{j}|0 ,b) \propto exp(\frac{|\mathbf{w}|}{b})
=∏j=1DN(wj∣0,b)∝exp(b∣w∣)
根据贝叶斯公式公式,得到参数的后验分布为
p
(
w
∣
X
,
y
,
σ
2
)
∝
p
(
y
i
∣
x
i
,
w
,
σ
2
)
p
(
w
)
p(\mathbf{w}|\mathbf{X},\mathbf{y},\sigma ^{2}) \propto p(y_{i}|\mathbf{x}_{i},\mathbf{w},\sigma ^{2})p(\mathbf{w})
p(w∣X,y,σ2)∝p(yi∣xi,w,σ2)p(w)
=
e
x
p
(
−
1
2
σ
2
[
(
y
−
X
w
)
T
(
y
−
X
w
)
]
−
1
b
∣
w
∣
)
= exp(-\frac{1}{2\sigma ^{2}}[(\mathbf{y}-\mathbf{Xw})^{T}(\mathbf{y}-\mathbf{Xw})]-\frac{1}{b}|\mathbf{w}|)
=exp(−2σ21[(y−Xw)T(y−Xw)]−b1∣w∣)
为方便计算,取对数
log
p
(
w
∣
X
,
y
,
σ
2
)
\log p(\mathbf{w}|\mathbf{X},\mathbf{y},\sigma ^{2})
logp(w∣X,y,σ2) 得到最大后验估计(MAP)等价于最小目标函数
J
(
w
)
=
(
y
−
X
w
)
T
(
y
−
X
w
)
+
2
σ
2
b
∣
w
∣
J(\mathbf{w})=(\mathbf{y}-\mathbf{Xw})^{T}(\mathbf{y}-\mathbf{Xw})+\frac{2\sigma ^{2}}{b}|\mathbf{w}|
J(w)=(y−Xw)T(y−Xw)+b2σ2∣w∣
对比下Lasso回归的目标函数
J
(
w
)
=
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
+
λ
∣
w
∣
J(\mathbf{w})=\sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}x_{i}})^{2}+\lambda |\mathbf{w}|
J(w)=∑i=1N(yi−wTxi)2+λ∣w∣
#二、优化求解#
优化求解的目的是根据训练数据求目标函数取极小值的参数
w
^
=
a
r
g
 
m
i
n
w
J
(
w
)
\mathbf{\hat{w}}=\underset{\mathbf{w}}{arg\, min}J(\mathbf{w})
w^=wargminJ(w)
目标函数求极小值的方法:
一阶导数为0 :
∂
J
(
w
)
∂
w
=
0
\frac{\partial J(\mathbf{w})}{\partial \mathbf{w}}=0
∂w∂J(w)=0
二阶导数>0:
∂
2
J
(
w
)
∂
w
2
>
0
\frac{\partial^2 J(\mathbf{w})}{\partial \mathbf{w}^2}> 0
∂w2∂2J(w)>0
##1.OLS的优化求解##
J
(
w
)
=
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
=
(
y
−
w
X
)
T
(
y
−
w
X
)
J(\mathbf{w})=\sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}x_{i}})^{2}=(\mathbf{y-wX})^{T}(\mathbf{y-wX})
J(w)=∑i=1N(yi−wTxi)2=(y−wX)T(y−wX)
我们的目标是求解
w
\mathbf{w}
w,所以只取关于
w
\mathbf{w}
w的部分,得到
J
(
w
)
=
w
T
(
X
T
X
)
w
−
2
w
T
(
X
y
)
J(\mathbf{w})=\mathbf{w^{T}(X^{T}X)w-2w^{T}(Xy)}
J(w)=wT(XTX)w−2wT(Xy)
通过求导可得:
∂
J
(
w
)
∂
w
=
2
X
T
X
−
2
X
T
y
=
0
\frac{\partial J(\mathbf{w})}{\partial \mathbf{w}}=\mathbf{2X^{T}X-2X^{T}y}=0
∂w∂J(w)=2XTX−2XTy=0
X
T
X
w
=
X
T
y
\mathbf{X^{T}Xw=X^{T}y}
XTXw=XTy
所以:
w
^
O
L
S
=
(
X
T
X
)
−
1
X
T
y
\hat{\mathbf{w}}_{OLS}=\mathbf{(X^{T}X)^{-1}X^{T}y}
w^OLS=(XTX)−1XTy
这个式子可以通过奇异值分解(singular value decomposition,SVD)求解。
下面是SVD的表达:
对
X
X
X进行奇异值分解:
X
=
U
Σ
V
T
\boldsymbol{X=U\Sigma V^{T}}
X=UΣVT
其中:
U
T
U
=
I
N
\mathbf{U^{T}U}=\mathbf{I}_{N}
UTU=IN 为列正交
V
V
T
=
V
T
V
=
T
D
\mathbf{VV^{T}}=\boldsymbol{V^{T}V}=\mathbf{T}_{D}
VVT=VTV=TD为行列均正交
所以
X
T
=
V
Σ
U
T
\mathbf{X^{T}=V\Sigma U^{T}}
XT=VΣUT
所以
w
^
O
L
S
=
(
X
T
X
)
−
1
X
T
y
\hat{\mathbf{w}}_{OLS}=\mathbf{(X^{T}X)^{-1}X^{T}y}
w^OLS=(XTX)−1XTy
=
(
Σ
2
)
−
1
V
Σ
U
T
y
=\mathbf{(\Sigma ^{2})^{-1}V\Sigma U^{T}y}
=(Σ2)−1VΣUTy
=
V
Σ
−
1
U
T
y
=\mathbf{V\Sigma ^{-1}U^{T}y}
=VΣ−1UTy
OLS除了使用SVD求解外,还可以使用梯度下降法求解,在上一章中,我们看到梯度下降法的基本步骤:
a.先确定学习率$\eta $,再给定初始值
θ
0
\theta^{0}
θ0
b.计算目标函数在当前参数值的梯度:
▽
θ
=
∂
J
(
θ
t
)
∂
θ
\mathbf{\triangledown _{\theta}}=\frac{\partial J(\theta ^{t})}{\partial \theta }
▽θ=∂θ∂J(θt)
c.更新
θ
\theta
θ,使得
J
(
θ
)
J(\theta)
J(θ)越来越小:
θ
t
+
1
=
θ
t
−
η
▽
θ
\mathbf{\theta }^{t+1} = \mathbf{\theta }^{t}-\eta \triangledown _{\theta}
θt+1=θt−η▽θ
对于我们的OLS函数:
J
(
w
)
=
∑
i
=
1
N
(
y
i
−
w
T
x
i
)
2
J(\mathbf{w})=\sum_{i=1}^{N}(y_{i}-\mathbf{w^{T}x_{i}})^{2}
J(w)=∑i=1N(yi−wTxi)2
则梯度为:
g
(
w
)
=
∂
J
(
w
)
∂
w
=
∑
i
=
1
N
2
(
f
(
x
i
)
−
y
i
)
x
i
g(w)=\frac{\partial J(\mathbf{w})}{\partial \mathbf{w}}=\sum_{i=1}^{N}2(f(\mathbf{x}_{i})-y_{i})\mathbf{x}_{i}
g(w)=∂w∂J(w)=∑i=1N2(f(xi)−yi)xi
所以:
w
t
+
1
=
w
t
−
η
▽
w
\mathbf{w }^{t+1} = \mathbf{w }^{t}-\eta \triangledown _{ \mathbf{w}}
wt+1=wt−η▽w
=
w
t
−
2
η
∑
i
=
1
N
(
f
(
x
i
)
−
y
i
)
x
i
= \mathbf{w }^{t}-2\eta\sum_{i=1}^{N}(f(\mathbf{x}_{i})-y_{i})\mathbf{x}_{i}
=wt−2η∑i=1N(f(xi)−yi)xi
如此这样一直迭代下去。
##2.岭回归的优化求解##
岭回归的目标函数与最小二乘(OLS)只是相差一个正则项(
λ
∣
∣
w
∣
∣
2
\lambda ||\mathbf{w}||^{2}
λ∣∣w∣∣2)。所以类似的求解可得:
∂
J
(
w
)
∂
w
=
2
X
T
X
−
2
X
T
y
−
2
λ
w
T
=
0
\frac{\partial J(\mathbf{w})}{\partial \mathbf{w}}=\mathbf{2X^{T}X-2X^{T}y}-2\lambda \mathbf{w}^{T}=0
∂w∂J(w)=2XTX−2XTy−2λwT=0
w
^
r
i
g
d
e
=
(
X
T
X
+
λ
I
D
)
−
1
X
T
y
\hat{\mathbf{w}}_{rigde}=\mathbf{(X^{T}X+\lambda I_{D})^{-1}X^{T}y}
w^rigde=(XTX+λID)−1XTy
##3.lasso的优化求解##
lasso的目标函数是:
J
(
w
,
λ
)
=
R
S
S
(
w
)
+
λ
∣
∣
w
∣
∣
1
J(\mathbf{w},\lambda )=RSS(\mathbf{w})+\lambda ||\mathbf{w}||_{1}
J(w,λ)=RSS(w)+λ∣∣w∣∣1,但是该目标函数的正则项在
w
j
=
0
\mathbf{w}_{j}=0
wj=0不可导,所以这里我们不能用梯度SVD求解,也不能用梯度下降法求解。
所以我们引入坐标轴下降法。
a、在使用坐标下降法之前,我们想了解下次微分的概念:
为了处理不平滑的函数,扩展导数的表示,定义一个(凸)函数
f
f
f在
x
0
x_{0}
x0处的次梯度为一个标量c,使得:
f
(
x
)
−
f
(
x
0
)
≥
c
(
x
−
x
0
)
f(x)-f(x_{0})\geq c(x-x_{0})
f(x)−f(x0)≥c(x−x0)
如下图:
定义区间
[
a
,
b
]
[a,b]
[a,b]的子梯度集合为:
a
=
lim
x
→
x
0
−
f
(
x
)
−
f
(
x
0
)
x
−
x
0
,
b
=
lim
x
→
x
0
+
f
(
x
)
−
f
(
x
0
)
x
−
x
0
a=\lim_{x\rightarrow x_{0}^{-}}\frac{f(x)-f(x_{0})}{x-x_{0}},b=\lim_{x\rightarrow x_{0}^{+}}\frac{f(x)-f(x_{0})}{x-x_{0}}
a=limx→x0−x−x0f(x)−f(x0),b=limx→x0+x−x0f(x)−f(x0)
所有次梯度的区间称为函数
f
f
f在
x
0
x_{0}
x0处的次微分(subdefferential),用
∂
f
(
x
)
∣
x
0
\partial f(x)|_{x_{0}}
∂f(x)∣x0表示
例如:绝对值函数
f
(
x
)
=
∣
x
∣
f(x)=|x|
f(x)=∣x∣,其梯度为
∂
f
(
x
)
=
{
{
−
1
}
if
x
<
0
[
−
1
,
+
1
]
if
x
=
0
{
+
1
}
if
x
>
0
\partial f(x)=\begin{cases}\{-1\} & \text{ if } x<0 \\ [-1,+1]& \text{ if } x=0 \\ \{+1\}& \text{ if } x>0 \end{cases}
∂f(x)=⎩⎪⎨⎪⎧{−1}[−1,+1]{+1} if x<0 if x=0 if x>0
b、对lasso求导
目标函数:
J
(
w
,
λ
)
=
R
S
S
(
w
)
=
∑
i
=
1
N
(
y
i
−
w
i
T
x
i
)
2
+
λ
∣
∣
w
∣
∣
1
J(\mathbf{w},\lambda )=RSS(\mathbf{w})=\sum_{i=1}^{N}(y_{i}-\mathbf{w}_{i}^{T}\mathbf{x}_{i})^{2}+\lambda ||\mathbf{w}||_{1}
J(w,λ)=RSS(w)=∑i=1N(yi−wiTxi)2+λ∣∣w∣∣1
对
w
j
w_{j}
wj求导:
∂
∂
w
j
R
S
S
(
w
)
=
∂
∂
w
j
∑
i
=
1
N
(
y
i
−
(
w
−
j
T
x
i
,
−
j
+
w
j
x
i
j
)
)
2
\frac{\partial }{\partial w_{j}}RSS(\mathbf{w})=\frac{\partial }{\partial w_{j}}\sum_{i=1}^{N}(y_{i}-(\mathbf{w}^{T}_{-j}\mathbf{x}_{i,-j}+w_{j}x_{ij}))^{2}
∂wj∂RSS(w)=∂wj∂∑i=1N(yi−(w−jTxi,−j+wjxij))2
=
−
2
∑
i
=
1
N
(
y
i
−
w
−
j
T
x
i
,
−
j
−
w
j
x
i
j
)
x
i
j
=-2\sum_{i=1}^{N}(y_{i}-\mathbf{w}^{T}_{-j}\mathbf{x}_{i,-j}-w_{j}x_{ij})x_{ij}
=−2∑i=1N(yi−w−jTxi,−j−wjxij)xij
=
2
∑
i
=
1
N
w
j
x
i
j
2
−
2
∑
i
−
1
N
x
i
j
(
y
i
−
w
−
j
T
x
i
,
−
j
)
=2\sum_{i=1}^{N}w_{j}x_{ij}^{2}-2\sum_{i-1}^{N}x_{ij}(y_{i}-\mathbf{w}^{T}_{-j}\mathbf{x}_{i,-j})
=2∑i=1Nwjxij2−2∑i−1Nxij(yi−w−jTxi,−j)
令:
a
j
=
2
∑
i
=
1
N
w
j
x
i
j
2
a_{j}=2\sum_{i=1}^{N}w_{j}x_{ij}^{2}
aj=2∑i=1Nwjxij2,
c
j
=
2
∑
i
−
1
N
x
i
j
(
y
i
−
w
−
j
T
x
i
,
−
j
)
c_{j}=2\sum_{i-1}^{N}x_{ij}(y_{i}-\mathbf{w}^{T}_{-j}\mathbf{x}_{i,-j})
cj=2∑i−1Nxij(yi−w−jTxi,−j),其中
(
y
i
−
w
−
j
T
x
i
,
−
j
)
(y_{i}-\mathbf{w}^{T}_{-j}\mathbf{x}_{i,-j})
(yi−w−jTxi,−j)是利用
D
−
j
D-j
D−j维特征得到的预测的残差,则
c
j
c_{j}
cj为第
j
j
j维特征与残差的相关性之和
故
∂
∂
w
j
R
S
S
(
w
)
=
a
j
w
j
−
c
j
\frac{\partial }{\partial w_{j}}RSS(\mathbf{w})=a_{j}w_{j}-c_{j}
∂wj∂RSS(w)=ajwj−cj
那么
∂
w
j
J
(
w
,
λ
)
=
(
a
j
w
j
−
c
j
)
+
λ
∂
w
j
∣
∣
w
∣
∣
1
\partial _{w_{j}}J(w,\lambda )=(a_{j}w_{j}-c_{j})+\lambda \partial _{w_{j}}||\mathbf{w}||_{1}
∂wjJ(w,λ)=(ajwj−cj)+λ∂wj∣∣w∣∣1
=
{
{
a
j
w
j
−
c
j
−
λ
}
if
w
j
<
0
{
−
c
−
λ
,
−
c
j
+
λ
}
if
w
j
=
0
{
a
j
w
j
−
c
j
+
λ
}
if
w
j
>
0
=\begin{cases}\{a_{j}w_{j}-c_{j}-\lambda \} & \text{ if } w_{j}<0 \\ \{-c-\lambda ,-c_{j}+\lambda \}& \text{ if }w_{j}=0 \\ \{a_{j}w_{j}-c_{j}+\lambda\}& \text{ if } w_{j}>0 \end{cases}
=⎩⎪⎨⎪⎧{ajwj−cj−λ}{−c−λ,−cj+λ}{ajwj−cj+λ} if wj<0 if wj=0 if wj>0
当
∂
w
j
J
(
w
,
λ
)
=
0
\partial _{w_{j}}J(w,\lambda )=0
∂wjJ(w,λ)=0时最优解
所以
w
^
j
(
c
j
)
=
{
(
c
j
+
λ
)
/
a
j
if
c
j
<
−
λ
0
if
c
j
∈
[
λ
,
λ
]
(
c
j
−
λ
)
/
a
j
if
c
j
>
λ
\hat{w}_{j}(c_{j}) =\begin{cases}(c_{j}+\lambda )/a_{j} & \text{ if } c_{j}<-\lambda \\ 0& \text{ if } c_{j}\in [\lambda ,\lambda ] \\ (c_{j}-\lambda )/a_{j} & \text{ if } c_{j}>\lambda \end{cases}
w^j(cj)=⎩⎪⎨⎪⎧(cj+λ)/aj0(cj−λ)/aj if cj<−λ if cj∈[λ,λ] if cj>λ
根据
c
j
c_{j}
cj的不同,
∂
w
j
J
(
w
,
λ
)
=
0
\partial _{w_{j}}J(w,\lambda )=0
∂wjJ(w,λ)=0有以三种情况:
c、坐标轴下降法
1)、预计算
a
j
=
2
∑
i
=
1
N
x
j
2
a_{j}=2\sum_{i=1}^{N}x_{j}^{2}
aj=2∑i=1Nxj2
2)、初始化参数
w
\mathbf{w}
w(全0或者随机)
3)、循环直到收敛:
--for j = 0,1,2…D
·计算
c
j
=
2
∑
i
−
1
N
x
i
j
(
y
i
−
w
−
j
T
x
i
,
−
j
)
c_{j}=2\sum_{i-1}^{N}x_{ij}(y_{i}-\mathbf{w}^{T}_{-j}\mathbf{x}_{i,-j})
cj=2∑i−1Nxij(yi−w−jTxi,−j)
·更新
w
j
:
w
^
j
(
c
j
)
=
{
(
c
j
+
λ
)
/
a
j
if
c
j
<
−
λ
0
if
c
j
∈
[
λ
,
λ
]
(
c
j
−
λ
)
/
a
j
if
c
j
>
λ
w_{j}:\hat{w}_{j}(c_{j}) =\begin{cases}(c_{j}+\lambda )/a_{j} & \text{ if } c_{j}<-\lambda \\ 0& \text{ if } c_{j}\in [\lambda ,\lambda ] \\ (c_{j}-\lambda )/a_{j} & \text{ if } c_{j}>\lambda \end{cases}
wj:w^j(cj)=⎩⎪⎨⎪⎧(cj+λ)/aj0(cj−λ)/aj if cj<−λ if cj∈[λ,λ] if cj>λ
--选择变化幅度最大的维度进行更新
坐标轴下降法的特点:
· 为了找到一个函数的局部极小值,在每次迭代中可以在当前点处沿一个坐标方向进行一维搜索
·整个过程中循环使用不同的坐标方向。一个周期的一维搜索迭代过程相当于一个梯度迭代
坐标轴下降法需要注意是:
· 梯度下降方法是利用目标函数的导数(梯度)来确定搜索方向的,而该梯度方向可能不与任何坐标轴平行。
·而坐标轴下降法是利用当前坐标系统进行搜索,不需要求目标函数的导数,只按照某一坐标方向进行搜索最小值。(在稀疏矩阵上的计算速度非常快,同时也是Lasso回归最快的解法)
#三、模型评估与模型选择#
当模型训练好后,需要在校验集上采用一些度量准则检查模型预测的效果,可通过两个步骤去实现:
1)校验集的划分(train_test_split、交叉验证)
2)评价指标(sklearn.metrics)
在选择预测性能最好的模型过程中,我们还需要对模型中的一些超参数进行设置,如线性回归模型中的正则参数λ,以及例如OLS中的特征的数目等参数去选择模型。但是我们去确定参数时,是通过给定一定范围的数值作为输入的,该参数的搜索范围我们一般在Scikitlearn中使用的是网格搜索(GridSearch),且在Scikitlearn中,已经将交叉验证与网格搜索合并为一个函数:sklearn.model_selection.GridSearchCV。
在Scikitlearn中的modelselection模块提供的模型选择功能中,对于线性模型,留一交叉验证(N折交叉验证,亦称为leave-oneout cross-validation,LOOCV)有更简便的计算方式,因此Scikitlearn还提供了RidgeCV类和LassoCV类实现了这种方式。
RidgeCV中超参数λ用alpha表示,RidgeCV(alphas=(0.1,1.0,10.0),
fit_intercept=True,normalize=False,scoring=None,cv=None,gcv_mode=None,store_cv_values=False)
LassoCV的使用与RidgeCV类似,Scikitlearn还提供一个与Lasso类似的LARS(least angle regression,最小角回归),二者仅仅是优化方法不同,目标函数相同。有一点需要注意的是当数据集中特征维数很多且存在共线性时,LassoCV更合适。
模型的评价指标,在上一章中,我们已经确定了有如下几种准则:
(1)、开平均方误差(rooted mean squared error , RMSE):RMSE=
1
N
∑
i
=
1
N
(
y
i
^
−
y
i
)
2
\sqrt{\frac{1}{N}\sum_{i=1}^{N}(\hat{y_{i}}-y_{i})^{2}}
N1∑i=1N(yi^−yi)2
(2)、平均绝对误差(mean absolute error, MAE):MAE=
1
N
∑
i
=
1
N
∣
y
i
^
−
y
i
∣
\frac{1}{N}\sum_{i=1}^{N}|\hat{y_{i}}-y_{i}|
N1∑i=1N∣yi^−yi∣
(3)、R2 score:即考虑预测值和真值之间的差异,也考虑了问题本身真值之间的差异(scikit learn线性回归的缺省评价准则)
S
S
r
e
s
=
∑
i
=
1
N
(
y
i
^
−
y
i
)
2
SS_{res}=\sum_{i=1}^{N}(\hat{y_{i}}-y_{i})^{2}
SSres=∑i=1N(yi^−yi)2
S
S
t
o
t
=
∑
i
=
1
N
(
y
i
−
y
ˉ
)
2
SS_{tot}=\sum_{i=1}^{N}(y_{i}-\bar{y})^{2}
SStot=∑i=1N(yi−yˉ)2
R
2
=
1
−
S
S
r
e
s
S
S
t
o
t
R^{2}=1-\frac{SS_{res}}{SS_{tot}}
R2=1−SStotSSres
所以,
R
2
R^{2}
R2越大,模型越好。
我们的模型评估和选择,是在Scikitlearn上面做的,这个工具包封装了比较好的API,非常方便我们使用,下面是几种比较常见的API,有兴趣的话,可以去官方文档看下。
在模型的评价中,除了上述的指标外,我们也可以通过可视化将更为直观的将结果显示出来,比如
1)检查残差的分布
2)打印出预测值与真值的散点图
比如波士顿房价中预测残差的分布图:
前面我们已经说过,极大似然估计假设残差的分布正是为0均值的正态分布。上图中,残差也近似0均值的正太分布,说明拟合的还可以。
在看下预测值与真值的散点图:
当散点图如上所示,说明预测值和真值之间相关性很强,也说明模型效果愈佳。