引言
最近在学习西瓜书,所以希望通过写博客的方式记录下自己的学习过程和心得体会。可能文笔不行,希望大家见谅!废话不多说,接下来开始介绍机器学习里面最简单的一个算法——线性回归,据说线性回归在机器学习里面的地位和变成里面的Hello world是一个等级!所以花了相当多的时间进行学习。
接下来的介绍结构为:一元线性回归,多元线性回归,对数几率回归以及二分类的线性判别。在介绍每个算法的时候基本上遵照模型(我们所选取的假设空间-公式)、策略(损失函数)、算法(求解损失函数,确定最优化模型)这样的介绍顺序。
一元线性回归
模型表示
y
=
w
x
+
b
y = wx + b
y=wx+b
其中w代表权重,x代表特征,y代表输出;
举个栗子:现在有一堆数据是关于程序员发际线高度(x)和编程水平(y)的数据,数据集
D
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
.
.
.
.
.
.
.
.
(
x
n
,
y
n
)
}
D = \{ ({x_1},y{}_1),({x_2},y{}_2)........({x_n},y{}_n)\}
D={(x1,y1),(x2,y2)........(xn,yn)} 在该给定的数据集下我们假设其关系是线性的,于是我们希望求解出w和b,这样我们就能得到发际线和程序员编程水平的关系了。
策略(损失函数)
但是我们如何取选择w和b的参数呢?使得我们求解出来w和b最合理,这时候就提出了损失函数的概念,就是我们得到的模型的输出和真实数据之间的误差,只要使得这个误差最小,那么我们得到的w和b肯定是最合理的。
可是衡量输出之间的误差有多种方法:均方误差,绝对值误差,欧氏距离等等。在进行线性回归采用最常见的最小二乘估计的时候,为什么我们使用的是均方误差?最小二乘估计如下式:
(
ω
∗
,
b
∗
)
=
arg
min
(
ω
,
b
)
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
({\omega ^*},{b^*}) = \mathop {\arg \min }\limits_{(\omega ,b)} {\sum\limits_{i = 1}^m {(f({x_i}) - {y_i})} ^2}
(ω∗,b∗)=(ω,b)argmini=1∑m(f(xi)−yi)2
接下来我们从极大似然估计的角度进行解释。
极大似然估计
对于线性模型,
y
=
ω
x
+
b
+
ε
y = \omega x + b + \varepsilon
y=ωx+b+ε,其中
ε
\varepsilon
ε是误差,假设误差是符合正态分布
N
(
0
,
σ
2
)
N(0,{\sigma ^2})
N(0,σ2),那么:
p
(
ε
)
=
1
2
π
σ
e
−
ε
2
2
σ
2
p(\varepsilon ) = {1 \over {\sqrt {2\pi } \sigma }}{e^{ - {{{\varepsilon ^2}} \over {2{\sigma ^2}}}}}
p(ε)=2πσ1e−2σ2ε2
因此对于y而言,y的分布服从
N
(
ω
x
+
b
,
σ
)
N(\omega x + b,\sigma )
N(ωx+b,σ)
p
(
y
)
=
1
2
π
σ
e
−
(
y
−
(
ω
x
+
b
)
)
2
2
σ
2
p(y) = {1 \over {\sqrt {2\pi } \sigma }}{e^{ - {{{{(y - (\omega x + b))}^2}} \over {2{\sigma ^2}}}}}
p(y)=2πσ1e−2σ2(y−(ωx+b))2
于是对其求似然函数:
L
(
ω
,
b
)
=
∏
i
=
1
m
p
(
y
i
)
=
∏
i
=
1
m
1
2
π
σ
e
−
(
y
−
(
ω
x
+
b
)
)
2
2
σ
2
L(\omega ,b) = \prod\limits_{i = 1}^m {p({y_i}) = \prod\limits_{i = 1}^m {{1 \over {\sqrt {2\pi } \sigma }}{e^{ - {{{{(y - (\omega x + b))}^2}} \over {2{\sigma ^2}}}}}} }
L(ω,b)=i=1∏mp(yi)=i=1∏m2πσ1e−2σ2(y−(ωx+b))2
由于似然函数存在指数不好求导,通常取似然函数的对数:
ln
L
(
ω
,
b
)
=
∑
i
=
1
m
ln
1
2
π
σ
+
∑
i
=
1
m
−
(
y
i
−
ω
x
i
−
b
)
2
2
σ
2
\ln L(\omega ,b) = \sum\limits_{i = 1}^m {\ln {1 \over {\sqrt {2\pi } \sigma }} + } \sum\limits_{i = 1}^m {{{ - {{({y_i} - \omega {x_i} - b)}^2}} \over {2{\sigma ^2}}}}
lnL(ω,b)=i=1∑mln2πσ1+i=1∑m2σ2−(yi−ωxi−b)2
由于
∑
i
=
1
m
ln
1
2
π
σ
\sum\limits_{i = 1}^m {\ln {1 \over {\sqrt {2\pi } \sigma }} }
i=1∑mln2πσ1是常数所以忽略,我们只需保证
∑
i
=
1
m
(
y
i
−
ω
x
i
−
b
)
2
2
σ
2
\sum\limits_{i = 1}^m {{{ {{({y_i} - \omega {x_i} - b)}^2}} \over {2{\sigma ^2}}}}
i=1∑m2σ2(yi−ωxi−b)2最小,即
∑
i
=
1
m
(
y
i
−
ω
x
i
−
b
)
2
\sum\limits_{i = 1}^m {{{({y_i} - \omega {x_i} - b)}^2}}
i=1∑m(yi−ωxi−b)2最小可保证似然函数最大,和最小二乘法一致!
算法(求解)
获得损失函数后我们需要求解w和x:
(
ω
∗
,
b
∗
)
=
arg
min
(
ω
,
b
)
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
({\omega ^*},{b^*}) = \mathop {\arg \min }\limits_{(\omega ,b)} {\sum\limits_{i = 1}^m {(f({x_i}) - {y_i})} ^2}
(ω∗,b∗)=(ω,b)argmini=1∑m(f(xi)−yi)2
需要求解该参数需要满足两个条件:
1.证明
E
(
ω
,
b
)
=
∑
i
=
1
m
(
y
i
−
ω
x
i
−
b
)
2
E(\omega ,b) = \sum\limits_{i = 1}^m {{{({y_i} - \omega {x_i} - b)}^2}}
E(ω,b)=i=1∑m(yi−ωxi−b)2是凸函数
2.用凸函数求最值的方法求w和b
证明凸函数
凸函数:任意两点均值大于中间点值,类似于下图:
定理:设D为非空凸集(任意两点连线上的点都属于该集合),f(x)在D上二阶连续可微,如果f(x)的海塞矩阵在D上是半正定的,则其为D上的凸函数。
求得E(w,b)的海塞矩阵为:
半正定矩阵判别定理:若实对称矩阵的所有顺序余子式均为非负,则为半正定。
由该定理E(a,b)的海塞矩阵显然为半正定矩阵,所以E(a,b)为凸函数!
凸充分性定理: 若f(x)为凸函数,若f(x)一阶连续可微,则x*是全局最优解的充要条件为:
∇
f
(
x
∗
)
=
0
\nabla f(x*) = 0
∇f(x∗)=0。
所以
∇
E
(
ω
,
b
)
=
0
\nabla E(\omega ,b) = 0
∇E(ω,b)=0是最小值点,即通过:
求解该函数即可求解出w和b的闭式解(感兴趣的自行推导)。
多元线性回归
模型表示
多元线性回归顾名思义就是含有多个变量,因为在实际问题中特征不止一个!
举个栗子: 程序员的编程水平不止和发际线高度有关,还和其年龄,专业等因素相关。
多元线性回归的表示如下所示:
f
(
x
i
)
=
ω
T
x
i
+
b
f({x_i}) = {\omega ^T}{x_{_i}} + b
f(xi)=ωTxi+b
其中
x
i
{x_{_i}}
xi是第i个样本,其含有d维特征
{
x
i
1
,
x
i
2
.
.
.
.
.
.
.
x
i
d
}
\{ {x_{i1}},{x_{i2}}.......{x_{id}}\}
{xi1,xi2.......xid},
ω
T
=
{
ω
1
,
ω
2
.
.
.
.
.
.
.
ω
d
}
{\omega ^T} = \{ {\omega _1},{\omega _2}.......{\omega _d}\}
ωT={ω1,ω2.......ωd}。
使得
x
^
i
=
{
x
i
1
,
x
i
2
.
.
.
.
.
.
.
x
i
d
,
1
}
{\hat x_i} = \{ {x_{i1}},{x_{i2}}.......{x_{id}},1\}
x^i={xi1,xi2.......xid,1},
ω
^
=
{
ω
1
,
ω
2
.
.
.
.
.
.
.
ω
d
,
ω
d
+
1
}
\hat \omega = \{ {\omega _1},{\omega _2}.......{\omega _d},{\omega _{d + 1}}\}
ω^={ω1,ω2.......ωd,ωd+1}可得:
f
(
x
i
)
=
ω
^
x
^
i
f({x_i}) = \hat \omega {\hat x_i}
f(xi)=ω^x^i
策略(损失函数)
选择均方误差作为误差函数,并且所以对于
E
ω
^
{E_{\hat \omega }}
Eω^进行向量化:
E
ω
^
=
∑
i
=
1
m
(
y
i
−
ω
^
x
^
i
)
2
=
(
y
−
x
ω
^
)
(
y
−
x
ω
^
)
T
{E_{\hat \omega }} = \sum\limits_{i = 1}^m {({y_i}} - \hat \omega {\hat x_i}{)^2} = (y - x\hat \omega ){(y - x\hat \omega )^T}
Eω^=i=1∑m(yi−ω^x^i)2=(y−xω^)(y−xω^)T
因此我们需要求解:
ω
^
∗
=
arg
min
ω
^
(
y
−
x
ω
^
)
(
y
−
x
ω
^
)
T
{\hat \omega ^*} = \mathop {\arg \min }\limits_{\hat \omega } (y - x\hat \omega ){(y - x\hat \omega )^T}
ω^∗=ω^argmin(y−xω^)(y−xω^)T
算法(求解)
获得损失函数后我们需要求解w:
(
ω
∗
,
b
∗
)
=
arg
min
(
ω
,
b
)
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
({\omega ^*},{b^*}) = \mathop {\arg \min }\limits_{(\omega ,b)} \sum\limits_{i = 1}^m {(f({x_i}) - {y_i})}
(ω∗,b∗)=(ω,b)argmini=1∑m(f(xi)−yi)
需要求解该参数需要满足两个条件:
1.证明
E
ω
^
=
(
y
−
x
ω
^
)
(
y
−
x
ω
^
)
T
{E_{\hat \omega }} = (y - x\hat \omega ){(y - x\hat \omega )^T}
Eω^=(y−xω^)(y−xω^)T是凸函数
2.用凸函数求最值的方法求w
同理求
E
ω
^
{E_{\hat \omega }}
Eω^的海塞矩阵,由于是对矩阵进行求偏导,涉及到矩阵微分公式,请大家自行查找!最后证明其是一个凸函数!按照凸函数求最值的方法进行求解!
对数几率回归
模型表示
y
=
1
1
+
e
−
z
y = {1 \over {1 + {e^{ - z}}}}
y=1+e−z1
为什么要采用sigmoid函数呢? 我们希望在对二分类任务进行预测的时候可以返回一个{0,1}来表示预测的正确与否,sigmoid函数的值在(0~1)之间,所以我们希望得到分类正确的概率!
策略(损失函数)
在推到对数几率回归时我们分别采用极大似然估计和交叉熵对其损失函数进行推导。
极大似然估计
令
z
=
ω
T
x
+
b
z = {\omega ^T}x + b
z=ωTx+b
得到:
p
(
y
=
1
∣
x
)
=
1
1
+
e
−
ω
T
x
+
b
=
e
ω
T
x
+
b
1
+
e
ω
T
x
+
b
p(y = 1|x) = {1 \over {1 + {e^{ - {\omega ^T}x + b}}}} = {{{e^{{\omega ^T}x + b}}} \over {1 + {e^{{\omega ^T}x + b}}}}
p(y=1∣x)=1+e−ωTx+b1=1+eωTx+beωTx+b
p
(
y
=
0
∣
x
)
=
1
−
p
(
y
=
0
∣
x
)
=
1
1
+
e
ω
T
x
+
b
p(y = 0|x) = 1 - p(y = 0|x) = {1 \over {1 + {e^{{\omega ^T}x + b}}}}
p(y=0∣x)=1−p(y=0∣x)=1+eωTx+b1
为了便于讨论,令
β
=
(
ω
,
b
)
\beta = (\omega ,b)
β=(ω,b),
x
^
=
(
x
;
1
)
\hat x = (x;1)
x^=(x;1),所以:
p
(
y
∣
β
;
x
^
)
=
y
.
p
1
(
β
;
x
^
)
+
(
1
−
y
)
p
0
(
β
;
x
^
)
p(y|\beta ;\hat x) = y.{p_1}(\beta ;\hat x) + (1 - y){p_0}(\beta ;\hat x)
p(y∣β;x^)=y.p1(β;x^)+(1−y)p0(β;x^)
似然函数为:
L
(
β
)
=
∏
i
=
1
m
p
(
y
i
∣
x
^
;
β
)
L(\beta ) = \prod\limits_{i = 1}^m {p({y_i}|\hat x;\beta )}
L(β)=i=1∏mp(yi∣x^;β)
对齐取对数并且带入得:
ln
L
(
β
)
=
∏
i
=
1
m
ln
p
(
y
i
∣
x
^
;
β
)
=
∑
i
=
1
m
ln
p
(
y
i
∣
x
^
;
β
)
=
∑
i
=
1
m
ln
(
p
(
y
∣
β
;
x
^
)
=
y
.
p
1
(
β
;
x
^
)
+
(
1
−
y
)
p
0
(
β
;
x
^
)
)
\ln L(\beta ) = \prod\limits_{i = 1}^m {\ln p({y_i}|\hat x;\beta )} = \sum\limits_{i = 1}^m {\ln p({y_i}|\hat x;\beta )} = \sum\limits_{i = 1}^m {\ln (p(y|\beta ;\hat x) = y.{p_1}(\beta ;\hat x) + (1 - y){p_0}(\beta ;\hat x))}
lnL(β)=i=1∏mlnp(yi∣x^;β)=i=1∑mlnp(yi∣x^;β)=i=1∑mln(p(y∣β;x^)=y.p1(β;x^)+(1−y)p0(β;x^))
将p1和p0进行带入得到:
两式综合得到:
ln
L
(
β
)
=
∑
i
=
1
m
(
y
i
β
T
x
^
i
−
ln
(
1
+
e
β
T
x
^
i
)
)
\ln L(\beta ) = \sum\limits_{i = 1}^m {({y_i}{\beta ^T}{{\hat x}_i} - \ln (1 + {e^{{\beta ^T}{{\hat x}_i}}}))}
lnL(β)=i=1∑m(yiβTx^i−ln(1+eβTx^i))
因此最大化似然函数需要最小化:
ln
(
1
+
e
β
T
x
^
i
)
{\ln (1 + {e^{{\beta ^T}{{\hat x}_i}}})}
ln(1+eβTx^i)
交叉熵
KL散度:度量两个分布之间的差异,度量理想分布p(x)和模拟分布q(x)之间的差异
∑
x
p
(
x
)
log
b
(
p
(
x
)
q
(
x
)
)
=
∑
x
p
(
x
)
log
b
p
(
x
)
−
∑
x
p
(
x
)
log
b
q
(
x
)
\sum\limits_x {p(x){{\log }_b}({{p(x)} \over {q(x)}}) = } \sum\limits_x {p(x){{\log }_b}p(x) - \sum\limits_x {p(x){{\log }_b}q(x)} }
x∑p(x)logb(q(x)p(x))=x∑p(x)logbp(x)−x∑p(x)logbq(x)
因为理想分布不变,所以需要最小化交叉熵为:
−
∑
x
p
(
x
)
log
b
q
(
x
)
{ - \sum\limits_x {p(x){{\log }_b}q(x)} }
−x∑p(x)logbq(x)
对数几率回归
对yi来说理想分布为:当yi=1时,p(1)=1,p(0)=0,yi=0时,p(1)=0,p(0)=1。
模拟分布:
那么单个样本的交叉熵为:
−
y
i
ln
p
1
(
x
^
;
β
)
−
(
1
−
y
i
)
ln
p
1
(
x
^
;
β
)
- {y_i}\ln {p_1}(\hat x;\beta ) - (1 - {y_i})\ln {p_1}(\hat x;\beta )
−yilnp1(x^;β)−(1−yi)lnp1(x^;β)
全体训练样本交叉熵:
∑
i
=
1
m
−
y
i
ln
p
1
(
x
^
;
β
)
−
(
1
−
y
i
)
ln
p
1
(
x
^
;
β
)
=
∑
i
=
1
m
(
−
y
i
β
T
x
^
+
ln
(
1
+
e
β
T
x
^
i
)
\sum\limits_{i = 1}^m { - {y_i}\ln {p_1}(\hat x;\beta ) - (1 - {y_i})\ln {p_1}(\hat x;\beta )} = \sum\limits_{i = 1}^m {( - {y_i}{\beta ^T}\hat x + \ln (1 + {e^{{\beta ^T}{{\hat x}_i}}})}
i=1∑m−yilnp1(x^;β)−(1−yi)lnp1(x^;β)=i=1∑m(−yiβTx^+ln(1+eβTx^i)
所以需要最小化交叉熵的话需要最小化
ln
(
1
+
e
β
T
x
^
i
)
{\ln (1 + {e^{{\beta ^T}{{\hat x}_i}}})}
ln(1+eβTx^i)