线性回归是机器学习中比较基础的一个算法,对于机器学习方法来说,我把它记为以下三步:
1. 建立模型
2. 目标函数推导
3. 参数优化求解
- 模型
由线性函数 y = a x + b y=ax+b y=ax+b,推广到多维情况,模型记为: h = θ T x h=\theta^{T}x h=θTx,θ是m维的向量,x为m*n,即有m个样本,每个样本有n个特征。但,其实,对每个样本: y ( i ) = θ T x ( i ) + ε ( i ) y^{(i)}=θ^{T}x^{(i)}+ε^{(i)} y(i)=θTx(i)+ε(i),其中ε(i)是误差,即:真实值=预测值+误差。
- 目标函数推导
有了模型
h
=
θ
T
x
h=\theta^{T}x
h=θTx 剩下的就是通过样本来估计出参数θ,推导如下:
从误差入手,由中心极限定理可假设误差ε服从高斯分布N(0,δ),即:
p
(
ε
(
i
)
)
=
1
2
π
δ
e
x
p
(
−
(
ε
(
i
)
)
2
2
δ
2
)
p(ε^{(i)})=\frac{1}{{\sqrt{2\pi}δ}}exp^{(-\frac{(ε^{(i)})^2}{2δ^2})}
p(ε(i))=2πδ1exp(−2δ2(ε(i))2) 由于误差=真实值-预测值,故有:
p
(
ε
(
i
)
)
=
1
2
π
δ
e
x
p
(
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
δ
2
)
=
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
p(ε^{(i)})=\frac{1}{{\sqrt{2\pi}δ}}exp^{(-\frac{(y^{(i)}-θ^{T}x^{(i)})^2}{2δ^2})}=p(\left. y^{(i)} \right|x^{(i)};θ)
p(ε(i))=2πδ1exp(−2δ2(y(i)−θTx(i))2)=p(y(i)∣∣∣x(i);θ),即:确定θ,给定一个x(i),y(i)的概率密度函数是多少。只看第二个等式,x、y可从样本获得,即可以估计出θ的值,用最大似然估计,有:
L
(
θ
)
=
∏
i
=
0
m
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
∏
i
=
0
m
1
2
π
δ
e
x
p
(
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
δ
2
)
L(\theta)=\prod_{i=0}^m p(\left. y^{(i)} \right|x^{(i)};θ) =\prod_{i=0}^m \frac{1}{{\sqrt{2\pi}δ}}exp^{(-\frac{(y^{(i)}-θ^{T}x^{(i)})^2}{2δ^2})}
L(θ)=i=0∏mp(y(i)∣∣∣x(i);θ)=i=0∏m2πδ1exp(−2δ2(y(i)−θTx(i))2) 两边取对数有:
l
(
θ
)
=
log
L
(
θ
)
=
log
∏
i
=
0
m
1
2
π
δ
e
x
p
(
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
δ
2
)
=
∑
i
=
0
m
log
1
2
π
δ
e
x
p
(
−
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
2
δ
2
)
=
m
log
1
2
π
δ
−
1
δ
2
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
\begin{aligned} l(θ)= \log L(\theta)&=\log \prod_{i=0}^m \frac{1}{{\sqrt{2\pi}δ}}exp^{(-\frac{(y^{(i)}-θ^{T}x^{(i)})^2}{2δ^2})} \\ &=\sum_{i=0}^m \log\frac{1}{{\sqrt{2\pi}δ}}exp^{(-\frac{(y^{(i)}-θ^{T}x^{(i)})^2}{2δ^2})} \\&=m\log \frac{1}{{\sqrt{2\pi}δ}} - \frac{1}{δ^2}\frac{1}{2}\sum_{i=1}^m {{(y^{(i)}-θ^{T}x^{(i)})^2}} \end{aligned}
l(θ)=logL(θ)=logi=0∏m2πδ1exp(−2δ2(y(i)−θTx(i))2)=i=0∑mlog2πδ1exp(−2δ2(y(i)−θTx(i))2)=mlog2πδ1−δ2121i=1∑m(y(i)−θTx(i))2,我们的目标是最大化l(θ),但后面式子可以看出,只有后面的加和项与θ有关,记目标函数
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
J(θ)=\frac{1}{2}\sum_{i=1}^m {{(y^{(i)}-θ^{T}x^{(i)})^2}}
J(θ)=21i=1∑m(y(i)−θTx(i))2,这也是最小二乘的一个推导,故
max
θ
l
(
θ
)
=
min
θ
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
=
min
θ
J
(
θ
)
\max_{θ}l(θ)=\min_{θ} \frac{1}{2} \sum_{i=1}^m {{(y^{(i)}-θ^{T}x^{(i)})^2}}=\min_{θ}J(θ)
θmaxl(θ)=θmin21i=1∑m(y(i)−θTx(i))2=θminJ(θ)
- 求解参数
现在有了优化目标函数
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
J(θ)=\frac{1}{2}\sum_{i=1}^m {{(y^{(i)}-θ^{T}x^{(i)})^2}}
J(θ)=21i=1∑m(y(i)−θTx(i))2 那么如何求得θ得最优解呢?
对整个样本来看,换一种写法
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
=
1
2
(
θ
T
X
−
Y
)
2
=
1
2
(
θ
T
X
−
Y
)
T
(
θ
T
X
−
Y
)
=
1
2
(
θ
T
X
T
X
θ
−
Y
T
X
θ
−
θ
T
X
T
Y
+
Y
T
Y
)
\begin{aligned} J(θ)&=\frac{1}{2}\sum_{i=1}^m {{(y^{(i)}-θ^{T}x^{(i)})^2}}= \frac{1}{2} {{(θ^{T}X-Y)^2}} \\ &=\frac{1}{2}{{(θ^{T}X-Y)^T}}{{(θ^{T}X-Y)}} \\ &=\frac{1}{2}(θ^TX^TXθ-Y^TXθ-θ^TX^TY+Y^TY) \\ \end{aligned}
J(θ)=21i=1∑m(y(i)−θTx(i))2=21(θTX−Y)2=21(θTX−Y)T(θTX−Y)=21(θTXTXθ−YTXθ−θTXTY+YTY)求导令值等于0,即令:
∇
J
(
θ
)
=
X
T
X
θ
−
X
T
Y
=
0
\nabla J(θ)=X^TXθ-X^TY=0
∇J(θ)=XTXθ−XTY=0
得
X
T
X
θ
=
X
T
Y
X^TXθ=X^TY
XTXθ=XTY 若X^TX可逆,则
θ
=
(
X
T
X
)
−
1
X
T
Y
θ=(X^TX)^{-1}X^TY
θ=(XTX)−1XTY 若X^TX不可逆或为防止过拟合则
θ
=
(
X
T
X
−
λ
I
)
−
1
X
T
Y
θ=(X^TX-\lambda I)^{-1}X^TY
θ=(XTX−λI)−1XTY λ取值很小。
上面是直接求解θ,很多时候直接求解并不散那么好计算,实际上一般都采用优化迭代的思想来求解θ。
同样的从目标函数入手:
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
J(θ)=\frac{1}{2}\sum_{i=1}^m {{(y^{(i)}-θ^{T}x^{(i)})^2}}
J(θ)=21i=1∑m(y(i)−θTx(i))2 J(θ)对第j个θ求梯度,有:
∇
J
(
θ
)
∇
θ
j
=
∇
∇
θ
j
1
2
(
h
θ
(
x
)
−
y
)
2
=
(
h
θ
(
x
)
−
y
)
∇
∇
θ
j
(
h
θ
(
x
)
−
y
)
=
(
h
θ
(
x
)
−
y
)
∇
∇
θ
j
(
∑
i
=
1
m
h
θ
j
(
x
j
i
)
−
y
i
)
=
(
h
θ
(
x
)
−
y
)
x
j
\begin{aligned} \frac {\nabla J(θ)}{\nablaθ_j} &=\frac {\nabla }{\nablaθ_j} \frac{1}{2} (h_θ(x)-y)^2=(h_θ(x)-y)\frac {\nabla }{\nablaθ_j} (h_θ(x)-y) \\ &=(h_θ(x)-y)\frac {\nabla }{\nablaθ_j} (\sum_{i=1}^m h_{θ_j}(x_{j}^i)-y^i) \\ &=(h_θ(x)-y)x_{j} \end{aligned}
∇θj∇J(θ)=∇θj∇21(hθ(x)−y)2=(hθ(x)−y)∇θj∇(hθ(x)−y)=(hθ(x)−y)∇θj∇(i=1∑mhθj(xji)−yi)=(hθ(x)−y)xj 故由梯度下降算法得到更新规则:
θ
j
:
=
θ
j
−
α
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
)
x
j
θ_j :=θ_j-\alpha \sum_{i=1}^m (h_{θ}(x^i)-y^i))x_j
θj:=θj−αi=1∑m(hθ(xi)−yi))xj 这个公式需要m各样本一起,数据大,一般设置mini batch为k,将m化为多份,每份有k样本,用以下更新规则:
θ
j
:
=
θ
j
−
α
∑
i
=
1
k
(
h
θ
(
x
i
)
−
y
i
)
)
x
j
θ_j :=θ_j-\alpha \sum_{i=1}^k (h_{θ}(x^i)-y^i))x_j
θj:=θj−αi=1∑k(hθ(xi)−yi))xj
以上,是线性回归的一些推导,有时间在继续往后更新。