十五、Fisher判别法
1.Fisher判别法概述
在直接判别法中,如果我们假象每个类 G i G_i Gi在 R m \R^m Rm占据一个空间,那么我们判别样本属于其中的某一类,就以马氏距离(或广义马氏距离)作为标准,换言之,我们可以想象成每一个 G i G_i Gi具有某种“吸引力”,将距离它比较近的样本“拉”过来,这种拉力将 R m \R^m Rm分成 k k k个互不相交的区域。如果每个类占据的空间比较近,它们的“拉力界限”会比较模糊,判别的结果就会比较差。
如果存在某种变换,能将不同的类占据的空间分散开来,对样本也施加这种变换后,判别就发生在变换后的空间上,变成界限清晰的判别,这就是Fisher判别的基本思想。由于线性函数在实际应用中最方便,所以我们会使用一个线性函数 a = ( a 1 , ⋯ , a m ) a=(a_1,\cdots,a_m) a=(a1,⋯,am)进行投影。
我们可以将Fisher判别法视为距离判别法的补充,因为我们之前说过,距离判别对于均值相近的总体效果较差;如果使用投影函数,将原来的总体映射到一个均值能被拉开的一元空间或多元空间上,就能提高分辨的效率。
2.如何寻找线性函数 a a a
要鉴别是否将不同的类分开,可以运用方差分析的方法,即对比组内平方和与组间平方和的差距。现假设从
G
t
G_t
Gt中抽取的总体是
X
(
α
)
(
t
)
,
1
≤
α
≤
n
t
X_{(\alpha)}^{(t)},1\le \alpha \le n_t
X(α)(t),1≤α≤nt,则组内离差阵和组间离差阵是
A
=
∑
t
=
1
k
∑
α
=
1
n
t
(
X
(
α
)
(
t
)
−
X
ˉ
(
t
)
)
(
X
(
α
)
(
t
)
−
X
ˉ
(
t
)
)
′
,
B
=
∑
t
=
1
k
n
t
(
X
ˉ
(
t
)
−
X
ˉ
)
(
X
ˉ
(
t
)
−
X
ˉ
)
′
;
A=\sum_{t=1}^k\sum_{\alpha=1}^{n_t}(X_{(\alpha)}^{(t)}-\bar X^{(t)})(X_{(\alpha)}^{(t)}-\bar X^{(t)})', \\B = \sum_{t=1}^k n_t(\bar X^{(t)}-\bar X)(\bar X^{(t)}-\bar X)';
A=t=1∑kα=1∑nt(X(α)(t)−Xˉ(t))(X(α)(t)−Xˉ(t))′,B=t=1∑knt(Xˉ(t)−Xˉ)(Xˉ(t)−Xˉ)′;
经过线性变换
a
′
a'
a′的处理后,离差阵变成平方和,即
A
0
=
a
′
A
a
,
B
0
=
a
′
B
a
;
A_0=a'Aa, \\B_0=a'Ba;
A0=a′Aa,B0=a′Ba;
所以,根据方差分析的思想(参见《十一、回归方程与回归系数的显著性检验》:1.平方和分解),如果分组足够开,组间平方和
B
0
B_0
B0与组内平方和
A
0
A_0
A0的商应该会比较大,即定义
Δ
(
a
)
=
B
0
A
0
=
a
′
B
a
a
′
A
a
,
\Delta(a)=\frac{B_0}{A_0}=\frac{a'Ba}{a'Aa},
Δ(a)=A0B0=a′Aaa′Ba,
要求的结果是
max
Δ
(
a
)
\max \Delta(a)
maxΔ(a),为了对
a
a
a作出限制,增添一个条件
a
′
A
a
=
1
a'Aa=1
a′Aa=1,这样问题就变成了
max
Δ
(
a
)
=
a
′
B
a
,
s.t.
a
′
A
a
=
1.
\max \Delta (a)=a'Ba,\quad \text{s.t. }a'Aa=1.
maxΔ(a)=a′Ba,s.t. a′Aa=1.
这是一个带约束求最值问题,使用Lagrange乘数法,得到Lagrange函数是
φ
(
a
)
=
a
′
B
a
−
λ
(
a
′
A
a
−
1
)
,
{
∂
φ
∂
a
=
2
(
B
−
λ
A
)
a
=
0
,
∂
φ
∂
λ
=
a
′
A
a
−
1
=
0.
\varphi(a)=a'Ba-\lambda(a'Aa-1),\\ \left\{ \begin{array}l \dfrac{\partial \varphi}{\partial a}=2(B-\lambda A)a=0, \\ \dfrac{\partial \varphi}{\partial \lambda}=a'Aa-1=0. \end{array} \right.
φ(a)=a′Ba−λ(a′Aa−1),⎩⎪⎨⎪⎧∂a∂φ=2(B−λA)a=0,∂λ∂φ=a′Aa−1=0.
由此,
λ
\lambda
λ是
A
−
1
B
A^{-1}B
A−1B的特征根,
a
a
a是相应的特征向量,且
Δ
a
=
a
′
B
a
=
a
′
λ
A
a
=
λ
\Delta a=a'Ba=a'\lambda Aa=\lambda
Δa=a′Ba=a′λAa=λ,也就是说
Δ
a
\Delta a
Δa的最大化问题,实际上是求
A
−
1
B
A^{-1}B
A−1B的最大特征值和相应特征向量的问题。所以,我们最终结论是:
Fisher线性判别结论:在Fisher准则下,线性判别函数 u ( X ) = a ′ X u(X)=a'X u(X)=a′X的解 a a a,是特征方程 ∣ A − 1 B − λ I ∣ = 0 |A^{-1}B-\lambda I|=0 ∣A−1B−λI∣=0的最大特征根 λ 1 \lambda_1 λ1所对应的特征向量 l 1 l_1 l1,满足 l 1 ′ A l 1 = 1 l_1'Al_1=1 l1′Al1=1,且相应的判别效率为
Δ ( l 1 ) = l 1 ′ B l 1 = λ 1 . \Delta(l_1)=l_1'Bl_1=\lambda_1. Δ(l1)=l1′Bl1=λ1.
如果一个线性判别函数不能很好区分
k
k
k个总体,就选择第二大的特征值
λ
2
\lambda_2
λ2对应的特征向量
l
2
l_2
l2,以此类推到第三个、第四个……称线性判别函数
u
1
(
X
)
,
⋯
,
u
l
(
X
)
u_1(X),\cdots,u_l(X)
u1(X),⋯,ul(X)的累计判别能力为
P
(
l
)
=
λ
1
+
⋯
+
λ
l
λ
1
+
⋯
+
λ
r
.
P_{(l)}=\frac{\lambda_1+\cdots+\lambda_l}{\lambda_1+\cdots+\lambda_r}.
P(l)=λ1+⋯+λrλ1+⋯+λl.
这里
r
r
r是非零特征值总数,
λ
1
≥
λ
2
≥
⋯
≥
λ
r
>
0
\lambda_1\ge \lambda_2\ge \cdots \ge\lambda_r>0
λ1≥λ2≥⋯≥λr>0。
3.Fisher判别准则
如果 A − 1 B A^{-1}B A−1B的非零特征值是 λ 1 ≥ λ 2 ≥ ⋯ ≥ λ r > 0 \lambda_1\ge \lambda_2\ge \cdots \ge\lambda_r>0 λ1≥λ2≥⋯≥λr>0,对应的特征向量是 l 1 , l 2 , ⋯ , l r l_1,l_2,\cdots,l_r l1,l2,⋯,lr。这里 r ≤ min ( m , k − 1 ) r\le \min(m,k-1) r≤min(m,k−1),则我们可以建立线性投影函数 l ′ X l'X l′X,将 m m m元数据投影到一维直线上,但此时又应该如何判别?
先考虑
k
=
2
k=2
k=2的时候,此时
r
=
1
r=1
r=1,线性判别函数只有一个:
u
(
X
)
=
l
′
X
u(X)=l'X
u(X)=l′X,现在要求出特征根与特征向量。接下来是特征值求值的推导:
B
=
n
1
(
X
ˉ
(
1
)
−
X
ˉ
)
(
X
ˉ
(
1
)
−
X
ˉ
)
′
+
n
2
(
X
ˉ
(
2
)
−
X
ˉ
)
(
X
ˉ
(
2
)
−
X
ˉ
)
′
=
n
1
(
X
(
1
)
−
n
1
X
ˉ
(
1
)
+
n
2
X
ˉ
(
2
)
n
1
+
n
2
)
(
X
(
1
)
−
n
1
X
ˉ
(
1
)
+
n
2
X
ˉ
(
2
)
n
1
+
n
2
)
′
+
n
2
(
X
(
2
)
−
n
1
X
ˉ
(
1
)
+
n
2
X
ˉ
(
2
)
n
1
+
n
2
)
(
X
(
2
)
−
n
1
X
ˉ
(
1
)
+
n
2
X
ˉ
(
2
)
n
1
+
n
2
)
’
=
n
1
n
2
n
1
+
n
2
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
′
;
A
−
1
B
=
A
−
1
n
1
n
2
n
1
+
n
2
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
′
;
\begin{aligned} B=&n_1(\bar X^{(1)}-\bar X)(\bar X^{(1)}-\bar X)'+n_2(\bar X^{(2)}-\bar X)(\bar X^{(2)}-\bar X)' \\ =&n_1\left(X^{(1)}-\frac{n_1\bar X^{(1)}+n_2\bar X^{(2)}}{n_1+n_2} \right)\left(X^{(1)}-\frac{n_1\bar X^{(1)}+n_2\bar X^{(2)}}{n_1+n_2} \right)' + \\ &n_2\left(X^{(2)}-\frac{n_1\bar X^{(1)}+n_2\bar X^{(2)}}{n_1+n_2} \right)\left(X^{(2)}-\frac{n_1\bar X^{(1)}+n_2\bar X^{(2)}}{n_1+n_2} \right)’ \\ =&\frac{n_1n_2}{n_1+n_2}(\bar X^{(1)}-\bar X^{(2)})(\bar X^{(1)}-\bar X^{(2)})'; \\ \\ A^{-1}B=& A^{-1}\frac{n_1n_2}{n_1+n_2}(\bar X^{(1)}-\bar X^{(2)})(\bar X^{(1)}-\bar X^{(2)})'; \end{aligned}
B===A−1B=n1(Xˉ(1)−Xˉ)(Xˉ(1)−Xˉ)′+n2(Xˉ(2)−Xˉ)(Xˉ(2)−Xˉ)′n1(X(1)−n1+n2n1Xˉ(1)+n2Xˉ(2))(X(1)−n1+n2n1Xˉ(1)+n2Xˉ(2))′+n2(X(2)−n1+n2n1Xˉ(1)+n2Xˉ(2))(X(2)−n1+n2n1Xˉ(1)+n2Xˉ(2))’n1+n2n1n2(Xˉ(1)−Xˉ(2))(Xˉ(1)−Xˉ(2))′;A−1n1+n2n1n2(Xˉ(1)−Xˉ(2))(Xˉ(1)−Xˉ(2))′;
由于
A
B
AB
AB与
B
A
BA
BA的特征值相同,所以
A
−
1
B
A^{-1}B
A−1B的特征值与
n
1
n
2
n
1
+
n
2
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
′
A
−
1
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
\frac{n_1n_2}{n_1+n_2}(\bar X^{(1)}-\bar X^{(2)})'A^{-1}(\bar X^{(1)}-\bar X^{(2)})
n1+n2n1n2(Xˉ(1)−Xˉ(2))′A−1(Xˉ(1)−Xˉ(2))相同,即
det
[
n
1
n
2
n
1
+
n
2
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
′
A
−
1
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
−
λ
I
]
=
0
,
⇓
λ
=
n
1
n
2
n
1
+
n
2
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
′
A
−
1
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
=
d
n
1
n
2
n
1
+
n
2
d
2
.
\det\left[\frac{n_1n_2}{n_1+n_2}(\bar X^{(1)}-\bar X^{(2)})'A^{-1}(\bar X^{(1)}-\bar X^{(2)})-\lambda I \right]=0, \\ \Downarrow \\ \lambda=\frac{n_1n_2}{n_1+n_2}(\bar X^{(1)}-\bar X^{(2)})'A^{-1}(\bar X^{(1)}-\bar X^{(2)})\stackrel {\rm d}=\frac{n_1n_2}{n_1+n_2}d^2.
det[n1+n2n1n2(Xˉ(1)−Xˉ(2))′A−1(Xˉ(1)−Xˉ(2))−λI]=0,⇓λ=n1+n2n1n2(Xˉ(1)−Xˉ(2))′A−1(Xˉ(1)−Xˉ(2))=dn1+n2n1n2d2.
这里
d
2
=
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
′
A
−
1
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
d^2=(\bar X^{(1)}-\bar X^{(2)})'A^{-1}(\bar X^{(1)}-\bar X^{(2)})
d2=(Xˉ(1)−Xˉ(2))′A−1(Xˉ(1)−Xˉ(2)),
A
A
A是组内离差阵。与之对应的特征向量
l
l
l为
l
=
1
d
A
−
1
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
,
l=\frac 1dA^{-1}(\bar X^{(1)}-\bar X^{(2)}),
l=d1A−1(Xˉ(1)−Xˉ(2)),
它满足
A
−
1
B
l
=
λ
l
A^{-1}Bl=\lambda l
A−1Bl=λl与
l
′
A
l
=
1
l'Al=1
l′Al=1。可以注意到,这种情况与同协方差阵的直接判别法有很强的联系:同协方差阵情况下,
S
=
1
n
1
+
n
2
−
2
A
S=\frac{1}{n_1+n_2-2}A
S=n1+n2−21A,判别系数为
S
−
1
(
X
ˉ
(
1
)
−
X
ˉ
(
2
)
)
S^{-1}(\bar X^{(1)}-\bar X^{(2)})
S−1(Xˉ(1)−Xˉ(2)),与这里的特征向量恰好差了一个倍数。
接下来,就可以按照距离判别法对两个类进行判别(参见《十三、直接判别法》),记样本
X
X
X经过变换后变成
u
=
u
(
X
)
=
l
′
X
u=u(X)=l'X
u=u(X)=l′X。投影后
G
t
G_t
Gt的样本方差是
σ
^
2
=
l
′
S
t
l
\hat \sigma^2=l'S_tl
σ^2=l′Stl,判别阈值点可以取成
u
ˉ
=
1
2
(
u
ˉ
(
1
)
+
u
ˉ
(
2
)
)
或
u
∗
=
σ
^
2
u
ˉ
(
1
)
+
σ
^
1
u
ˉ
(
2
)
σ
^
1
+
σ
^
2
.
\bar u=\frac12(\bar u^{(1)}+\bar u^{(2)})或u^*=\frac{\hat\sigma_2\bar u^{(1)}+\hat\sigma_1\bar u^{(2)}}{\hat \sigma_1+\hat \sigma_2}.
uˉ=21(uˉ(1)+uˉ(2))或u∗=σ^1+σ^2σ^2uˉ(1)+σ^1uˉ(2).
这里两种阈值点分别对应转换后方差相等于不等的情况。设
u
ˉ
(
1
)
>
u
ˉ
(
2
)
\bar u^{(1)}>\bar u^{(2)}
uˉ(1)>uˉ(2),如果
u
(
X
)
u(X)
u(X)大于阈值点,就判给
G
1
G_1
G1;否则判给
G
2
G_2
G2。
对于
r
>
1
r>1
r>1的情况,如果只取一个最大的特征值对应的特征向量作为线性判别函数,则情况与上面的类似,不同之处,只是在于一维直线上聚集了多个不同的正态总体
G
t
G_t
Gt,同样考察变换后的样本到变换后的类的马氏距离,取最小的即可,即:
min
(
u
−
u
ˉ
(
1
)
)
2
σ
^
i
2
,
i
=
1
,
2
,
⋯
k
.
\min\frac{(u-\bar u^{(1)})^2}{\hat \sigma_i^2},\quad i=1,2,\cdots k.
minσ^i2(u−uˉ(1))2,i=1,2,⋯k.
如果有
r
r
r个非零特征根与相应的
r
r
r个线性判别函数
u
1
(
X
)
,
⋯
,
u
r
(
X
)
u_1(X),\cdots,u_r(X)
u1(X),⋯,ur(X),将原来每个样本的
m
m
m个变量变成
r
r
r个新变量,这时候常常取
l
≤
r
l\le r
l≤r,且满足
(
λ
1
+
⋯
+
λ
l
)
/
(
λ
1
+
⋯
+
λ
r
)
≥
P
0
(
=
0.7
)
(\lambda_1+\cdots +\lambda_l)/(\lambda_1+\cdots+\lambda_r)\ge P_0(=0.7)
(λ1+⋯+λl)/(λ1+⋯+λr)≥P0(=0.7),这样就把
m
m
m元总体的判别问题化成了
l
l
l元总体的判别问题,运用
l
l
l元数据的距离判别法即可。
回顾总结
-
Fisher判别法的思想是,将原来距离较近的类通过某种线性判别函数的投影,分散到一个一维空间或者多维空间上,再用距离判别法来判别。
-
线性判别函数 l l l与其判别效率 λ \lambda λ,是 A − 1 B A^{-1}B A−1B的最大特征值与对应的特征向量,这里 A A A是组内离差阵, B B B是组间离差阵,即
A = ∑ t = 1 k ∑ α = 1 n t ( X ( α ) ( t ) − X ˉ ( t ) ) ( X ( α ) ( t ) − X ˉ ( t ) ) ′ , B = ∑ t = 1 k n t ( X ˉ ( t ) − X ˉ ) ( X ˉ ( t ) − X ˉ ) ′ . A=\sum_{t=1}^k\sum_{\alpha=1}^{n_t}(X_{(\alpha)}^{(t)}-\bar X^{(t)})(X_{(\alpha)}^{(t)}-\bar X^{(t)})', \\ B=\sum_{t=1}^k n_t(\bar X^{(t)}-\bar X)(\bar X^{(t)}-\bar X)'. A=t=1∑kα=1∑nt(X(α)(t)−Xˉ(t))(X(α)(t)−Xˉ(t))′,B=t=1∑knt(Xˉ(t)−Xˉ)(Xˉ(t)−Xˉ)′. -
特别当只有两组的时候,有
λ = n 1 n 2 n 1 + n 2 ( X ˉ ( 1 ) − X ˉ ( 2 ) ) ′ A − 1 ( X ˉ ( 1 ) − X ˉ ( 2 ) ) = n 1 n 2 n 1 + n 2 d 2 , l = 1 d A − 1 ( X ˉ ( 1 ) − X ˉ ( 2 ) ) . \lambda=\frac{n_1n_2}{n_1+n_2}(\bar X^{(1)}-\bar X^{(2)})'A^{-1}(\bar X^{(1)}-\bar X^{(2)})=\frac{n_1n_2}{n_1+n_2}d^2, \\ l = \frac 1dA^{-1}(\bar X^{(1)}-\bar X^{(2)}). λ=n1+n2n1n2(Xˉ(1)−Xˉ(2))′A−1(Xˉ(1)−Xˉ(2))=n1+n2n1n2d2,l=d1A−1(Xˉ(1)−Xˉ(2)).
此时 X X X经过变换变成 u = u ( X ) = l ’ X u=u(X)=l’X u=u(X)=l’X,分离的阈值点是
u ˉ = 1 2 ( u ˉ ( 1 ) + u ˉ ( 2 ) ) 或 u ∗ = σ ^ 2 u ˉ ( 1 ) + σ ^ 1 u ˉ ( 2 ) σ ^ 1 + σ ^ 2 . \bar u=\frac12(\bar u^{(1)}+\bar u^{(2)})或u^*=\frac{\hat\sigma_2\bar u^{(1)}+\hat \sigma_1\bar u^{(2)}}{\hat \sigma_1+\hat \sigma_2}. uˉ=21(uˉ(1)+uˉ(2))或u∗=σ^1+σ^2σ^2uˉ(1)+σ^1uˉ(2). -
如果只选择一个线性判别函数 l l l,那么就把数据映射到一维空间上,计算映射后样本到每个类的马氏距离,选择最小的那个:
d i 2 ( u ) = ( u − u ˉ ( i ) ) 2 σ ^ i 2 . d^2_i(u)=\frac{(u-\bar u^{(i)})^2}{\hat \sigma_i^2}. di2(u)=σ^i2(u−uˉ(i))2. -
如果选了多个线性判别函数 l 1 , ⋯ , l l l_1,\cdots,l_l l1,⋯,ll,一般需要满足 ( l 1 + ⋯ + l l ) / ( l 1 + ⋯ + l r ) > 0.7 (l_1+\cdots+l_l)/(l_1+\cdots +l_r)>0.7 (l1+⋯+ll)/(l1+⋯+lr)>0.7,将每一个 m m m元样本 X X X映射成 l l l元样本 u u u,再用 l l l元总体的距离判别法进行判别。