1.线性模型
1.1 基本形式
一般形式:
f
(
x
)
=
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
d
x
d
+
b
f(x)=w_1x_1+w_2x_2+...+w_dx_d+b
f(x)=w1x1+w2x2+...+wdxd+b
写成向量形式:
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b
f(x)=wTx+b
x
=
[
x
1
;
x
2
;
.
.
.
;
x
d
]
x=[x_1;x_2;...;x_d]
x=[x1;x2;...;xd]代表输入数据集,
w
=
[
w
1
;
w
2
;
.
.
.
;
w
d
]
w=[w_1;w_2;...;w_d]
w=[w1;w2;...;wd]代表权重,
b
b
b代表偏置
1.2 线性回归
给定数据集 D = [ ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) ] D={[(x_1,y_1),(x_2,y_2),...,(x_m,y_m)]} D=[(x1,y1),(x2,y2),...,(xm,ym)],其中 x i = ( x i 1 ; x i 2 ; . . . ; x i d ) x_i=(x_{i1}; x_{i2} ;...; x_{id}) xi=(xi1;xi2;...;xid),每一个 x i x_i xi都可以看成一个具体特征的数据集,比如西瓜的色泽、房屋的面积等, x i d x_{id} xid则是其特征下的具体数值。
我们首先只讨论一个特征下的线性回归。
f
(
x
i
)
=
w
T
x
i
+
b
,
使
得
f
(
x
i
)
≃
y
i
f(x_i)=w^Tx_i+b,使得f(x_i)\simeq y_i
f(xi)=wTxi+b,使得f(xi)≃yi
我们的目标是通过最小化
f
(
x
)
f(x)
f(x)和
y
y
y的差别,来确定
w
,
b
w,b
w,b,因此损失函数为:
J
(
w
,
b
)
=
1
m
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
J(w,b)=\frac{1}{m}\sum_{i=1}^{m} (f(x_i) - y_i)^2
J(w,b)=m1i=1∑m(f(xi)−yi)2
这里最小化模型和数据之间的差别用的是基于欧几里得距离的均方误差,基于均方误差的模型求解的方法也被称为最小二乘法,因此这也算是一个参数估计问题。
(
w
∗
,
b
∗
)
=
argmin
(
w
,
b
)
J
(
w
,
b
)
(w^*,b^*)=\underset{(w,b)}{\operatorname{argmin}}J(w,b)
(w∗,b∗)=(w,b)argminJ(w,b)
学过微积分的都知道,最小化常用的方法是求导置零:
∂
∂
w
J
(
w
,
b
)
=
2
(
w
∑
i
=
1
m
x
i
2
−
∑
i
=
1
m
(
y
i
−
b
)
x
i
)
,
∂
∂
b
J
(
w
,
b
)
=
2
(
m
b
−
∑
i
=
1
m
(
y
i
−
w
x
i
)
)
\dfrac{\partial }{\partial w} J(w,b)=2(w\sum_{i=1}^{m}x_i^2 - \sum_{i=1}^{m}(y_i-b) x_i ) , \\ \dfrac{\partial }{\partial b} J(w,b)=2(mb - \sum_{i=1}^{m}(y_i - wx_i) )
∂w∂J(w,b)=2(wi=1∑mxi2−i=1∑m(yi−b)xi),∂b∂J(w,b)=2(mb−i=1∑m(yi−wxi))
上式置零就能得到
w
,
b
w,b
w,b最优解的闭式(closed-form)解:
w
=
∑
i
=
1
m
y
i
(
x
i
−
x
ˉ
)
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
2
)
b
=
1
m
∑
i
=
1
m
(
y
i
−
w
x
i
)
w=\frac{\sum_{i=1}^{m} y_i(x_i - \bar x )}{\sum_{i=1}^{m} x_i^2 - \frac{1}{m}(\sum_{i=1}^{m} x_i^2)} \\ b = \frac{1}{m} \sum_{i=1}^{m} (y_i - wx_i)
w=∑i=1mxi2−m1(∑i=1mxi2)∑i=1myi(xi−xˉ)b=m1i=1∑m(yi−wxi)
1.2.1 多元线性回归
如果考虑到所有特征的数据集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
.
.
.
,
(
x
m
,
y
m
)
}
D=\{ (x_1,y_1),(x_2,y_2),...,(x_m,y_m) \}
D={(x1,y1),(x2,y2),...,(xm,ym)},
d
d
d个特征,每个特征下有
m
m
m个值.
f
(
x
)
=
w
T
x
+
b
,
使
得
f
(
x
)
≃
y
w
=
(
w
1
;
w
2
;
.
.
;
w
m
)
f(x)=w^Tx+b,使得f(x)\simeq y \\ w= (w_1;w_2;..;w_m)
f(x)=wTx+b,使得f(x)≃yw=(w1;w2;..;wm)
我们将输入的数据集写成一个大型矩阵X,每行对应于一个特征,
w
^
\hat w
w^则对应于每个特征的权重,利用矩阵的乘法则能将特征与权重一一对应。
X
=
[
x
11
x
12
.
.
.
x
1
d
1
x
21
x
22
.
.
.
x
2
d
1
.
.
.
.
.
.
.
.
x
m
1
x
m
2
.
.
.
x
m
d
1
]
=
[
x
1
T
1
x
2
T
1
.
.
x
m
T
1
]
X = \begin{bmatrix} x_{11} & x_{12} & ... & x_{1d} & 1 \\ x_{21} & x_{22} & ... & x_{2d} & 1\\ . & . & . & . \\ . & . & . & . \\ x_{m1} & x_{m2} & ... & x_{md} & 1 \\ \end{bmatrix} = \begin{bmatrix} x_1^T &1\\ x_2^T &1 \\. \\ . \\x_m^T&1 \end{bmatrix}
X=⎣⎢⎢⎢⎢⎡x11x21..xm1x12x22..xm2...........x1dx2d..xmd111⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡x1Tx2T..xmT111⎦⎥⎥⎥⎥⎤
类似的可用最小二乘参数估计求解。
J
(
w
,
b
)
=
(
y
−
X
w
^
)
T
(
y
−
X
w
^
)
J(w,b) = (y-X\hat w)^T(y-X\hat w)
J(w,b)=(y−Xw^)T(y−Xw^)
其中,
y
=
(
y
1
;
y
2
;
.
.
.
;
y
m
)
,
w
^
=
(
w
;
b
)
y=(y_1;y_2;...;y_m),\hat w=(w;b)
y=(y1;y2;...;ym),w^=(w;b)
(
w
∗
,
b
∗
)
=
argmin
(
w
,
b
)
J
(
w
,
b
)
(w^*,b^*)=\underset{(w,b)}{\operatorname{argmin}}J(w,b)
(w∗,b∗)=(w,b)argminJ(w,b)
求出闭式解:
∂
J
∂
w
^
=
2
X
T
(
X
T
x
^
−
y
)
\dfrac{\partial J}{\partial \hat{w}} = 2X^T(X^T\hat{x}-y)
∂w^∂J=2XT(XTx^−y)
由于涉及矩阵逆的计算,当
X
T
X
X^TX
XTX为满秩矩阵或正定矩阵时,估计出的最优解
w
w
w,,这种方法也称为正规方程求解(normal equation method)
w
∗
^
=
(
X
T
X
)
−
1
X
T
y
\hat{w^*}=(X^TX)^{-1}X^Ty
w∗^=(XTX)−1XTy
这里的
w
∗
^
=
(
w
^
,
b
^
)
\hat{w^*}=(\hat{w},\hat{b})
w∗^=(w^,b^),故令
x
^
=
(
x
i
;
1
)
\hat{x}=(xi;1)
x^=(xi;1),最后学到的多元回归模型为:
f
(
x
i
^
)
=
x
^
(
X
T
X
)
−
1
X
T
y
f(\hat{x_i})=\hat{x}(X^TX)^{-1}X^Ty
f(xi^)=x^(XTX)−1XTy
但实际上
X
T
X
X^TX
XTX往往不是满秩矩阵,有时候遇到的特征的属性值的数量远远大于特征的数量,则方程有多组解,选择哪一个解作为输出,将有学习算法的归纳决定,常见的是引入正则化项(regularization)。
这种求闭式解的方法的优点是不用选择学习率,也不需要迭代,但缺点是在涉及到大型数据时,求逆会特别慢,收敛没有调试好参数的迭代法求解快。因此多用基于梯度的优化方法,如梯度下降。
1.2.3 梯度下降
对于线性回归中我们提到的损失函数或者是代价函数(针对所有的样本):
J
(
w
,
b
)
=
1
m
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
J(w,b)=\frac{1}{m}\sum_{i=1}^{m} (f(x_i) - y_i)^2
J(w,b)=m1i=1∑m(f(xi)−yi)2
很幸运的是,这是一个凸函数,即局部最小值就是全局最小值,如下图所示,这是一个3D曲面图,高度就代表代价函数
J
J
J的值。
因为一般我们会在二维空间理解损失函数,所以其等高线图(contour plots)如下图右,一方面可以看作来自高维的投影,另一方面可以理解为从同心椭圆中心扩散出来的碗状函数。同一个椭圆有着相同的高度。
梯度下降是指的是估计的参数沿着损失函数下降最快的方向收敛,而函数下降最快的方向就是函数的反梯度方向,梯度上升就是求极大值,梯度下降就是求极小值。就像下图我们初始随机站在一个位置,为了下山,总是找最陡峭的路走。
但是由于不是所有的代价函数都是凸函数,有可能会因为不同的出发点(初值值)而收敛到不同的局部最小值。
因此常用的技巧是多做几次下山的实验,随机选几个初值开始梯度下降,然后选取其中的最小值。
:
=
:=
:=代表赋值,
α
\alpha
α为学习率,决定了以多大的幅度更新(下山),
∂
∂
θ
j
J
(
θ
0
,
θ
1
)
\dfrac{\partial }{\partial \theta_j} J(\theta_0,\theta_1)
∂θj∂J(θ0,θ1)代表了梯度。
如果学习率
α
\alpha
α太小,收敛速度会变得非常慢,因此这是需要程序中需要调试的一个参数。
如果
α
\alpha
α太大,则可能不会收敛而是会发散。
一个需要注意的点是有可能不同的特征的值可能相差几个量级,那么梯度下降的时候会导致收敛异常缓慢,因为一般我们用的batch梯度下降用到了所有的数据的平均梯度,如下图左:
1.2.3.1 特征缩放(feature scaling)
因此将所有的特征缩放在同一个尺度下非常有必要。
比如将 每个特征的数据控制在0-1内,利用一般的正态分布化成标准正态分布的思想,减去平均值,再除以标准差。
x
−
u
m
a
x
(
x
)
−
m
i
n
(
x
)
\frac{x-u}{max(x)-min(x)}
max(x)−min(x)x−u
参考链接:
- 吴恩达机器学习
- 周志华-西瓜书