本文首发于我的个人博客Suixin’s Blog
线性分类模型主要有四种不同的方法,线性判别函数、生成式模型、判别式模型以及贝叶斯观点下的Logistic回归。我们直接考虑对原始输入空间
x
\pmb{x}
xxx进行分类,当然也适用于对输入变量进行一个固定的变换
ϕ
(
x
)
\phi(\pmb{x})
ϕ(xxx)。
判别函数是一个以向量
x
\pmb{x}
xxx为输入,把它直接分配到
K
K
K个类别中的某一个类别(
C
k
C_k
Ck)的函数。
二分类
线性判别函数为
y
(
x
)
=
w
⊤
x
+
w
0
y(\pmb{x})=\pmb{w}^\top\pmb{x}+w_0
y(xxx)=www⊤xxx+w0
如果
y
(
x
)
⩾
0
y(\pmb{x})\geqslant0
y(xxx)⩾0,则它被分到
C
1
C_1
C1中,否则被分到
C
2
C_2
C2中。
多分类
造成困难的方法
one-versus-the-rest方法使用
K
−
1
K-1
K−1个分类器,每个分类器是一个二分类问题,分开属于
C
k
C_k
Ck和不属于的部分。但是可能会产生输入空间无法分类的区域,如图所示。
one-versus-one方法使用
K
(
K
−
1
)
2
\frac{K(K-1)}{2}
2K(K−1)个分类器,每个数据点的类别根据这些判别函数中的大多数输出类别确定。但是这也可能会产生输入空间无法分类的区域,如图所示。
正确的方法
引入一个
K
K
K类判别函数可以避免上述问题。该函数由
K
K
K个线性函数构成:
y
k
(
x
)
=
w
k
⊤
x
+
w
k
0
y_k(\pmb{x})=\pmb{w}_k^\top\pmb{x}+w_{k0}
yk(xxx)=wwwk⊤xxx+wk0
对于一个数据点
x
\pmb{x}
xxx,如果
y
k
(
x
)
y_k(\pmb{x})
yk(xxx)最大,就把它分到
C
k
C_k
Ck中。于是类别
C
k
C_k
Ck与
C
j
C_j
Cj之间的决策面为
y
k
(
x
)
=
y
j
(
x
)
y_k(\pmb{x})=y_j(\pmb{x})
yk(xxx)=yj(xxx)。这样的决策区域总是单连通的,并且是凸的。
对于二分类问题也可以构造基于两个线性函数
y
1
(
x
)
y_1(\pmb{x})
y1(xxx)和
y
2
(
x
)
y_2(\pmb{x})
y2(xxx)的判别函数,只是前述方法更简单且是等价的。
分类的最小平方法(Least Squares)求解参数矩阵
对于一个一般的
K
K
K分类问题,每个类别
C
k
C_k
Ck有一个线性模型
y
k
(
x
)
=
w
k
⊤
x
+
w
k
0
y_k(\pmb{x})=\pmb{w}_k^\top\pmb{x}+w_{k0}
yk(xxx)=wwwk⊤xxx+wk0
使用矩阵记号
y
(
x
)
=
W
~
⊤
x
~
\pmb{y}(\pmb{x})=\tilde{W}^\top\tilde{\pmb{x}}
yyy(xxx)=W~⊤xxx~
其中,
W
⊤
=
(
w
~
1
,
w
~
2
,
⋯
 
,
w
~
K
)
⊤
W^\top=(\tilde{\pmb{w}}_1,\tilde{\pmb{w}}_2,\cdots,\tilde{\pmb{w}}_K)^\top
W⊤=(www~1,www~2,⋯,www~K)⊤每行为
w
~
k
⊤
\tilde{\pmb{w}}_k^\top
www~k⊤,
w
~
k
=
(
w
k
0
,
w
k
⊤
)
⊤
\tilde{\pmb{w}}_k=(w_{k0},\pmb{w}_k^\top)^\top
www~k=(wk0,wwwk⊤)⊤为列向量,
x
~
=
(
1
,
x
⊤
)
⊤
\tilde{\pmb{x}}=(1,\pmb{x}^\top)^\top
xxx~=(1,xxx⊤)⊤为列向量。
一个新的输入
x
\pmb{x}
xxx将被分到
y
k
(
x
)
=
w
~
k
⊤
x
~
y_k(\pmb{x})=\tilde{\pmb{w}}_k^\top\tilde{\pmb{x}}
yk(xxx)=www~k⊤xxx~最大的类别中。
对于训练集
{
x
n
,
t
n
}
\{\pmb{x}_n,\pmb{t}_n\}
{xxxn,tttn},其中
n
=
1
,
2
,
⋯
 
,
N
n=1,2,\cdots,N
n=1,2,⋯,N,平方和误差函数为
E
D
(
W
~
)
=
1
2
T
r
{
(
X
~
W
~
−
T
)
⊤
(
X
~
W
~
−
T
)
}
E_D(\tilde{W})=\frac{1}{2}Tr\{(\tilde{X}\tilde{W}-T)^\top(\tilde{X}\tilde{W}-T)\}
ED(W~)=21Tr{(X~W~−T)⊤(X~W~−T)}
其中,
X
~
=
(
x
~
1
⊤
,
x
~
2
⊤
,
⋯
 
,
x
~
N
⊤
)
⊤
\tilde{X}=(\tilde{\pmb{x}}_1^\top,\tilde{\pmb{x}}_2^\top,\cdots,\tilde{\pmb{x}}_N^\top)^\top
X~=(xxx~1⊤,xxx~2⊤,⋯,xxx~N⊤)⊤,
T
=
(
t
~
1
⊤
,
t
~
2
⊤
,
⋯
 
,
t
~
N
⊤
)
⊤
T=(\tilde{\pmb{t}}_1^\top,\tilde{\pmb{t}}_2^\top,\cdots,\tilde{\pmb{t}}_N^\top)^\top
T=(ttt~1⊤,ttt~2⊤,⋯,ttt~N⊤)⊤采用‘1-of-K’表示方式。求导可得参数矩阵最优解为
W
~
=
(
X
~
⊤
X
~
)
−
1
X
~
⊤
T
=
X
~
†
T
\tilde{W}=(\tilde{X}^\top\tilde{X})^{-1}\tilde{X}^\top T=\tilde{X}^\dagger T
W~=(X~⊤X~)−1X~⊤T=X~†T
即可得判别函数为
y
(
x
)
=
W
~
⊤
x
~
=
T
⊤
(
X
~
†
)
⊤
x
~
\pmb{y}(\pmb{x})=\tilde{W}^\top\tilde{\pmb{x}}=T^\top(\tilde{X}^\dagger)^\top\tilde{\pmb{x}}
yyy(xxx)=W~⊤xxx~=T⊤(X~†)⊤xxx~
然而,最小平方解对于离群点缺少鲁棒性,且通常不会给出较好的结果,这与高斯条件分布假设有关。
Fisher线性判别函数
针对二分类问题,我们将数据投影到一维,通过调整权向量,使类别之间分开最大。投影式为
y
=
w
⊤
x
y=\pmb{w}^\top\pmb{x}
y=www⊤xxx
当得到最佳的投影之后,只需设置一个恰当的阈值即可将样本分类。
投影之后的类别均值差为
m
2
−
m
1
=
w
⊤
(
m
2
−
m
1
)
m_2-m_1=\pmb{w}^\top(\pmb{m}_2-\pmb{m}_1)
m2−m1=www⊤(mmm2−mmm1)
其中,
m
1
\pmb{m}_1
mmm1和
m
2
\pmb{m}_2
mmm2为原始数据的类别均值向量,此处限制
w
\pmb{w}
www为单位长度,即
∑
i
w
i
2
=
1
\sum_iw_i^2=1
∑iwi2=1。
Fisher思想:最大化一个函数,使得类均值的投影分开较大,类内的方差较小。
Fisher准则根据类间方差和类内方差的比值定义:
J
(
w
)
=
(
m
2
−
m
1
)
2
s
1
2
+
s
2
2
J(\pmb{w})=\frac{(m_2-m_1)^2}{s_1^2+s_2^2}
J(www)=s12+s22(m2−m1)2
其中,投影后的一维类内方差为
s
k
2
=
∑
n
∈
C
k
(
y
n
−
m
k
)
2
s_k^2=\sum_{n\in C_k}(y_n-m_k)^2
sk2=∑n∈Ck(yn−mk)2,
y
n
=
w
⊤
x
n
y_n=\pmb{w}^\top\pmb{x}_n
yn=www⊤xxxn。
化简可得
J
(
w
)
=
w
⊤
S
B
w
w
⊤
S
W
w
J(\pmb{w})=\frac{\pmb{w}^\top S_B\pmb{w}}{\pmb{w}^\top S_W\pmb{w}}
J(www)=www⊤SWwwwwww⊤SBwww
其中,
S
B
S_B
SB和
S
W
S_W
SW分别为类间协方差阵和类内协方差阵
S
B
=
(
m
2
−
m
1
)
(
m
2
−
m
1
)
⊤
S
W
=
∑
n
∈
C
1
(
x
n
−
m
1
)
(
x
n
−
m
1
)
⊤
+
∑
n
∈
C
2
(
x
n
−
m
2
)
(
x
n
−
m
2
)
⊤
S_B=(\pmb{m}_2-\pmb{m}_1)(\pmb{m}_2-\pmb{m}_1)^\top \\ S_W=\sum_{n\in C_1}(\pmb{x}_n-\pmb{m}_1)(\pmb{x}_n-\pmb{m}_1)^\top+\sum_{n\in C_2}(\pmb{x}_n-\pmb{m}_2)(\pmb{x}_n-\pmb{m}_2)^\top
SB=(mmm2−mmm1)(mmm2−mmm1)⊤SW=n∈C1∑(xxxn−mmm1)(xxxn−mmm1)⊤+n∈C2∑(xxxn−mmm2)(xxxn−mmm2)⊤
对
J
(
w
)
J(\pmb{w})
J(www)求导可得
(
w
⊤
S
B
w
)
S
W
w
=
(
w
⊤
S
W
w
)
S
B
w
w
∝
S
W
−
1
(
m
2
−
m
1
)
(\pmb{w}^\top S_B\pmb{w})S_W\pmb{w}=(\pmb{w}^\top S_W\pmb{w})S_B\pmb{w}\\ \pmb{w}\propto S_W^{-1}(\pmb{m}_2-\pmb{m}_1)
(www⊤SBwww)SWwww=(www⊤SWwww)SBwwwwww∝SW−1(mmm2−mmm1)
若类内协方差阵是各向同性的,则
S
W
S_W
SW正比于单位矩阵,
w
\pmb{w}
www正比于原始数据的类均值差。
对于多分类问题,也有对应的Fisher判别函数。
感知器算法
对输入向量先进行一个固定的非线性变换再构造一个线性模型,为
y
(
x
)
=
f
(
w
⊤
ϕ
(
x
)
)
y(\pmb{x})=f(\pmb{w}^\top\phi(\pmb{x}))
y(xxx)=f(www⊤ϕ(xxx))
其中,
f
(
⋅
)
f(·)
f(⋅)为一个阶梯函数
f
(
a
)
=
{
1
,
a
⩾
0
−
1
,
a
<
0
f(a)= \begin{cases} 1, & a\geqslant0 \\ -1, & a<0 \end{cases}
f(a)={1,−1,a⩾0a<0
此处我们使用
t
=
+
1
t=+1
t=+1表示
C
1
C_1
C1,
t
=
−
1
t=-1
t=−1表示
C
2
C_2
C2。
我们需要找到合适的权向量
w
\pmb{w}
www使得对所有的数据点有
w
⊤
ϕ
(
x
n
)
t
n
>
0
\pmb{w}^\top\phi(\pmb{x}_n)\pmb{t}_n>0
www⊤ϕ(xxxn)tttn>0。
感知器准则:对于误分类的数据
x
n
\pmb{x}_n
xxxn赋予误差,则误差函数为
E
P
(
w
)
=
−
∑
n
∈
M
w
⊤
ϕ
n
t
n
E_P(\pmb{w})=-\sum_{n\in \mathscr{M}}\pmb{w}^\top\phi_n\pmb{t}_n
EP(www)=−n∈M∑www⊤ϕntttn
其中,
M
\mathscr{M}
M表示所有误分类数据的集合。对该误差函数使用随机梯度下降(SGD)
w
(
τ
+
1
)
=
w
(
τ
)
−
η
∇
E
P
(
w
)
=
w
(
τ
)
+
η
ϕ
n
t
n
\pmb{w}^{(\tau+1)}=\pmb{w}^{(\tau)}-\eta\nabla E_P(\pmb{w})=\pmb{w}^{(\tau)}+\eta\phi_n\pmb{t}_n
www(τ+1)=www(τ)−η∇EP(www)=www(τ)+ηϕntttn
由于
f
(
⋅
)
f(·)
f(⋅)的设置,不失一般性可设
η
=
1
\eta=1
η=1。则实际上SGD变为了:如果该数据点分类正确,则权向量保持不变;如果分类错误,对于类别
C
1
C_1
C1,把向量
ϕ
(
x
n
)
\phi(\pmb{x}_n)
ϕ(xxxn)加到当前的权向量上得到新的权向量,对于类别
C
2
C_2
C2,则从当前的权向量中减掉
ϕ
(
x
n
)
\phi(\pmb{x}_n)
ϕ(xxxn)得到新的权向量。
注:感知器学习规则并不保证在每个阶段都会减小整体误差。但由感知器收敛定理,如果训练数据线性可分,那么感知器算法可以保证在有限步骤内找到精确解。对于线性不可分数据,则永远不会收敛。