最近在读《机器学习》——周志华的西瓜书, 打卡学习——2019年05月16日
线性模型
给定由 d d d个属性描述的示例 x = ( x 1 ; x 2 ; . . . ; x i ) x =(x_1; x_2;...;x_i) x=(x1;x2;...;xi),其中 x i x_i xi
是
x
x
x在第$ i$个的属性上的取值,一般式为:
(1)
f
(
x
)
=
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
i
x
i
f(x)= w_1x_1 +w_2x_2+...+w_ix_i\tag{1}
f(x)=w1x1+w2x2+...+wixi(1)
即:
(2)
f
(
x
)
=
w
T
x
+
b
f(x)=w^Tx+b\tag{2}
f(x)=wTx+b(2)
给定数据集
D
=
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
i
,
y
i
)
D={(x_1, y_1), (x_2,y_2 ), …,(x_i, y_i)}
D=(x1,y1),(x2,y2),…,(xi,yi),其中
x
i
=
(
x
i
1
;
x
i
2
;
…
;
x
i
d
)
,
y
∈
R
x_i=(x_{i1}; x_{i2};…;x_{id}), y\in R
xi=(xi1;xi2;…;xid),y∈R。"线性回归"试图学的一个线性模型以尽可能准确的预测输出标记。线性回归试图学得:
(3)
f
(
x
i
)
=
w
x
i
+
b
,
使
得
f
(
x
i
)
≃
y
i
f(x_i) = wx_i +b,使得f(x_i)\simeq y_i\tag{3}
f(xi)=wxi+b,使得f(xi)≃yi(3)
我们使用均方误差衡量
f
(
x
i
)
f( x_i)
f(xi)与
y
y
y之间的关系, 以求得
w
w
w和
b
b
b, 均方误差最小化, 即
(4)
(
w
∗
,
b
∗
)
=
a
r
g
m
i
n
∑
i
=
1
m
(
f
(
x
i
)
−
y
i
)
2
=
a
r
g
m
i
n
∑
i
=
1
m
(
y
i
−
w
x
i
−
b
)
2
(w^*, b^*) = argmin\sum_{i=1}^m(f(x_i)-y_i)^2 \\ =argmin\sum_{i= 1}^{m}(y_i-wx_i-b)^2\tag{4}
(w∗,b∗)=argmini=1∑m(f(xi)−yi)2=argmini=1∑m(yi−wxi−b)2(4)
基于均方误差最小化来进行模型求解的方法称为“最小二乘”, 最小二乘试图找到一条直线,使所有的样本到直线上的欧式距离之和最小。
求解
w
w
w和
b
b
b 使
E
(
w
,
b
)
=
∑
i
=
1
m
(
y
−
w
x
i
−
b
)
2
E_{(w,b)}=\sum_{i=1}^m(y-wx_i-b)^2
E(w,b)=∑i=1m(y−wxi−b)2最小化的过程,成为线性回归模型的最小二乘“参数估计”, 将
E
w
,
b
E_{w,b}
Ew,b分别对
w
w
w和
b
b
b求导:
(5)
∂
E
w
,
b
∂
w
=
2
(
w
∑
i
=
1
m
x
i
3
−
∑
i
=
1
m
(
y
i
−
b
)
x
i
)
,
\frac{\partial E_{w, b}}{\partial w}=2(w\sum_{i=1}^mx^3_i -\sum_{i=1}^m(y_i-b)x_i),\tag{5}
∂w∂Ew,b=2(wi=1∑mxi3−i=1∑m(yi−b)xi),(5)
(6) ∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) \frac{\partial E_{(w, b)}}{\partial{b}}=2(mb-\sum_{i=1}^m(y_i-wx_i))\tag{6} ∂b∂E(w,b)=2(mb−i=1∑m(yi−wxi))(6)
令式(5)、(6)为0, 可得
w
w
w和
b
b
b最优的闭解:
(7)
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}^m x_i^2 -\frac{1}{m}(\sum_{i=1}^m x_i)^2} \tag{7}
w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1m(yi(xi−xˉ)(7)
(8) b = 1 m ∑ i = 1 i ( y i − w x i ) b=\frac{1}{m}\sum_{i=1}^i(y_i-wx_i)\tag{8} b=m1i=1∑i(yi−wxi)(8)
其中 x ˉ = 1 m ∑ i = 1 m x i \bar{x} =\frac{1}{m}\sum_{i=1}^m x_i xˉ=m1∑i=1mxi为 x x x的均值。
同时数据集 D D D ,样本由多个 d d d个属性描述, 此时 f ( x i ) = w T x + b , f ( x i ) ≃ y i f(x_i)= w^Tx+b, f(x_i)\simeq y_i f(xi)=wTx+b,f(xi)≃yi 为“多元线性回归”
将(4)式写成矩阵的形式,即:
(9)
w
∗
^
=
a
r
g
m
i
n
(
y
−
X
w
^
)
T
(
y
−
X
w
^
)
\hat{w^*}= argmin(y-X\hat{w})^T(y-X\hat{w}) \tag{9}
w∗^=argmin(y−Xw^)T(y−Xw^)(9)
对$ \hat{w}$求导得:
(10)
∂
E
w
^
∂
w
^
=
2
X
T
(
X
w
^
−
y
)
\frac{\partial E_{\hat{w}}}{\partial \hat{w}}= 2X^T(X\hat{w}-y)\tag{10}
∂w^∂Ew^=2XT(Xw^−y)(10)
当
X
T
X
X^ TX
XTX为满秩矩阵或者正定矩阵时, (10)式可得闭解, 即:
w
^
∗
=
(
X
T
X
)
−
1
X
T
y
\hat{w}^*= (X^TX)^{-1}X^Ty
w^∗=(XTX)−1XTy
当
X
T
X
X^TX
XTX不是满秩矩阵时, 需要引入正则化项。
-
对数几率回归(逻辑回归)
对于二元分类问题, 其输出得标记 y ∈ { 0 , 1 } y \in \{0, 1\} y∈{0,1},而线性回归模型产生得预测值 z = w T x + b z=w^Tx +b z=wTx+b是实值, 最理想得是“单位阶跃函数”,由于其不是单调可微的。但是对数几率函数常用的替代函数, 它将 z z z值转化成一个接近0或1的 y y y值, 并且其输出值再 z = 0 z=0 z=0附近变化很陡。
(11) y = 1 1 + e − z y=\frac{1}{1+e^{-z}}\tag{11} y=1+e−z1(11)
即:
(12) y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}}\tag{12} y=1+e−(wTx+b)1(12)
对(12)式取对数,
(13)
l
n
y
1
−
y
=
w
T
x
+
b
ln\frac{y}{1-y} = w^Tx+b\tag{13}
ln1−yy=wTx+b(13)
若将
y
y
y视为样本
x
x
x作为正例的可能性, 则
1
−
y
1-y
1−y是其反例的可能性, 两者的比值
(14)
y
1
−
y
\frac{y}{1-y}\tag{14}
1−yy(14)
称为"几率", 反应了
x
x
x作为正例的可能性, 对几率取对数则可以得到“对数几率”
(15)
l
n
y
1
−
y
ln\frac{y}{1-y}\tag{15}
ln1−yy(15)
“对数几率回归”实际是一种分类学习方法, 可以直接对分类可能性进行建模, 无需假设数据分布, 他不仅预测出“类别”, 而且还可得到近似概率预测。
-
线性判别分析
线性判别分析(Linear Discriminant Analysis 简称LDA)是一种经典的线性学习方法,最早称"Fisher 判别分析"。
LDA的思想很朴素: 给定训练样例集, 设法将样例投影到一条直线上, 使得同类样例的投影点尽可能接近, 异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影在这条直线上, 再根据投影点的位置来确定新的样本类别。
数据集: D = { ( x i , y i ) } i = 1 m D=\{(x_i, y_i)\}^m_{i=1} D={(xi,yi)}i=1m, y i = { 0 , 1 } y_i=\{0, 1\} 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 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 + w T Σ 1 w w^T\Sigma_0 w+w^T\Sigma_1 w 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)尽可能大, 同时考虑两者, 则可得到最大化目标:
(16) J = ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) w w T ( Σ 0 + Σ 1 ) w J=\frac{||w^T\mu_0 -w^T\mu_1||^2_2}{w^T\Sigma_0 w+w^T\Sigma_1 w}\\ =\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)w}{w^T(\Sigma_0+\Sigma_1)w}\tag{16} J=wTΣ0w+wTΣ1w∣∣wTμ0−wTμ1∣∣22=wT(Σ0+Σ1)wwT(μ0−μ1)(μ0−μ1)w(16)
定义“类内散度矩阵”
(17) S w = Σ 0 + Σ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T S_w=\Sigma_0+\Sigma_1\\ =\sum_{x\in X_0}(x-\mu_0)(x-\mu_0)^T+\sum_{x\in X_1}(x-\mu_1)(x-\mu_1)^T\tag{17} Sw=Σ0+Σ1=x∈X0∑(x−μ0)(x−μ0)T+x∈X1∑(x−μ1)(x−μ1)T(17)
以及“内间散度矩阵”
(18)
S
b
=
(
μ
0
−
μ
1
)
(
μ
0
−
μ
1
)
T
S_b =(\mu_0-\mu_1)(\mu_0-\mu_1)^T \tag{18}
Sb=(μ0−μ1)(μ0−μ1)T(18)
则
(19)
J
=
w
T
S
b
w
w
T
S
w
w
J=\frac{w^TS_bw}{w^TS_ww}\tag{19}
J=wTSwwwTSbw(19)
这就是LDA欲最大化的目标, 即
S
b
S_b
Sb,
S
w
S_w
Sw的“广义瑞利商”, 分子和分母都是关于
w
w
w的二次项, 因此式(19)的解和
w
w
w的长度无关, 只与其方向有关,不失一般性, 令
w
T
S
w
w
=
1
w^TS_ww =1
wTSww=1
即:
(20)
m
i
n
w
−
w
T
S
b
w
s
.
t
.
w
T
S
w
w
=
1
min_{w} -w^TS_bw\\ s.t. w^TS_ww =1\tag{20}
minw−wTSbws.t.wTSww=1(20)
由拉格朗日乘子,
S
b
w
=
λ
S
w
w
S_bw=\lambda S_ww
Sbw=λSww, 其中
λ
\lambda
λ是拉格朗日乘子 ,注意到
S
b
w
S_bw
Sbw的方向恒为
μ
0
−
μ
1
\mu_0-\mu_1
μ0−μ1, 不妨令:
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)
使用奇异值分解
S
w
S_w
Sw, 即
S
w
=
U
Σ
V
T
S_w=U\Sigma V^T
Sw=UΣVT, 再由
S
w
−
1
=
V
Σ
−
1
U
T
S_w^{-1}=V\Sigma^{-1}U^T
Sw−1=VΣ−1UT
可以将LDA推广到多分类任务中, 假定存在
N
N
N个类, 且第
i
i
i类示例数为
m
i
m_i
mi,我们先定义“全局散度矩阵”
S
t
=
S
b
+
S
w
=
∑
i
=
1
m
(
x
i
−
μ
)
(
x
i
−
μ
)
T
S_t = S_b+S_w\\ =\sum_{i=1}^m(x_i-\mu)(x_i-\mu)^T
St=Sb+Sw=i=1∑m(xi−μ)(xi−μ)T
其中
μ
\mu
μ是所有样例的均值, 将类内散度矩阵
S
w
Sw
Sw重定义为每个类别的散度矩阵之和,即
S
w
=
∑
i
=
1
n
S
w
i
S
w
i
=
∑
x
∈
X
i
(
x
−
μ
i
)
(
x
−
μ
i
)
T
S_w=\sum^n_{i=1}S_{w_i}\\ S_{w_i}=\sum_{x\in X_i}(x-\mu_i)(x-\mu_i)^T
Sw=i=1∑nSwiSwi=x∈Xi∑(x−μi)(x−μi)T
可得:
S
b
=
S
t
−
S
w
S_b=S_t-S_w
Sb=St−Sw
可以使用多种实现方法使用
S
b
,
S
w
,
S
t
S_b, S_w, S_t
Sb,Sw,St三者中的任何两种即可。常见的一种实现是采用优化目标
(21)
m
a
x
t
r
(
W
T
S
b
W
)
t
r
(
W
T
S
w
W
)
max\frac{tr(W^TS_bW)}{tr(W^TS_wW)}\tag{21}
maxtr(WTSwW)tr(WTSbW)(21)
可通过广义特征值问题求解:
S
b
W
=
λ
S
w
W
S_bW=\lambda S_wW
SbW=λSwW
W
W
W的闭解形式是
S
w
−
1
S
b
S^{-1}_wS_b
Sw−1Sb的
N
−
1
N-1
N−1个最大广义特征值所对应的特征向量组成的矩阵。
-
多分类学习
不失一般性, 考虑 N N N个类别 C 1 , C 2 , . . . . , C N C_1, C_2, ...., C_N C1,C2,....,CN多分类学习的基本思路是“拆解法”, 最经典的拆分策略有三种:“一对一”(One vs. One 简称OvO)、“一对其余”(One vs. Rest 简称 OvR)和“多对多”(Many vs. Many 简称MvM).
OvO将这 N N N个类别两两配对, 从而产生 N ( N − 1 ) / 2 N(N-1)/2 N(N−1)/2个二元分类任务。
OvR 则是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练N个分类器。
MvM是每次将若干个类作为正类, 若干个其他类作为反类。MVM技术常用的叫“纠错输出码”,由于纠错编码实用性不强,所以在这里不过多介绍。
接下来我会找一些编程题来实现对线性回归算法的复盘。