什么是线性回归?
先举个例子。
上图显示的是银行贷款的数据,不同工资、不同年龄可能拿到的贷款额度。我们假设工资和年龄这两个特征和最后的贷款额度满足线性关系,那么我们最后就能用一条线来拟合我们的数据点,使得工资年龄特征和贷款额度满足以下关系。
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
其中
θ
1
\theta_1
θ1是工资参数,
θ
2
\theta_2
θ2是年龄参数,
θ
0
\theta_0
θ0是偏置项。
h
θ
(
x
)
h_{\theta}(x)
hθ(x)是目标的贷款额度。当然在实际情况中可能影响最终目标值的特征不止两个,所以我们写成一种更通用的形式。
h
θ
(
x
)
=
∑
i
=
0
n
θ
i
x
i
=
θ
T
x
h_{\theta}(x) =\sum_{i=0}^{n}\theta_ix_i=\theta^Tx
hθ(x)=i=0∑nθixi=θTx
此处的
x
0
x_0
x0用一个全为1的列向量代替。我们用一组线性的参数去拟合目标值,并不一定能得到完全准确的结果,也就是说我们的真实值和目标值之间一定存在差异。这个差异就是误差
E
\mathcal{E}
E。对每个样本都有误差满足下式
y
(
i
)
=
θ
T
x
(
i
)
+
E
(
i
)
y^{(i)}=\theta^{T}x^{(i)}+\mathcal{E}^{(i)}
y(i)=θTx(i)+E(i)
误差
根据实际的情况,误差应该应该是独立、同分布、服从均值为0方差为 σ 2 \sigma^2 σ2的高斯分布。对误差的这三大特性的理解很重要。
独立:A和B同时来银行贷款,他们之间的贷款业务并不会互相影响。
同分布:AB来的同一家银行贷款,遵循同样的一套规则。
高斯分布:贷款的过程中,可能会出现多给或者少给的现象,但是绝大多数情况下,浮动并不会太大。
有些小伙伴可能忘记高斯分布长啥样了,这里放一张图帮大家回忆一下。
高斯分布横轴表示的是变量的值,纵轴表示的概率密度,高斯分布和X轴围成的面积就是总的概率,也就是1。由图我们可以看出,变量越接近0时,出现的可能性越大。
高斯分布的公式如下
p
(
x
;
μ
,
σ
)
=
1
2
π
e
x
p
(
−
(
x
−
μ
)
2
2
σ
2
)
p(x;\mu,\sigma)=\frac{1}{\sqrt{2\pi}}exp(-\frac{(x-\mu)^2}{2\sigma^2})
p(x;μ,σ)=2π1exp(−2σ2(x−μ)2)
故误差服从均值为0方差为
σ
2
\sigma^2
σ2的高斯分布表示如下
p
(
E
(
i
)
)
=
1
2
π
e
x
p
(
−
(
E
(
i
)
)
2
2
σ
2
)
p(\mathcal{E}^{(i)})=\frac{1}{\sqrt{2\pi}}exp(-\frac{(\mathcal{E}^{(i)})^2}{2\sigma^2})
p(E(i))=2π1exp(−2σ2(E(i))2)
又因为
y
(
i
)
=
θ
T
x
(
i
)
+
E
(
i
)
y^{(i)}=\theta^{T}x^{(i)}+\mathcal{E}^{(i)}
y(i)=θTx(i)+E(i)
所以
E
(
i
)
=
y
(
i
)
−
θ
T
x
(
i
)
\mathcal{E}^{(i)}=y^{(i)}-\theta^{T}x^{(i)}
E(i)=y(i)−θTx(i)
p ( y ( i ) ∣ x ( i ) ; θ ) = 1 2 π e x p ( − ( y ( i ) − θ ( T ) x ( i ) ) 2 2 σ 2 ) p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}}exp(-\frac{(y^{(i)}-\theta^{(T)}x^{(i)})^2}{2\sigma^2}) p(y(i)∣x(i);θ)=2π1exp(−2σ2(y(i)−θ(T)x(i))2)
似然函数
接下来我们要引入似然函数,似然函数这个东西我从一开始学就觉得很……抽象。嗯,现在还是很抽象。
这里我们就化繁为简,直接说似然函数到底干了一件什么事情。
似然函数 是 根据你的样本数据 去 估计参数的值。
就相当于,当你通过某种方式获得了一组样本数据,这组样本数据应该符合某种潜在的规则,我们通过这组样本数据去反推一组参数,使得参数和我们的样本数据组合以后能推出最接近真实预测结果的值。
说到这里是不是觉得很熟悉,对,实际上这就是我们一开始就在做的事情,我们手上有一组工资年龄的特征和贷款额度的数据。特征和贷款额度之间应该符合某种潜在的规则。我们利用这组已知的数据的值去探究潜在的规则,也就是
θ
T
\theta^{T}
θT的值。
对每一个样本,都有
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
1
2
π
e
x
p
(
−
(
y
(
i
)
−
θ
(
T
)
x
(
i
)
)
2
2
σ
2
)
p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}}exp(-\frac{(y^{(i)}-\theta^{(T)}x^{(i)})^2}{2\sigma^2})
p(y(i)∣x(i);θ)=2π1exp(−2σ2(y(i)−θ(T)x(i))2)
表示给定参数θ后这个样本这组特征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}^mp(y^{(i)}|x^{(i)};\theta)=\prod_{i=0}^m\frac{1}{\sqrt{2\pi}}exp(-\frac{(y^{(i)}-\theta^{(T)}x^{(i)})^2}{2\sigma^2})
L(θ)=i=0∏mp(y(i)∣x(i);θ)=i=0∏m2π1exp(−2σ2(y(i)−θ(T)x(i))2)
∏ \prod ∏是累乘的意思,也就是每个样本概率的乘积。
关于参数θ的似然函数L(θ|x)(在数值上)等于给定参数θ后变量X的概率。我们希望L(θ)的值越大越好,也就是误差越小越好,误差越小,我们的预测值和真实值就会越接近。
那我们要如何求解L(θ)的最大值呢?这里用到一个小技巧,就是对数。计算机在计算乘法的时候,消耗的时间会比加法多得多。我们通过对数,能够把乘法转换为加法。
l
o
g
A
B
=
l
o
g
A
+
l
o
g
B
logAB=logA+logB
logAB=logA+logB
我们给似然函数加上对数。
l
o
g
L
(
θ
)
=
l
o
g
∏
i
=
0
m
1
2
π
e
x
p
(
−
(
y
(
i
)
−
θ
(
T
)
x
(
i
)
)
2
2
σ
2
)
logL(\theta)=log\prod_{i=0}^m\frac{1}{\sqrt{2\pi}}exp(-\frac{(y^{(i)}-\theta^{(T)}x^{(i)})^2}{2\sigma^2})
logL(θ)=logi=0∏m2π1exp(−2σ2(y(i)−θ(T)x(i))2)
把累乘转换为累加
l
o
g
L
(
θ
)
=
∑
i
=
1
m
l
o
g
1
2
π
e
x
p
(
−
(
y
(
i
)
−
θ
(
T
)
x
(
i
)
)
2
2
σ
2
)
logL(\theta)=\sum_{i=1}^mlog\frac{1}{\sqrt{2\pi}}exp(-\frac{(y^{(i)}-\theta^{(T)}x^{(i)})^2}{2\sigma^2})
logL(θ)=i=1∑mlog2π1exp(−2σ2(y(i)−θ(T)x(i))2)
展开化简
l
o
g
L
(
θ
)
=
∑
i
=
1
m
l
o
g
1
2
π
e
x
p
(
−
(
y
(
i
)
−
θ
(
T
)
x
(
i
)
)
2
2
σ
2
)
=
m
l
o
g
1
2
π
σ
−
1
2
1
σ
2
∑
i
=
1
m
(
y
(
i
)
−
θ
(
T
)
x
(
i
)
)
2
logL(\theta)=\sum_{i=1}^mlog\frac{1}{\sqrt{2\pi}}exp(-\frac{(y^{(i)}-\theta^{(T)}x^{(i)})^2}{2\sigma^2})\\\qquad\qquad\quad =mlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{2}\frac{1}{\sigma^2}\sum_{i=1}^m{(y^{(i)}-\theta^{(T)}x^{(i)})^2}
logL(θ)=i=1∑mlog2π1exp(−2σ2(y(i)−θ(T)x(i))2)=mlog2πσ1−21σ21i=1∑m(y(i)−θ(T)x(i))2
对于减号左边的项,是一个常数且恒正,减号右边的项也是恒正,前面我们提到要让L(θ)的值越大越好,也就是logL(θ)的值越大越好,所以此处减号右边的项应该要越小越好。
这里我们把减号右边的项提取出来。
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
(
T
)
x
(
i
)
)
2
J(\theta)=\frac{1}{2}\sum_{i=1}^m{(y^{(i)}-\theta^{(T)}x^{(i)})^2}
J(θ)=21i=1∑m(y(i)−θ(T)x(i))2
J(θ)即为我们的目标函数,现在我们要做的事情就是求J(θ)的极小值。(其实也就是最小二乘的推导)
将目标函数展开
J
(
θ
)
=
1
2
∑
i
=
1
m
(
y
(
i
)
−
θ
(
T
)
x
(
i
)
)
2
=
1
2
∑
i
=
1
m
(
θ
(
T
)
x
(
i
)
−
y
(
i
)
)
2
=
1
2
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta)=\frac{1}{2}\sum_{i=1}^m{(y^{(i)}-\theta^{(T)}x^{(i)})^2} \\\quad\quad=\frac{1}{2}\sum_{i=1}^m{(\theta^{(T)}x^{(i)}-y^{(i)})^2} \\\quad\quad=\frac{1}{2}\sum_{i=1}^m{(h_\theta(x^{(i)})-y^{(i)})^2}
J(θ)=21i=1∑m(y(i)−θ(T)x(i))2=21i=1∑m(θ(T)x(i)−y(i))2=21i=1∑m(hθ(x(i))−y(i))2
因为对于矩阵有
X
2
=
X
T
X
X^2=X^TX
X2=XTX,所以
J
(
θ
)
=
1
2
(
X
θ
−
y
)
T
(
X
θ
−
y
)
J(\theta)=\frac{1}{2}(X\theta-y)^T(X\theta-y)
J(θ)=21(Xθ−y)T(Xθ−y)
偏导为0的点就是极小值所在的点。所以我们对目标函数求偏导。
∇
θ
J
(
θ
)
=
∇
θ
(
1
2
(
X
θ
−
y
)
T
(
X
θ
−
y
)
)
\nabla_{\theta}J(\theta)= \nabla_{\theta}(\frac{1}{2}(X\theta-y)^T(X\theta-y))
∇θJ(θ)=∇θ(21(Xθ−y)T(Xθ−y))
因为
(
A
+
B
)
T
=
A
T
+
B
T
(A+B)^T=A^T+B^T
(A+B)T=AT+BT
( A B ) T = B T + A T (AB)^T=B^T+A^T (AB)T=BT+AT
所以
∇
θ
J
(
θ
)
=
∇
θ
(
1
2
(
X
θ
−
y
)
T
(
X
θ
−
y
)
)
\nabla_{\theta}J(\theta)= \nabla_{\theta}(\frac{1}{2}(X\theta-y)^T(X\theta-y))
∇θJ(θ)=∇θ(21(Xθ−y)T(Xθ−y))
= ∇ θ ( 1 2 ( θ T X T − y T ) ( X θ − y ) \quad\quad\quad\quad\ \ = \nabla_{\theta}(\frac{1}{2}(\theta^TX^T-y^T)(X\theta-y) =∇θ(21(θTXT−yT)(Xθ−y)
= ∇ θ ( 1 2 ( θ T X T X θ − θ T X T y T − y T X θ + y T y ) ) \qquad\qquad\qquad\quad\quad\quad\quad\quad\;\;= \nabla_{\theta}(\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty^T-y^TX\theta+y^Ty)) =∇θ(21(θTXTXθ−θTXTyT−yTXθ+yTy))
因为对于矩阵有
d
x
T
A
x
d
x
=
2
A
x
\frac{dx^TAx}{dx}=2Ax
dxdxTAx=2Ax
d A T B d A = B \frac{dA^TB}{dA}=B dAdATB=B
d A B d B = A T \frac{dAB}{dB}=A^T dBdAB=AT
所以
J
(
θ
)
=
∇
θ
(
1
2
(
θ
T
X
T
X
θ
−
θ
T
X
T
y
T
−
y
T
X
θ
+
y
T
y
)
)
=
1
2
(
2
X
T
X
θ
−
X
T
y
−
(
y
T
X
)
T
)
=
X
T
X
θ
−
X
T
y
J(\theta)= \nabla_{\theta}(\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty^T-y^TX\theta+y^Ty)) \\=\frac{1}{2}(2X^TX\theta-X^Ty-(y^TX)^T)=X^TX\theta-X^Ty
J(θ)=∇θ(21(θTXTXθ−θTXTyT−yTXθ+yTy))=21(2XTXθ−XTy−(yTX)T)=XTXθ−XTy
令偏导为0,则
θ
=
(
X
T
X
)
−
1
X
T
y
\theta=(X^TX)^{-1}X^Ty
θ=(XTX)−1XTy
θ即为我们最终需要的参数结果。推导完成~撒花~
这里补充一句,通过线性回归的方式可以直接求解出我们的参数矩阵,但实际情况下,很多时候问题不一定是线性可解的,这时我们就必须换一种思路,比如梯度下降的方式求解。
PS:本文是参考唐宇迪的机器学习实践课程——线性回归课程的推理过程自己做的一个小的总结梳理。好多知识总是学了以后就忘,所以这边拿“小本本”记下来。如果有写的不恰当的地方,欢迎大家指正~