一、线性模型
线性模型我们在高中的时候就已经接触过,还记得最小二乘法吗?这是线性模型的最经典算法之一:根据给定的(x,y)点对,求出一条与这些点拟合效果最好的一条直线
y
=
a
x
+
b
y = ax +b
y=ax+b,我们可以用如下公式便可计算出拟合直线的系数
a
a
a和
b
b
b,从而对于一个新的x,就可以预测它所对应的y值。在机器学习中,当预测值为连续值时,成为“回归问题”,预测值为离散值时称为“分类问题”。
a
=
x
1
y
1
+
x
2
y
2
+
.
.
.
.
.
.
+
x
n
y
n
−
n
x
ˉ
y
ˉ
x
1
2
+
x
2
2
+
x
3
2
+
.
.
.
.
.
.
+
x
n
2
−
n
x
ˉ
2
a = \frac{x_1y_1+x_2y_2+......+x_ny_n-n\bar{x}\bar{y}}{x_1^2+x_2^2+x_3^2+......+x_n^2-n\bar{x}^2}
a=x12+x22+x32+......+xn2−nxˉ2x1y1+x2y2+......+xnyn−nxˉyˉ
b
=
y
ˉ
−
a
x
ˉ
b = \bar{y}-a\bar{x}
b=yˉ−axˉ
1、线性回归
线性回归问题就是试图学习一个线性模型尽可能准确地预测新样本地输出值。例如,通过历年的人口数据预测明年人口数量;波士顿房价预测问题。在这类问题中,往往我们会先得到一系列的有标记数据,有时输入地属性只有一个,也有时输入地属性有多个。
有时这些输入的属性值并不能直接被我们的学习模型所用,需要进行相应的处理,对于连续值的属性,一般都可以被学习器所用,有时会根据具体的情形作相应的预处理,例如:归一化等。
(1)当输入地属性只有一个时,就是最简单地情形,也就是我们高中最熟悉地最小二乘法,首先我们根据MSE计算每个样本和真实值之前地误差并求和,使用数学中的求偏导的方法计算拟合直线
y
=
w
x
+
b
y=wx+b
y=wx+b的两个参数
w
w
w和
b
b
b,推导过程如下:
(
w
∗
,
b
∗
)
=
a
r
g
m
w
,
b
i
n
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
(w^*,b^*) = arg\underset{w,b}min\sum_{i=1}^m(f(x_i)-y_i)^2
(w∗,b∗)=argw,bmini=1∑m(f(xi)−yi)2
=
a
r
g
m
w
,
b
i
n
∑
i
=
1
m
(
y
i
−
w
x
i
−
b
)
2
=arg\underset{w,b}min\sum_{i=1}^m(y_i-wx_i-b)^2
=argw,bmini=1∑m(yi−wxi−b)2
得到误差和,并对参数求导
E
(
w
,
b
)
=
∑
i
=
1
m
(
y
i
−
w
x
i
−
b
)
2
E_{(w,b)} = \sum_{i=1}^m(y_i-wx_i-b)^2
E(w,b)=i=1∑m(yi−wxi−b)2
∂
E
(
w
,
b
)
∂
w
=
2
(
w
∑
i
=
1
m
x
i
2
−
∑
i
=
1
m
(
y
i
−
b
)
x
i
)
=
0
\frac{\partial{E_(w,b)}}{\partial{w}}=2(w\sum_{i=1}^mx_i^2-\sum_{i=1}^m(y_i-b)x_i)=0
∂w∂E(w,b)=2(wi=1∑mxi2−i=1∑m(yi−b)xi)=0
∂
E
(
w
,
b
)
∂
b
=
2
(
m
b
−
∑
i
=
1
m
(
y
i
−
w
x
i
)
=
0
\frac{\partial{E_(w,b)}}{\partial{b}}=2(mb-\sum_{i=1}^m(y_i-wx_i)=0
∂b∂E(w,b)=2(mb−i=1∑m(yi−wxi)=0
令式子为零可以得到
w
w
w和
b
b
b的最优的闭式解(从数学的角度来看,一般来说,只有目标函数是自变量的凸函数,且目标函数可微,Heissen 矩阵正定等条件下,可以判定 目标函数在一点处达到最小值(极小值点),则可认为其具有闭式解并可直接求出此闭式解。)
w
=
∑
i
=
1
m
y
i
(
x
i
−
x
ˉ
)
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
w = \frac{\sum_{i=1}^m{y_i(x_i-\bar{x})}}{\sum_{i=1}^mx_i^2-\frac{1}{m}({\sum_{i=1}^mx_i})^2}
w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−xˉ)
b
=
1
m
∑
i
=
1
m
(
y
i
−
w
x
i
)
b = \frac{1}{m}\sum_{i=1}^m(y_i-wx_i)
b=m1i=1∑m(yi−wxi)
(2)当输入的属性有多个的时候,例如,一个样本有d个属性
(
x
1
,
x
2
,
.
.
.
,
x
d
)
{(x_1,x_2,...,x_d)}
(x1,x2,...,xd),则
y
=
w
x
+
b
y=wx+b
y=wx+b需要写成:
y
i
=
w
1
x
i
1
+
w
2
x
i
2
+
.
.
.
.
.
.
+
w
d
x
i
d
+
b
y_i = w_1x_{i1}+w_2x_{i2}+......+w_dx_{id}+b
yi=w1xi1+w2xi2+......+wdxid+b
通常对于多元问题,常常使用矩阵的形式来表示数据。在本问题中,将具有m个样本的数据表示成矩
X
X
X阵,将系数
w
w
w和
b
b
b合并成一个列向量,这样每个样本的预测值以及所有样本的均方误差最小化可以写成下面的形式:
w
^
=
(
w
;
b
)
=
(
w
1
w
2
⋮
w
d
b
)
\hat{w} = (w;b)=\begin{pmatrix} w_{1} \\ w_{2} \\ \vdots \\ w_{d} \\ b\\ \end{pmatrix}
w^=(w;b)=
w1w2⋮wdb
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{pmatrix} x_{11} & x_{12} & x_{1d} & \cdots & 1 \\ x _{21}& x_{22} & x_{2d} & \cdots & 1\\ \vdots & \vdots & \vdots & \ddots & \vdots \\ x_{m1} & x_{m2} & x_{md} & \cdots & 1 \\ \end{pmatrix}= \begin{pmatrix} x_{1}^T & 1 \\ x _{2}^ T& 1 \\ \vdots & \vdots\\ x_{m}^T & 1\\ \end{pmatrix}
X=
x11x21⋮xm1x12x22⋮xm2x1dx2d⋮xmd⋯⋯⋱⋯11⋮1
=
x1Tx2T⋮xmT11⋮1
X
∗
w
^
=
(
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
)
∗
(
w
1
w
2
⋮
w
d
b
)
=
(
w
1
x
11
+
w
2
x
12
+
w
d
x
1
d
+
b
w
1
x
21
+
w
2
x
22
+
w
d
x
2
d
+
b
⋮
w
1
x
m
1
+
w
2
x
m
2
+
w
d
x
m
d
+
b
)
=
(
f
(
x
1
)
f
(
x
2
)
⋮
f
(
x
m
)
)
X*\hat{w}= \begin{pmatrix} x_{11} & x_{12} & x_{1d} & \cdots & 1 \\ x _{21}& x_{22} & x_{2d} & \cdots & 1\\ \vdots & \vdots & \vdots & \ddots & \vdots \\ x_{m1} & x_{m2} & x_{md} & \cdots & 1 \\ \end{pmatrix}* \begin{pmatrix} w_{1} \\ w_{2} \\ \vdots \\ w_{d} \\ b\\ \end{pmatrix}= \begin{pmatrix} w_1 x_{11} + w_2x_{12} + w_dx_{1d}+b & \\ w_1x _{21}+ w_2x_{22} + w_dx_{2d} + b\\ \vdots \\ w_1x_{m1} + w_2x_{m2} + w_dx_{md} + b \\ \end{pmatrix}= \begin{pmatrix} f(x_{1}) \\ f(x_{2}) \\ \vdots \\ f(x_{m})\\ \end{pmatrix}
X∗w^=
x11x21⋮xm1x12x22⋮xm2x1dx2d⋮xmd⋯⋯⋱⋯11⋮1
∗
w1w2⋮wdb
=
w1x11+w2x12+wdx1d+bw1x21+w2x22+wdx2d+b⋮w1xm1+w2xm2+wdxmd+b
=
f(x1)f(x2)⋮f(xm)
w
^
∗
=
a
r
g
m
w
^
i
n
(
y
−
X
w
^
)
T
(
y
−
X
w
^
)
\hat{w}^* = arg\underset{\hat{w}}min(y-X\hat{w})^T(y-X\hat{w})
w^∗=argw^min(y−Xw^)T(y−Xw^)
同样地,我们使用最小二乘法对w和b进行估计,令均方误差的求导等于0,需要注意的是,当一个矩阵的行列式不等于0时,我们才可能对其求逆,因此对于下式,我们需要考虑矩阵(
X
T
∗
X
X^T*X
XT∗X)的行列式是否为0,若不为0,则可以求出其解,若为0,则需要使用其它的方法进行计算,书中提到了引入正则化,此处不进行深入。
令
E
w
^
=
(
y
−
X
w
^
)
T
(
y
−
X
w
^
)
,
对
w
^
求导得到
令E_{\hat{w}} = (y-X\hat{w})^T(y-X\hat{w}),对\hat{w}求导得到
令Ew^=(y−Xw^)T(y−Xw^),对w^求导得到
∂
E
w
^
∂
w
^
=
2
X
T
(
X
w
^
−
y
)
=
0
\frac{\partial{E_{\hat{w}}}}{\partial{\hat{w}}}=2X^T(X\hat{w}-y)=0
∂w^∂Ew^=2XT(Xw^−y)=0
w
^
∗
=
(
X
T
X
)
−
1
X
T
y
\hat{w}^* = (X^TX)^{-1}X^Ty
w^∗=(XTX)−1XTy
则最终学得多元线性回归模型为
f
(
x
^
i
)
=
x
^
i
T
(
X
T
X
)
−
1
X
T
y
f(\hat{x}_i) = \hat{x}_i^T(X^TX)^{-1}X^Ty
f(x^i)=x^iT(XTX)−1XTy
另一方面,有时像上面这种原始的线性回归可能并不能满足需求,例如:y值并不是线性变化,而是在指数尺度上变化。这时我们可以采用线性模型来逼近y的衍生物,例如lny,这时衍生的线性模型如下所示,实际上就是相当于将指数曲线投影在一条直线上,如下图所示:
l
n
y
=
w
T
x
+
b
lny = w^Tx+b
lny=wTx+b
更一般地,考虑所有y的衍生物的情形,就得到了“广义的线性模型”(generalized linear model),其中,g(*)称为联系函数(link function)。
y
=
g
−
1
(
w
T
x
+
b
)
y = g^{-1}(w^Tx+b)
y=g−1(wTx+b)
2、逻辑回归(线性几率回归)
回归就是通过输入的属性值得到一个预测值,利用上述广义线性模型的特征,是否可以通过一个联系函数,将预测值转化为离散值从而进行分类呢?线性几率回归正是研究这样的问题。对数几率引入了一个对数几率函数(logistic function),将预测值投影到0-1之间,从而将线性回归问题转化为二分类问题。
y
=
1
1
+
e
−
(
w
T
x
+
b
)
y = \frac{1}{1+e^{-(w^Tx+b)}}
y=1+e−(wTx+b)1
整理可得
l
n
y
1
−
y
=
w
T
x
+
b
ln\frac{y}{1-y}=w^Tx+b
ln1−yy=wTx+b
若将y看做样本为正例的概率
p
(
y
=
1
∣
x
)
p(y=1|x)
p(y=1∣x),(1-y)看做样本为反例的概率p(y=0|x),则上式实际上使用线性回归模型的预测结果逼近真实标记的对数几率。
l
n
p
(
y
=
1
∣
x
)
1
−
p
(
y
=
1
∣
x
)
=
w
T
x
+
b
ln\frac{p(y=1|x)}{1-p(y=1|x)}=w^Tx+b
ln1−p(y=1∣x)p(y=1∣x)=wTx+b
因此这个模型称为“对数几率回归”(logistic regression),也有一些书籍称之为“逻辑回归”。下面使用最大似然估计的方法来计算出w和b两个参数的取值,下面只列出求解的思路,不列出具体的计算过程。
我们可以得到如下0-1分布函数
f
(
x
)
=
{
p
(
y
=
1
∣
x
)
,
if
y
= 1
1
−
p
(
y
=
1
∣
x
)
,
if
y
= 0
f(x)= \begin{cases} p(y=1|x), & \text {if $y$ = 1} \\ 1-p(y=1|x), & \text{if $y$ = 0} \end{cases}
f(x)={p(y=1∣x),1−p(y=1∣x),if y = 1if y = 0
由极大似然估计可知
L
(
x
;
w
,
b
)
=
∏
i
=
1
m
(
p
(
y
i
=
1
∣
x
i
)
y
i
∗
(
1
−
p
(
y
i
=
1
∣
x
i
)
)
1
−
y
i
)
L(x;w,b)=\prod_{i=1}^m(p(y_i=1|x_i)^{y_i}*(1-p(y_i=1|x_i))^{1-y_i})
L(x;w,b)=i=1∏m(p(yi=1∣xi)yi∗(1−p(yi=1∣xi))1−yi)
对数似然函数为
ln
L
(
x
;
w
,
b
)
=
∑
i
=
1
m
(
(
y
i
l
n
p
(
y
i
=
1
∣
x
i
)
)
+
(
1
−
y
i
)
(
l
n
p
(
y
i
=
1
∣
x
i
)
)
)
\ln{L(x;w,b)} = \sum_{i=1}^m((y_ilnp(y_i=1|x_i))+(1-y_i)(lnp(y_i=1|x_i)))
lnL(x;w,b)=i=1∑m((yilnp(yi=1∣xi))+(1−yi)(lnp(yi=1∣xi)))
其中,正例的表达式方程为
p
(
y
i
=
1
∣
x
i
)
=
1
1
+
e
−
(
w
T
x
i
+
b
)
,
令其为
h
(
x
;
w
,
b
)
p(y_i=1|x_i) = \frac{1}{1+e^{-(w^Tx_i+b)}},令其为h(x;w,b)
p(yi=1∣xi)=1+e−(wTxi+b)1,令其为h(x;w,b)
故原来的对数似然函数化为
ln
L
(
x
;
w
,
b
)
=
∑
i
=
1
m
(
(
y
i
l
n
h
(
x
i
;
w
,
b
)
)
+
(
1
−
y
i
)
(
l
n
h
(
x
;
w
,
b
)
)
)
\ln{L(x;w,b)} = \sum_{i=1}^m((y_ilnh(x_i;w,b))+(1-y_i)(lnh(x;w,b)))
lnL(x;w,b)=i=1∑m((yilnh(xi;w,b))+(1−yi)(lnh(x;w,b)))
最大似然函数求解的是最大值,则我们将损失函数记为
c
o
s
t
L
=
−
1
m
ln
L
(
x
;
w
,
b
)
costL = -\frac{1}{m}\ln{L(x;w,b)}
costL=−m1lnL(x;w,b)
求解损失函数
c
o
s
t
L
costL
costL的最小值,通过梯度下降优化的方法,则可得到最优的
w
w
w和
b
b
b。
3、线性判别分析(LDA)
线性判别分析(Linear Discriminant Analysis,简称LDA),其基本思想为:给定训练样本,设法将样例投影到一条直线上,使得同类的样例的投影点尽可能接近,不同类的样例尽可能地远;在对新样例进行分类时,将其投影到同样地这条直线上,再根据投影点地位置来确定新样本地类别。如图所示:
给定数据集
D
=
(
x
i
,
y
i
)
i
=
1
m
,
y
i
∈
{
0
,
1
}
D={(x_i,y_i)}_{i=1}^m,y_i\in{\{0,1\}}
D=(xi,yi)i=1m,yi∈{0,1},令
X
i
、
μ
i
、
Σ
i
X_i、\mu_i、\Sigma_i
Xi、μi、Σi分别表示第
i
∈
{
0
,
1
}
i\in\{0,1\}
i∈{0,1}类示例的集合,均值,协方差矩阵。若将数据投影到直线
w
w
w上,则两类样本的中心在直线上的投影分别为
w
T
μ
0
和
w
T
μ
1
w^T\mu_0和w^T\mu_1
wTμ0和wTμ1;若将所有样本点都投影到直线上,则两类样本的协方差分别为
w
T
Σ
0
w
和
w
T
Σ
1
w
w^T\Sigma_0w和w^T\Sigma_1w
wTΣ0w和wTΣ1w。由于直线是一维空间,因此
w
T
μ
0
、
w
T
μ
1
、
w
T
Σ
0
w
、
w
T
Σ
1
w
w^T\mu_0、w^T\mu_1、w^T\Sigma_0w、w^T\Sigma_1w
wTμ0、wTμ1、wTΣ0w、wTΣ1w均为实数。
想让同类样本点的投影点尽可能接近,不同类样本点投影之间尽可能远,**即:让同类投影点的协方差之和尽可能小,即
w
T
Σ
0
w
+
w
T
Σ
1
w
w^T\Sigma_0w+w^T\Sigma_1w
wTΣ0w+wTΣ1w尽可能小,不同类之间中心的距离尽可能大,即
∣
∣
w
T
μ
0
−
w
T
μ
1
∣
∣
2
2
||w^T\mu_0-w^T\mu_1||_2^2
∣∣wTμ0−wTμ1∣∣22尽可能大。**基于这样的考虑,LDA定义了两个散度矩阵。
- 类内散度矩阵,越小越好
S w = Σ 0 + Σ 1 S_w =\Sigma_0+\Sigma_1 Sw=Σ0+Σ1
= ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T =\sum_{x\in X_0}(x-\mu_0)(x-\mu_0)^T+\sum_{x\in X_1}(x-\mu_1)(x-\mu_1)^T =x∈X0∑(x−μ0)(x−μ0)T+x∈X1∑(x−μ1)(x−μ1)T - 类间散度矩阵,越大越好
S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T Sb=(μ0−μ1)(μ0−μ1)T
因此,得到了LDA的最大化目标:“广义瑞利商”(Generalized Rayleigh quotient)。
J = w T S b w w T s w w J = \frac{w^TS_bw}{w^Ts_ww} J=wTswwwTSbw
从而分类问题转化为最优求解 w w w的问题,当求解出 w w w后,对新的样本进行分类时,只需要将该样本点投影到这条直线上,根据据与各个类别的中心值进行比较,从而判定出新样本与哪个类别距离最近。求解 w w w的方法如下所示,使用的方法为拉格朗日乘子法,其中 λ \lambda λ乘子。
m i w n − w T S b w m\underset{w}in -w^TS_bw mwin−wTSbw
s . t . w T S w w = 1 s.t. w^TS_ww=1 s.t.wTSww=1
S b w = λ S w w S_bw=\lambda S_ww Sbw=λSww
令
S
b
w
=
λ
(
μ
0
−
μ
1
)
,
令S_bw=\lambda(\mu_0-\mu_1),
令Sbw=λ(μ0−μ1),
w
=
S
w
−
1
(
μ
0
−
μ
1
)
w = S_w^{-1}(\mu_0-\mu_1)
w=Sw−1(μ0−μ1)
若将 w w w看做一个投影矩阵,类似PCA的思想,则LDA可将样本投影到N-1维空间(N为类簇数),投影的过程使用了类别信息(标记信息),因此LDA也常被视为一种经典的监督降维技术。