- 主要参考资料为《小象学院-机器学习IV》
打个广告,这套视频真的非常赞,建议大家看三遍以上,每一遍都有新的收获,BiliBili上有免费资源,感谢邹博!!! - 所有内容,都是基于自己的理解,看官老爷们如果觉得哪里不对,那可能就是不对。
前言:在实际应用中,回归是非常常见的一类问题,当然用于解决回归问题的方法也有很多,例如线性回归(Linear Regression)、SVR(将SVM应用于回归)、随机森林回归、神经网络等等。线性回归属于比较弱的一种模型,在各大数据挖掘竞赛中,仅仅作为模型融合中的一部分。但是,线性回归也是非常重要的模型,因为它稳定、可解释性强、简单易实现、涉及到的思想、优化方式、正则化理论对于其他机器学习模型都是通用的,彻底理解线性回归的方方面面对理解其他模型很大的帮助。
一.问题场景
根据小象学院-机器学习IV,我也将问题场景设定为房价预测。具体而言,根据房子的信息,例如面积,第几楼层,年份,样式,采光等等信息(又称为特征向量)预测房价
y
y
y,特征向量记为
x
⃗
\vec{x}
x,将上述描述抽象为矩阵形式,即:
X
=
[
x
1
1
x
2
1
.
.
.
x
n
1
x
1
2
x
2
2
.
.
.
x
n
2
⋮
x
1
m
x
2
m
.
.
.
x
n
m
]
   
y
⃗
=
[
y
1
y
2
⋮
y
m
]
(
1
)
\mathbf{X}=\begin{bmatrix} x_{1}^{1} & x_{2}^{1} & ... & x_{n}^{1}\\ x_{1}^{2} & x_{2}^{2} & ... & x_{n}^{2}\\ \vdots \\x_{1}^{m} & x_{2}^{m} & ... & x_{n}^{m} \end{bmatrix}\:\, \, \vec{y}=\begin{bmatrix} y_{ }^{1}\\y_{ }^{2} \\\vdots \\y_{ }^{m} \end{bmatrix} (1)
X=⎣⎢⎢⎢⎡x11x12⋮x1mx21x22x2m.........xn1xn2xnm⎦⎥⎥⎥⎤y=⎣⎢⎢⎢⎡y1y2⋮ym⎦⎥⎥⎥⎤(1)
其中, x n m x_n^m xnm的上标 m m m表示第 m m m条样本,下标 n n n表示第 n n n个维度。
二.数据建模
在初中我们都学过,已知二维坐标系中的两个点
(
x
1
,
y
1
)
(x^{1},y^{1})
(x1,y1),
(
x
2
,
y
2
)
(x^{2},y^{2})
(x2,y2),可以通过联立方程组求解直线
k
1
x
+
k
2
y
+
b
=
0
k_{1}x+k_{2}y+b=0
k1x+k2y+b=0,建立
x
x
x与
y
y
y之间的联系。同样的,上述的房价预测场景中,我们也可以联立方程组,希望求解一组
(
θ
⃗
,
b
)
(\vec{\theta},b)
(θ,b)以此建立
x
⃗
\vec{x}
x与
y
y
y的精确关系:
θ
1
x
1
1
+
θ
2
x
2
1
+
.
.
.
.
+
θ
n
x
n
1
+
b
=
y
1
θ
1
x
1
2
+
θ
2
x
2
2
+
.
.
.
.
+
θ
n
x
n
2
+
b
=
y
2
⋮
θ
1
x
2
m
+
θ
2
x
2
m
+
.
.
.
.
+
θ
n
x
n
m
+
b
=
y
m
(
2
)
{\begin{matrix} \theta_{1}^{ }x_{1}^{1}+ \theta_{2}^{ }x_{2}^{1}+....+\theta_{n}^{ }x_{n}^{1}+b=y_{ }^{1} \\ \theta_{1}^{ }x_{1}^{2}+ \theta_{2}^{ }x_{2}^{2}+....+\theta_{n}^{ }x_{n}^{2}+b=y_{ }^{2} \\ \vdots\\ \theta_{1}^{ }x_{2}^{m}+ \theta_{2}^{ }x_{2}^{m}+....+\theta_{n}^{ }x_{n}^{m}+b=y_{ }^{m} \end{matrix}} (2)
θ1x11+θ2x21+....+θnxn1+b=y1θ1x12+θ2x22+....+θnxn2+b=y2⋮θ1x2m+θ2x2m+....+θnxnm+b=ym(2)
上式(2)中的
b
b
b也是一个变量,把
b
b
b写为
θ
n
+
1
∗
1
\theta_{n+1}*1
θn+1∗1,这样可以把式(2)写成矩阵形式,方便用线性代数求解。
X
⋅
θ
⃗
=
y
⃗
   
(
3
)
X\cdot \vec{\theta}=\vec{y}\: \: \: (3)
X⋅θ=y(3)
式(3)具体而言,为:
[
x
1
1
x
2
1
.
.
.
x
n
1
1
x
1
2
x
2
2
.
.
.
x
n
2
1
⋮
x
1
m
x
2
m
.
.
.
x
n
m
1
]
⋅
[
θ
1
θ
2
⋮
θ
n
+
1
]
=
[
y
1
y
2
⋮
y
m
]
   
(
4
)
\begin{bmatrix} x_{1}^{1} & x_{2}^{1} & ... & x_{n}^{1}&1\\ x_{1}^{2} & x_{2}^{2} & ... & x_{n}^{2}&1\\ \vdots \\x_{1}^{m} & x_{2}^{m} & ... & x_{n}^{m}&1\end{bmatrix} \cdot \begin{bmatrix}\theta_{1}\\\theta_{2} \\\vdots \\\theta_{n+1} \end{bmatrix}=\begin{bmatrix} y_{ }^{1}\\y_{ }^{2} \\\vdots \\y_{ }^{m} \end{bmatrix} \: \: \: (4)
⎣⎢⎢⎢⎡x11x12⋮x1mx21x22x2m.........xn1xn2xnm111⎦⎥⎥⎥⎤⋅⎣⎢⎢⎢⎡θ1θ2⋮θn+1⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡y1y2⋮ym⎦⎥⎥⎥⎤(4)
三.模型求解优化
线性回归的建模思想非常直观,但是在求解上式
(
2
)
(2)
(2)时,却难倒了当时的许多大数学家。如今的我们有很多种方法可以求解或者优化式(2)。首先介绍最直接了当的方式:
3.1.直接求解:
只需要求出
X
X
X的逆矩阵,
X
−
1
X^{-1}
X−1,就可以直接得到:
θ
⃗
=
X
−
1
∗
y
⃗
\vec{\theta}=X^{-1}*\vec{y}
θ=X−1∗y
这种方式仅仅适用于非常理想的情况,
X
X
X存在逆矩阵在实际任务中是非常苛刻的条件,只有满秩的方阵才可逆(样本数量和样本维度相同时,
X
X
X才是方阵)。换句话说,当二维平面中存在两个不重合的点时,你可以联立方程轻易的求出由这两点确定的直线,但是当二维平面中存在3个,4个或者100个不重合的点时,是不可能求出穿过所有点的直线的,即无解!把二维拓展到高维,也是同样的道理。以房价预测为例,在房价预测中,往往会搜集几万条样本,而特征维度也就20~50维之间,
X
X
X不是方阵,不可逆。
3.2.转为为损失函数求解
利用初中那点东西要想解决房价预测问题,写到这里已经变的不可能了,核心问题在于,上述问题是没有精确解的, 我们就退而求其次,既然得不到精确解,那就努力寻找一个尽可能好的近似解,这样我们设计损失函数为:
J
(
θ
)
=
min
θ
1
2
∑
i
=
1
m
(
θ
⃗
⋅
x
i
−
y
i
)
2
  
(
5
)
J(\theta)=\min_{\theta}\frac{1}{2}\sum_{i=1}^{m}(\vec{\theta}\cdot x_{ }^{i}-y^{i})^{2}\: \: (5)
J(θ)=θmin21i=1∑m(θ⋅xi−yi)2(5)
接下来唯一的问题,就是求解优化式(5),有多种方法求解,比如梯度下降或者求导,另导数等于0,求出极值点。为了让求导更加直观方便,先将式(5)写成矩阵形式:
J
(
θ
)
=
1
2
(
X
⋅
θ
−
y
)
T
(
X
⋅
θ
−
y
)
  
(
6
)
J(\theta)=\frac{1}{2}(X\cdot \theta-y)^{T}(X\cdot \theta-y)\: \: (6)
J(θ)=21(X⋅θ−y)T(X⋅θ−y)(6)
对向量
θ
\theta
θ求导可得:
J
(
θ
)
∂
θ
=
X
T
X
⋅
θ
−
X
T
X
  
(
7
)
\frac{J(\theta)}{\partial \theta}=X^{T}X\cdot \theta-X^{T}X\: \: (7)
∂θJ(θ)=XTX⋅θ−XTX(7)
如果式(7)中
X
T
X
X^{T}X
XTX可逆,那么,另
J
(
θ
)
∂
θ
=
0
\frac{J(\theta)}{\partial \theta}=0
∂θJ(θ)=0,可以得到:
θ
=
(
X
T
X
)
−
1
X
T
y
⃗
\theta=(X^{T}X)^{-1}X^{T}\vec{y}
θ=(XTX)−1XTy
那么,如果方阵
X
T
X
X^{T}X
XTX不可逆怎么办,绕了半天问题不是又没解了吗?这个嘛,首先,我用python测了好多数据,发现
X
T
X
X^{T}X
XTX的行列式的值没一个是等于0的(线性代数基本常识,行列式=0,矩阵不可逆)。因此在绝大多数的情况下,
θ
\theta
θ是有解的,对于极少数的情况,只需给
X
T
X
X^{T}X
XTX加上一个同形状的单位矩阵
λ
I
\lambda I
λI(
λ
\lambda
λ是系数),
X
T
X
X^{T}X
XTX一定是满秩的了,就可逆了,其实这个加
λ
I
\lambda I
λI的操作就是加入正则,这个在下文中再讲。
更加常规通用的方法,就是用梯度下降法去求解
θ
⃗
\vec\theta
θ,更新式为:
θ
j
′
=
θ
j
−
λ
∑
i
=
1
m
−
(
y
i
−
θ
⃗
⋅
x
i
)
x
j
i
\theta_j{}'=\theta_j-\lambda\sum_{i=1}^{m}-(y^i-\vec\theta\cdot x^i)x_j^i
θj′=θj−λi=1∑m−(yi−θ⋅xi)xji
四.从高斯分布角度解释 J ( θ ) J(\theta) J(θ)
从几何的角度(又称为最小二乘法,英文名字为least square method,吐槽一下,最小二乘法这个名字翻译的真二,明明可以叫最小平方误差法,既通俗,又直接。)已经能够非常直观的解释了
J
(
θ
)
J(\theta)
J(θ)了,但是依然扛不住某些杠精(比如本人)的追问:凭什么损失函数中要用平方,为什么绝对值不可以,用4次不用可以吗,用6次不可以吗,用其他正偶数次不可以吗?我的理解是,用正偶数次或者用绝对值从几何的角度都是可以的,都是一个道理,平方无非就是更容易求解。如果硬要用理论解释,那么可以从误差服从高斯分布的角度解释。毕竟,我们学的统计学习,在本文的第七部分,我也会介绍L1范数,L2范数同样可以看作一种先验知识。
用一条最合适的直线去拟合空间中点,拟合的非常好的点(点在直线上或者贴近直线,误差很小)是少数的,拟合的不好(点离直线非常远,误差很大),误差是服从高斯分布的,当然,这种拟合的好或者不好是相对的,这就好比在尖子班中,高考考670以上算考的好,占少数,650左右算正常,占多数,600分算是差的了,也占少数,整体符合高斯分布。放在普通高中的普通班,可能620算是很高了,也占少数,所以整体也符合高斯分布。In a word,只要样本数量够大,总有一款高斯分布适合你。不过杠精们应该会问,万一误差真的不是高斯分布呢??其实这种情况蛮普遍的,那这个问题就不能线性回归去解决了,用更复杂的模型吧。
现在,我们假设这条最优的直线就是
X
⋅
θ
⃗
=
y
⃗
X\cdot\vec{\theta}=\vec{y}
X⋅θ=y,接下来我们需要估计每个点由这条直线造成的误差所服从的高斯分布的参数,很自然的,使用极大似然估计来求参数。
y
i
=
θ
T
⋅
x
i
+
ε
i
y^{i}=\theta^{T}\cdot x^{i}+\varepsilon^{i}
yi=θT⋅xi+εi,其中
ε
i
\varepsilon^{i}
εi表示误差,我们强制性地认为
ε
i
\varepsilon^{i}
εi服从
μ
=
0
\mu=0
μ=0,
σ
2
=
σ
2
\sigma^{2}=\sigma^{2}
σ2=σ2的高斯分布。先解释一下为什么可以直接假设
μ
\mu
μ为0?其实这个很直观,我们可以通过调整直线的截距(
b
b
b),使得直线上方与下方的误差总和为0,而且也只有
μ
=
0
\mu=0
μ=0,所有的误差的平方和才是最小的,你可以自己在白纸上随便画几个点,再画条直线,大致意会一下,直线位于所有点的中间部位时,拟合效果应该是最好的。
ε
i
∼
N
(
0
,
σ
2
)
=
1
2
π
σ
e
x
p
(
−
(
0
−
ε
i
)
2
2
σ
2
)
\varepsilon ^{i}\sim N(0,\sigma^{2})=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(0-\varepsilon ^{i})^{2}}{2\sigma^{2}})
εi∼N(0,σ2)=2πσ1exp(−2σ2(0−εi)2)
把 ε i = y i − θ T ⋅ x i \varepsilon^{i}=y^{i}-\theta^{T}\cdot x^{i} εi=yi−θT⋅xi带入到上式中,可得:
ε i ∼ N ( 0 , σ 2 ) = 1 2 π σ e x p ( − ( θ T ⋅ x i − y i ) 2 2 σ 2 ) \varepsilon ^{i}\sim N(0,\sigma^{2})=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\theta^{T}\cdot x^{i}-y^{i})^{2}}{2\sigma^{2}}) εi∼N(0,σ2)=2πσ1exp(−2σ2(θT⋅xi−yi)2)
接来下,我们写出似然函数为:
L
(
θ
)
=
∏
i
=
1
m
1
2
π
σ
e
x
p
(
−
(
θ
T
⋅
x
i
−
y
i
)
2
2
σ
2
)
L(\theta)=\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\theta^{T}\cdot x^{i}-y^{i})^{2}}{2\sigma^{2}})
L(θ)=i=1∏m2πσ1exp(−2σ2(θT⋅xi−yi)2)
取对数似然函数可以得到:
l
(
θ
)
=
∑
i
=
1
m
l
o
g
1
2
π
σ
−
(
θ
T
⋅
x
i
−
y
i
)
2
2
σ
2
l(\theta)=\sum_{i=1}^{m}log\frac{1}{\sqrt{2\pi}\sigma}-\frac{(\theta^{T}\cdot x^{i}-y^{i})^{2}}{2\sigma^{2}}
l(θ)=i=1∑mlog2πσ1−2σ2(θT⋅xi−yi)2
由于,在上式中,
l
o
g
1
2
π
σ
log\frac{1}{\sqrt{2\pi}\sigma}
log2πσ1和
2
σ
2
2\sigma^{2}
2σ2是常数,对优化
l
(
θ
)
l(\theta)
l(θ)没有任何影响,直接当它们不存在,
l
(
θ
)
l(\theta)
l(θ)进一步简化为:
l
(
θ
)
=
∑
i
=
1
m
−
(
θ
T
⋅
x
i
−
y
i
)
2
l(\theta)=\sum_{i=1}^{m}-(\theta^{T}\cdot x_{ }^{i}-y^{i})^{2}
l(θ)=i=1∑m−(θT⋅xi−yi)2
在极大似然估计中,我们希望得到一个
θ
\theta
θ最大化
l
(
θ
)
l(\theta)
l(θ),也等价于最小化
−
l
(
θ
)
-l(\theta)
−l(θ):
m
i
n
−
l
(
θ
)
=
m
i
n
∑
i
=
1
m
(
θ
T
⋅
x
i
−
y
i
)
2
min-l(\theta)=min\sum_{i=1}^{m}(\theta^{T}\cdot x_{ }^{i}-y^{i})^{2}
min−l(θ)=mini=1∑m(θT⋅xi−yi)2
好了,到了这一步,我们从误差服从高斯分布的角度也导出了最终的损失函数,和上文中的一模一样。记得研一下第一次看邹博的视频时,看到他讲到这里,顿时觉得,哇好神奇啊!竟然还能这样推导。大道至简,殊途同归,也许这就是机器学习的魅力吧。
那么怎么解释下面这个损失函数呢?
J
(
θ
)
=
min
θ
1
2
∑
i
=
1
m
∣
θ
⃗
⋅
x
i
−
y
i
∣
J(\theta)=\min_{\theta}\frac{1}{2}\sum_{i=1}^{m}|\vec{\theta}\cdot x_{ }^{i}-y^{i}|
J(θ)=θmin21i=1∑m∣θ⋅xi−yi∣
其实只要搞懂了之前的内容,依样画葫芦,强制性的认为误差服从拉普拉斯分布,那么你就能很轻松的推出上面的损失函数。
f
(
x
)
=
1
2
λ
e
−
∣
x
−
μ
∣
λ
f(x)=\frac{1}{2\lambda }e^{-\frac{|x-\mu|}{\lambda }}
f(x)=2λ1e−λ∣x−μ∣
五.直线、曲线都是线性回归
在上文中,为了让问题阐述的更加简单却又不失本质性,我都是拿直线举例,但是直线的拟合能力实在不敢恭维,当数据如图(b)所示,无论直线怎么画,都无法较好的拟合(b)中的数据,非常直观地,(b)中数据的样子为抛物线的形状,理所应当应该使用抛物线去拟合。那么,这个时候,杠精可能会问,不是线性回归吗,抛物线又不是线性的,你这样怎么还能叫线性回归呢?记得研一下和师兄一起看邹博视频,看到这一部分时,我杠精了一下,问他:线性回归得到的是不是一条直线?他立马回答:废话,不然怎么叫线性回归。需要注意的是,线性回归中的线性特指参数是线性的,我们从小到大的做的绝大多数题目中,都是以
x
x
x为主角,二次函数,三次函数都是以
x
x
x的最高次数为标准,但是在机器学习中,
x
x
x仅仅是我们收集到的样本数据而已,说白了就是
θ
⃗
\vec\theta
θ的系数,
θ
⃗
\vec\theta
θ才是我们的主角,是未知的,是需要我们去求解的。一个模型是否线性的,仅仅取决于
θ
⃗
\vec\theta
θ的次数是否都是一次。回到一开始的问题,(b)中的数据点呈现出抛物线形状,我们就用抛物线
y
=
θ
1
x
2
+
θ
2
x
+
b
y=\theta_{1} x^{2}+\theta_{2}x + b
y=θ1x2+θ2x+b去拟合(b)中的数据点。
接下来的做法又是初中的东西了,把(b)中的点带入抛物线,联立方程组求解
θ
1
,
θ
2
\theta_{1},\theta_{2}
θ1,θ2,求解的方法以及可能会遇到的问题,我已经在本文第三部分中详细介绍了。由于
x
x
x是已知的,无论它一次也好,二次也罢,都是常数而已,而
θ
1
,
θ
2
\theta_{1},\theta_{2}
θ1,θ2都是一次的,所以尽管最后拟合出来的是一条抛物线,但是,依然是线性回归。
总结一下上面的内容,由于直线的拟合能力有限,我们就换成了拟合能力更强的抛物线去拟合(b)中的数据,如果数据变得更加复杂,可以尝试更高阶的曲线进行拟合,这是从模型的角度去思考问题。
现在我们换个角度,从特征的角度思考问题,(b)中的数据点仅仅只有一个一阶特征
x
x
x(
y
y
y是标签,不能算特征),对
y
y
y表达能力不够强,所以用直线拟合时效果不好。为此我们为(b)中每个数据点增加一个二阶特征
x
2
x^{2}
x2以此增强特征的表达能力,即:
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
(
x
3
,
y
3
)
,
…
…
,
(
x
m
,
y
m
)
(x_{1},y_{1}),(x_{2},y_{2}),(x_{3},y_{3}),……,(x_{m},y_{m})
(x1,y1),(x2,y2),(x3,y3),……,(xm,ym)
⇒ ( x 1 , x 1 2 , y 1 ) , ( x 2 , x 2 2 , y 2 ) , ( x 3 , x 3 2 , y 3 ) , … … , ( x m , x m 2 , y m ) \newline\Rightarrow(x_{1},x_{1}^{2},y_{1}),(x_{2},x_{2}^{2},y_{2}),(x_{3},x_{3}^{2},y_{3}),……,(x_{m},x_{m}^{2},y_{m}) ⇒(x1,x12,y1),(x2,x22,y2),(x3,x32,y3),……,(xm,xm2,ym)
在得到表达能力更强的特征
(
x
,
x
2
)
(x,x^{2})
(x,x2)之后,再用直线
y
=
θ
1
x
1
+
θ
2
x
2
+
b
y=\theta_{1} x_{1}+\theta_{2}x_{2} + b
y=θ1x1+θ2x2+b(三维空间中,应该算平面)进行拟合也能达到与抛物线一样的效果。
以上两个角度在数学上其实是一模一样的,但在思想上,我更倾向于后者,因为在实际的应用中,模型用来用去就那么几个(浮躁的竞赛圈,人人都在用XGBoost)。当效果不好的时候,如何进一步提升特征的表达能力,成了解决问题的关键。在很多数据挖掘竞赛中,不少TOP队伍都会有这样的操作,将手工提取特征再两两相加、相乘、相除、相减,然后利用特征选择方案筛选出更用于的特征,通过这样的操作,成绩会有一定的提升。这种两两操作的方法,实质上也是构造高阶特征,从而增加原始特征的表达能力。此外,从某种角度上来说,深度学习也是同样的道理,将原始输入的数据,通过多层的线性求和与非线性激活转化为了更高阶的特征,具有了更强的表达能力。
六.正则:为了更美好的回归
从第五部分的内容中,可以得出结论,在线性回归中,当数据较复杂时,拟合效果不够好,可以构造更高阶的特征让模型有更好的结果。那这样的是不是万能的呢???显眼,当然不是万能的,如果样本数量不够大,特征阶数又比较高,那很有可能会导致过拟合。过拟合的直观表现为:在训练集上效果非常好,损失降得很低,但是在测试上表现比较糟糕。我截取了一些小象PPT上的结果以便更直观的说明过拟合。
对于下图中红色的点,分别用1阶,2阶,……,8阶的曲线去拟合,
R
2
R^{2}
R2越大,表示拟合效果越好,
R
2
R^{2}
R2最大为1。从图中可以很明显的看出,构造越高阶的特征,确实能在训练集达到越好的效果,5阶以上的曲线已经能精确地穿过所有的点,但是最后得到的曲线并不是我们想要的样子,它们都曲扭的非常严重,如果用5阶以上的曲线去预测未知的数据,效果肯定很差。为什么高阶曲线会扭曲的这么严重呢?
我们打印出8条曲线对应的系数,可以发现,高阶特征项的系数的绝对值异常的大,8阶曲线前几个高阶特征项的系数的绝对值高达1000至4000左右,而那些比较平稳的曲线的各项系数的绝对值都非常小,高阶曲线严重扭曲的原因就这里,高阶项再配上一个绝对值非常大的系数,在输入端一个非常小的变化,都会在输出段引起非常大的变化,所以曲线才会扭来扭去。那么现在,一个新的问题出现了,我们能否找到这样的曲线:既能像高阶曲线那样尽可能穿过所有的点,穿不过,逼近也行,每个特征项的系数又能像低阶曲线一样小,曲线整体上比较平稳。办法当然是有的,解决这个问题的方法就是引入正则项。
引入正则项(惩罚项)的直观意义:在原始问题做优化的时候,不再是仅仅考虑拟合数据时的损失,还要考虑为了拟合数据所付出的代价,参数的大小,模型的复杂度都可以成为正则的一部分。更加通俗讲,假设我要从宁波到北京,优化目标为时间最短,即
m
i
n
(
时
间
)
min(时间)
min(时间),我得到的最优解就是坐飞机,但是,现在我作为一个学生党,不仅仅要考虑时间,还要考虑出行成本(代价),那么,这个时候我给我的优化目标添加一个出行成本正则项,那么整体的优化任务就成了
m
i
n
(
时
间
+
λ
出
行
成
本
)
min(时间+\lambda出行成本)
min(时间+λ出行成本),
λ
\lambda
λ用于控制出行成本的重要程度,如果
λ
\lambda
λ比较小,说明我不是很在乎路费,得到的最优解可能就是坐高铁,如果
λ
\lambda
λ比较大,说明我很在乎路费,那得到的最优解可能就是坐绿皮火车。
在线性回归中,也是同样的道理,如果我的优化目标仅仅是让损失最小,即
m
i
n
(
∑
i
=
1
m
(
θ
T
⋅
x
i
−
y
i
)
2
)
min(\sum_{i=1}^{m}(\theta^{T}\cdot x_{ }^{i}-y^{i})^{2})
min(∑i=1m(θT⋅xi−yi)2),那这个事情好办啊,直接上一个10阶的曲线可能就能把损失降维0,但现在我不仅仅要考虑损失,我还要考虑为了降低这个损失所付出的代价,这个代价就是曲线变的扭来扭去,追本溯源,曲线变的扭来扭去的幕后真凶是特性项的系数的绝对值太大了,参照
m
i
n
(
原
始
目
标
+
λ
代
价
)
min(原始目标+\lambda代价)
min(原始目标+λ代价)模式,我们可以写出加入正则项之后的线性回归的目标函数:
m
i
n
[
∑
i
=
1
m
(
θ
T
⋅
x
i
−
y
i
)
2
+
λ
∑
i
=
1
n
θ
i
2
]
min[\sum_{i=1}^{m}(\theta^{T}\cdot x_{ }^{i}-y^{i})^{2}+\lambda\sum_{i=1}^{n}\theta_{i}^{2}]
min[i=1∑m(θT⋅xi−yi)2+λi=1∑nθi2]
正则项
∑
i
=
1
n
θ
i
2
\sum_{i=1}^{n}\theta_{i}^{2}
∑i=1nθi2更加官方的名字较为L2范数,把里面的平方换成绝对值
∑
i
=
1
n
∣
θ
i
∣
\sum_{i=1}^{n}|\theta_{i}|
∑i=1n∣θi∣又被称为L1范数。线性回归结合不同的正则项就得到了以下不同的机器学习模型:
L
i
n
e
a
r
R
e
g
r
e
s
s
i
o
n
+
L
2
Linear Regression+L2
LinearRegression+L2:岭回归(Rigde Regression)
L
i
n
e
a
r
R
e
g
r
e
s
s
i
o
n
+
L
1
Linear Regression+L1
LinearRegression+L1:LASSO(Least absolute shrinkage and selection operator)
L
i
n
e
a
r
R
e
g
r
e
s
s
i
o
n
+
(
1
−
p
)
L
1
+
p
L
2
Linear Regression+(1-p)L1+pL2
LinearRegression+(1−p)L1+pL2:Elastic Net Regression
最后,放上加入L2正则后的效果图,非常明显,那些高阶曲线一下子就老实多了。
再来看看,每条曲线的系数是不是变小了?效果还是非常明显的。这里我列举了L2的效果图,篇幅有限,就不列举了L1了。
七.从贝叶斯的角度解释L1、L2正则
一大波杠精即将出现!“凭什么,就问凭什么,凭什么正则项要用平方或者绝对值,用4次不用可以吗,用6次不可以吗,用其他正偶数次不可以吗”。
我的理解是,用参数正偶数次之和做为正则项,从代价的角度来说是可以的,都是一个道理,平方与绝对值无非就是更容易求解。如果硬要用理论解释,那么可以从L1正则是假设参数服从拉普拉斯分布,L2正则是假设参数服从高斯分布的角度来解释(高斯分布真香,在哪都能用到)。
首先,简单介绍一下MAP(最大后验概率,Maximum a posteriori)与MLE(极大似然估计,Maximum Likelihood Estimate)的概念及两者的异同点。
详细内容可以参考这两篇博客,写的蛮不错的
https://www.cnblogs.com/sylvanas2012/p/5058065.html
https://blog.csdn.net/u011508640/article/details/72815981
首先,MLE和MAP的共同目的都是想要通过样本数据
x
x
x估计
θ
⃗
\vec\theta
θ,不同点在于这两者的思想是恰恰相反的。MLE认为参数
θ
⃗
\vec\theta
θ是一个固定的值,只是我们不知道而已,
x
x
x才是随机变量。MLE的目标是找出一组参数,使得模型产生出观测数据的概率最大。MLE的数学表达为:
m
a
x
θ
⃗
∏
i
=
1
m
P
(
x
i
∣
θ
⃗
)
  
(
87
)
\underset{\vec\theta}{max}\prod_{i=1}^{m}P(x_{i}|\vec\theta)\:\:(87)
θmaxi=1∏mP(xi∣θ)(87)
而MAP认为
x
x
x是已知的,只不过是我们搜集的数据而已,
θ
⃗
\vec\theta
θ才是随机变量,既然是随机变量,那么
θ
⃗
\vec\theta
θ有自己的分布,这个分布就是
P
(
θ
⃗
∣
x
)
P(\vec\theta|x)
P(θ∣x),也被称为后验概率,这就是MAP名字的由来。MAP的数学表达式为:
m
a
x
θ
⃗
∏
i
=
1
m
P
(
θ
⃗
∣
x
i
)
  
(
88
)
\underset{\vec\theta}{max}\prod_{i=1}^{m}P(\vec\theta|x_{i})\:\:(88)
θmaxi=1∏mP(θ∣xi)(88)
MLE与MAP的数学表达式看上去仅仅只是
θ
⃗
与
x
i
\vec\theta与x_{i}
θ与xi的位置调换了一下,但是在思想上却有着深刻的不同。接下来的问题是如何求解式(88),看官们看到这里可能会说,式(88)和(87)不是一样的吗,只不过
θ
⃗
与
x
i
\vec\theta与x_{i}
θ与xi的位置调换了一下而已,MLE怎么解,MAP就怎么解呗!但是,问题就在于
P
(
θ
⃗
∣
x
)
P(\vec\theta|x)
P(θ∣x)是没有直接具体的数学表达式的,
连式子都写不出来,更别谈优化求解了。这个时候,我们就需要借助一个非常牛逼的公式,贝叶斯公式
P
(
θ
⃗
∣
x
)
=
P
(
x
∣
θ
⃗
)
P
(
θ
⃗
)
P
(
x
)
P(\vec\theta|x) = \frac{P(x|\vec\theta)P(\vec\theta)}{P(x)}
P(θ∣x)=P(x)P(x∣θ)P(θ),因此式(88)可以写为:
m
a
x
θ
∏
i
=
1
m
P
(
θ
⃗
∣
x
i
)
⇒
m
a
x
θ
⃗
∏
i
=
1
m
P
(
x
i
∣
θ
⃗
)
P
(
θ
⃗
)
P
(
x
i
)
因
为
x
i
是
个
已
知
的
数
据
,
所
以
P
(
x
i
)
是
一
个
常
数
,
可
以
当
成
不
存
在
⇒
m
a
x
θ
⃗
∏
i
=
1
m
P
(
x
i
∣
θ
⃗
)
P
(
θ
⃗
)
  
(
89
)
\underset{\theta}{max}\prod_{i=1}^{m}P(\vec\theta|x_{i})\newline\Rightarrow \underset{\vec\theta}{max}\prod_{i=1}^{m}\frac{P(x_{i}|\vec\theta)P(\vec\theta)}{P(x_i)}因为x_i是个已知的数据,所以P(x_i)是一个常数,可以当成不存在\newline\Rightarrow \underset{\vec\theta}{max}\prod_{i=1}^{m}P(x_{i}|\vec\theta)P(\vec\theta)\:\:(89)
θmaxi=1∏mP(θ∣xi)⇒θmaxi=1∏mP(xi)P(xi∣θ)P(θ)因为xi是个已知的数据,所以P(xi)是一个常数,可以当成不存在⇒θmaxi=1∏mP(xi∣θ)P(θ)(89)
上面这个式子说明了什么,如果去掉 P ( θ ⃗ ) P(\vec\theta) P(θ),那就变成了MLE,在本文的第四部分已经详细介绍了如何用MLE推导损失函数,在贝叶斯理论中, P ( θ ⃗ ) P(\vec\theta) P(θ)也被称为先验信息,所谓先验,指的是 P ( ⃗ θ ) P\vec(\theta) P(θ)是完完全全是靠经验给定的,没有任何的数学依据,我说它是什么就是什么。乘上一个 P ( θ ⃗ ) P(\vec\theta) P(θ),表示为 θ ⃗ \vec\theta θ增加一个先验的约束。接下来,我们继续推导式(89), θ ⃗ \vec\theta θ是一个向量,我们强制性的认为 θ ⃗ \vec\theta θ每个元素 θ i \theta_i θi都是独立的,且服从 μ = 0 \mu=0 μ=0, σ 2 = α 2 \sigma^2=\alpha^2 σ2=α2的高斯分布,即 θ i ∼ N ( 0 , α 2 ) \theta_i\sim N(0,\alpha^2) θi∼N(0,α2)。别问我为什么,贝叶斯就这样。那 P ( θ ⃗ ) P(\vec\theta) P(θ)就等于 ∏ j = 1 n 1 2 π α e x p ( − ( θ i ) 2 2 α 2 ) \prod_{j=1}^{n}\frac{1}{\sqrt{2\pi}\alpha}exp(-\frac{(\theta_i)^2}{2\alpha^2}) ∏j=1n2πα1exp(−2α2(θi)2),对于 P ( x i ∣ θ ⃗ ) P(x_{i}|\vec\theta) P(xi∣θ),依然和之前一样,假设误差服从高斯分布,代入式(89),得到:
m a x θ ∏ i = 1 m 1 2 π σ e x p ( − ( θ T ⋅ x i − y i ) 2 2 σ 2 ) ∗ ∏ j = 1 n 1 2 π α e x p ( − ( θ i ) 2 2 α 2 ) 取 对 数 ⇒ m a x θ ⃗ ∑ i = 1 m l o g ( 1 2 π σ e x p ( − ( θ T ⋅ x i − y i ) 2 2 σ 2 ) ) + ∑ i = 1 n l o g ( 1 2 π α e x p ( − ( θ i ) 2 2 α 2 ) ) ⇒ m a x θ ⃗ ∑ i = 1 m l o g ( 1 2 π σ ) + ( − ( θ T ⋅ x i − y i ) 2 2 σ 2 ) + ∑ i = 1 n l o g ( 1 2 π α ) + ( − ( θ i ) 2 2 α 2 ) \underset{\theta}{max}\prod_{i=1}^{m}\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\theta^{T}\cdot x^{i}-y^{i})^{2}}{2\sigma^{2}})*\prod_{j=1}^{n}\frac{1}{\sqrt{2\pi}\alpha}exp(-\frac{(\theta_i)^2}{2\alpha^2})\newline取对数\Rightarrow \underset{\vec\theta}{max}\sum_{i=1}^{m}log(\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\theta^{T}\cdot x^{i}-y^{i})^{2}}{2\sigma^{2}}))+\sum_{i=1}^{n}log(\frac{1}{\sqrt{2\pi}\alpha}exp(-\frac{(\theta_i)^2}{2\alpha^2}))\newline\Rightarrow \underset{\vec\theta}{max}\sum_{i=1}^{m}log(\frac{1}{\sqrt{2\pi}\sigma})+(-\frac{(\theta^{T}\cdot x^{i}-y^{i})^{2}}{2\sigma^{2}})+\sum_{i=1}^{n}log(\frac{1}{\sqrt{2\pi}\alpha})+(-\frac{(\theta_i)^2}{2\alpha^2}) θmaxi=1∏m2πσ1exp(−2σ2(θT⋅xi−yi)2)∗j=1∏n2πα1exp(−2α2(θi)2)取对数⇒θmaxi=1∑mlog(2πσ1exp(−2σ2(θT⋅xi−yi)2))+i=1∑nlog(2πα1exp(−2α2(θi)2))⇒θmaxi=1∑mlog(2πσ1)+(−2σ2(θT⋅xi−yi)2)+i=1∑nlog(2πα1)+(−2α2(θi)2)
由于
l
o
g
(
1
2
π
σ
)
log(\frac{1}{\sqrt{2\pi}\sigma})
log(2πσ1)和
l
o
g
(
1
2
π
α
)
log(\frac{1}{\sqrt{2\pi}\alpha})
log(2πα1)都是常数项,直接删掉,
m
a
x
θ
⃗
l
(
θ
⃗
)
\underset{\vec\theta}{max}l(\vec\theta)
θmaxl(θ)等价于
m
i
n
θ
⃗
(
−
l
(
θ
⃗
)
)
\underset{\vec\theta}{min}(-l(\vec\theta))
θmin(−l(θ))
⇒
m
i
n
θ
⃗
∑
i
=
1
m
(
θ
T
⋅
x
i
−
y
i
)
2
2
σ
2
+
∑
j
=
1
n
(
θ
i
)
2
2
α
2
\Rightarrow\underset{\vec\theta}{min}\sum_{i=1}^{m}\frac{(\theta^{T}\cdot x^{i}-y^{i})^{2}}{2\sigma^{2}}+\sum_{j=1}^{n}\frac{(\theta_i)^2}{2\alpha^2}
⇒θmini=1∑m2σ2(θT⋅xi−yi)2+j=1∑n2α2(θi)2
提出
1
σ
2
\frac{1}{\sigma^2}
σ21得到:
⇒
m
i
n
θ
⃗
∑
i
=
1
m
1
2
(
θ
T
⋅
x
i
−
y
i
)
2
+
σ
2
2
α
2
∑
j
=
1
n
(
θ
i
)
2
\Rightarrow\underset{\vec\theta}{min}\sum_{i=1}^{m}{\frac{1}{2}(\theta^{T}\cdot x^{i}-y^{i})^{2}}+\frac{\sigma^2}{2\alpha^2}\sum_{j=1}^{n}{(\theta_i)^2}
⇒θmini=1∑m21(θT⋅xi−yi)2+2α2σ2j=1∑n(θi)2
最后,把
σ
2
2
α
2
\frac{\sigma^2}{2\alpha^2}
2α2σ2看成
λ
\lambda
λ。到此为止,我们从假设参数服从高斯分布的角度推导出了线性回归+L2正则的目标函数,如果是线性回归+L1正则,该怎么推导呢,只要把高斯分布换成拉普拉斯分布就行了,别的都是一样的。
最后再来说说MLE和MAP,比较有趣的是,MLE其实是MAP的一种特例,怎么理解呢?很简单,当先验信息
P
(
θ
⃗
)
=
1
P(\vec\theta)=1
P(θ)=1时,MAP:
m
a
x
θ
⃗
∏
i
=
1
m
P
(
x
i
∣
θ
⃗
)
P
(
θ
⃗
)
\underset{\vec\theta}{max}\prod_{i=1}^{m}P(x_{i}|\vec\theta)P(\vec\theta)
θmax∏i=1mP(xi∣θ)P(θ)就变成了MLE:
m
a
x
θ
⃗
∏
i
=
1
m
P
(
x
i
∣
θ
⃗
)
\underset{\vec\theta}{max}\prod_{i=1}^{m}P(x_{i}|\vec\theta)
θmax∏i=1mP(xi∣θ)。
P
(
θ
⃗
)
=
1
P(\vec\theta)=1
P(θ)=1的含义是什么?只有常数的概率才会永远等于1,这说明
θ
⃗
\vec\theta
θ是一个固定的值,不是一个随机变量,这不是就MLE的基本思想吗?
附言
欢迎大家提问,我都会一一作答,有什么问题也可以发我邮箱990241337@qq.com
线性回归解析解的傻瓜式记法:
X
⋅
θ
⃗
=
y
⃗
⇒
X
T
X
⋅
θ
⃗
=
X
T
y
⃗
⇒
(
X
T
X
)
−
1
X
T
X
⋅
θ
⃗
=
(
X
T
X
)
−
1
X
T
y
⃗
⇒
θ
⃗
=
(
X
T
X
)
−
1
X
T
y
⃗
X\cdot \vec{\theta}=\vec{y} \newline\Rightarrow X^{T}X\cdot \vec{\theta}=X^{T}\vec{y} \newline\Rightarrow (X^{T}X)^{-1}X^{T}X\cdot \vec{\theta}=(X^{T}X)^{-1}X^{T}\vec{y} \newline\Rightarrow\vec{\theta}=(X^{T}X)^{-1}X^{T}\vec{y}
X⋅θ=y⇒XTX⋅θ=XTy⇒(XTX)−1XTX⋅θ=(XTX)−1XTy⇒θ=(XTX)−1XTy