費雪線性判別

在模式识别中，费雪线性判别（Fisher's linear discriminant）是一种线性判别方法，其意图是在分类类别为c类时，将d维空间（样品点是d维向量）中的数据点投影到c-1维空间上去，使得不同类的样本点在这个空间上的投影尽量分离，同类的尽量紧凑。 在二类判别时，费雪线性判别将d维空间中的数据点投影到一条直线上去，使得不同类的样本点在这条直线上的投影尽量分离，同类的样本点在这条直线上尽量紧凑。假设有两类样本集 D 1 {\displaystyle {\mathcal {D}}_{1}} 的类别为ω1，样本数为n1， D 2 {\displaystyle {\mathcal {D}}_{2}} 的类别为ω2，样本数为n2。定义样本均值mi和类内散布Si。 m i = 1 n i ∑ x ∈ D i x , i = 1 , 2 {\displaystyle \mathbf {m} _{i}={\frac {1}{n_{i}}}\sum _{x\in {\mathcal {D}}_{i}}\mathbf {x} ,i=1,2} S i = ∑ x ∈ D i ( x − m i ) ( x − m i ) t , i = 1 , 2 {\displaystyle \mathbf {S} _{i}=\sum _{x\in {\mathcal {D}}_{i}}\left(\mathbf {x} -\mathbf {m} _{i}\right)\left(\mathbf {x} -\mathbf {m} _{i}\right)^{t},i=1,2} 投影直线的方向向量为w，样本投影在直线上的值为y。则可得两类样本投影后的均值和类内散布为 m ~ i {\displaystyle {\tilde {m}}_{i}} 和 s ~ i 2 {\displaystyle {\tilde {s}}_{i}^{2}} ，i=1,2。 y = w t x m ~ i = w t m i , i = 1 , 2 {\displaystyle y=\mathbf {w} ^{t}\mathbf {x} \quad {\tilde {m}}_{i}=\mathbf {w} ^{t}\mathbf {m} _{i},i=1,2} s ~ i 2 = ∑ y ∈ Y i ( y − m ~ i ) 2 = ∑ x ∈ D i ( w t x − w t m i ) 2 = ∑ x ∈ D i w t ( x − m i ) ( x − m i ) t w = w t S i w {\displaystyle {\begin{aligned}{\tilde {s}}_{i}^{2}&=\sum _{y\in {\mathcal {Y}}_{i}}\left(y-{\tilde {m}}_{i}\right)^{2}\\&=\sum _{x\in {\mathcal {D}}_{i}}\left(\mathbf {w} ^{t}\mathbf {x} -\mathbf {w} ^{t}\mathbf {m} _{i}\right)^{2}\\&=\sum _{x\in {\mathcal {D}}_{i}}\mathbf {w} ^{t}\left(\mathbf {x} -\mathbf {m} _{i}\right)\left(\mathbf {x} -\mathbf {m} _{i}\right)^{t}\mathbf {w} \\&=\mathbf {w} ^{t}\mathbf {S} _{i}\mathbf {w} \end{aligned}}} 要使不同类的样本点的投影尽量分离，同类尽量紧凑，可以使两类的投影的均值的差异尽量大，其方差的和尽量小，也就是要求 | m ~ 1 − m ~ 2 | 2 s ~ 1 2 + s ~ 2 2 {\displaystyle {\frac {\left|{\tilde {m}}_{1}-{\tilde {m}}_{2}\right|^{2}}{{\tilde {s}}_{1}^{2}+{\tilde {s}}_{2}^{2}}}} 最大化。 J ( w ) = | m ~ 1 − m ~ 2 | 2 s ~ 1 2 + s ~ 2 2 = ( w t m 1 − w t m 2 ) 2 w t S 1 w + w t S 2 w = w t ( m 1 − m 2 ) ( m 1 − m 2 ) t w w t ( S 1 + S 2 ) w = w t S B w w t S W w {\displaystyle {\begin{aligned}{\boldsymbol {J}}(\mathbf {w} )&={\frac {\left|{\tilde {m}}_{1}-{\tilde {m}}_{2}\right|^{2}}{{\tilde {s}}_{1}^{2}+{\tilde {s}}_{2}^{2}}}\\&={\frac {\left(\mathbf {w} ^{t}\mathbf {m} _{1}-\mathbf {w} ^{t}\mathbf {m} _{2}\right)^{2}}{\mathbf {w} ^{t}\mathbf {S} _{1}\mathbf {w} +\mathbf {w} ^{t}\mathbf {S} _{2}\mathbf {w} }}\\&={\frac {\mathbf {w} ^{t}\left(\mathbf {m} _{1}-\mathbf {m} _{2}\right)\left(\mathbf {m} _{1}-\mathbf {m} _{2}\right)^{t}\mathbf {w} }{\mathbf {w} ^{t}\left(\mathbf {S} _{1}+\mathbf {S} _{2}\right)\mathbf {w} }}\\&={\frac {\mathbf {w} ^{t}\mathbf {S_{B}} \mathbf {w} }{\mathbf {w} ^{t}\mathbf {S_{W}} \mathbf {w} }}\\\end{aligned}}} S B = ( m 1 − m 2 ) ( m 1 − m 2 ) t , S W = ( S 1 + S 2 ) {\displaystyle \mathbf {S_{B}} =\left(\mathbf {m} _{1}-\mathbf {m} _{2}\right)\left(\mathbf {m} _{1}-\mathbf {m} _{2}\right)^{t},\mathbf {S_{W}} =\left(\mathbf {S} _{1}+\mathbf {S} _{2}\right)} 可以证明当w满足 S B w = λ S W w {\displaystyle \mathbf {S_{B}w} =\lambda \mathbf {S_{W}w} } ，即w的方向与 S W − 1 ( m 1 − m 2 ) {\displaystyle \mathbf {S_{W}} ^{-1}\left(\mathbf {m} _{1}-\mathbf {m} _{2}\right)} 相同时，J(w)取得最大值。剩下的问题就是如何求解阈值w0，也就是在这个一维空间中把两类分开的那个点的位置。当J(w)超过w0就判决为某一类别ω，否则就判决为另一类别。然而目前并没有一个通用的选取方法。 在两个类别的分布是多元正态分布，且协方差矩阵相同时，根据贝叶斯决策理论， w = Σ − 1 ( u 1 − u 2 ) {\displaystyle \mathbf {w} =\mathbf {\Sigma } ^{-1}\left(\mathbf {u} _{1}-\mathbf {u} _{2}\right)} ，并且w0是一个与w和先验概率有关的常数。我们可以用样本均值与样本协方差去估计ui和Σ。更一般地说，如果我们对投影后的数据进行平滑，或用一维高斯函数进行拟合，ω0就位于使两类的后验概率相同的位置上。 费雪线性判别在面对二类判别时，将两类样本向一条直线投影，也就是将数据从d维空间向1维空间投影。这样在面对c个类的判别时，所要做就是将数据从d维空间向c-1维空间投影。这就需要推广投影方程、类间散布矩阵SB和类内散布矩阵SW。从d维空间向c-1维空间的投影是通过c-1投影方程进行的： y i = w i t x , x ∈ D i i = 1 , … , c − 1 {\displaystyle y_{i}=\mathbf {w} _{i}^{t}\mathbf {x} ,\mathbf {x} \in {\mathcal {D}}_{i}\quad i=1,\ldots ,c-1} 这里的 D i {\displaystyle {\mathcal {D}}_{i}} 为第i类的样本集。设 y = [ y 1 , y 2 , … , y c − 1 ] t W = [ w 1 , w 2 , … , w c − 1 ] {\displaystyle \mathbf {y} =[y_{1},y_{2},\ldots ,y_{c-1}]^{t}\quad \mathbf {W} =[w_{1},w_{2},\ldots ,w_{c-1}]} ，c-1个方程可以更简练地表达： y = W t x , y ∈ Y i i = 1 , … , c − 1 {\displaystyle \mathbf {y} =\mathbf {W} ^{t}\mathbf {x} ,\mathbf {y} \in {\mathcal {Y}}_{i}\quad i=1,\ldots ,c-1} 这里的 Y i {\displaystyle {\mathcal {Y}}_{i}} 为第i类的样本的投影向量集。类间散布矩阵SB和类内散布矩阵SW可以由总体散布矩阵ST和总体均值向量m推导得到： m = 1 n ∑ x x = 1 n ∑ i = 1 c n i m i S T = ∑ x ( x − m ) ( x − m ) t {\displaystyle \mathbf {m} ={\frac {1}{n}}\sum _{\mathbf {x} }\mathbf {x} ={\frac {1}{n}}\sum _{i=1}^{c}n_{i}\mathbf {m} _{i}\qquad \mathbf {S} _{T}=\sum _{\mathbf {x} }(\mathbf {x} -\mathbf {m} )(\mathbf {x} -\mathbf {m} )^{t}} S T = ∑ i = 1 c ∑ x ∈ D i ( x − m i + m i − m ) ( x − m i + m i − m ) t = ∑ i = 1 c ∑ x ∈ D i ( x − m i ) ( x − m i ) t + ∑ i = 1 c ∑ x ∈ D i ( m i − m ) ( m i − m ) T {\displaystyle {\begin{aligned}\mathbf {S} _{T}&=\sum _{i=1}^{c}\sum _{\mathbf {x} \in {\mathcal {D}}_{i}}(\mathbf {x} -\mathbf {m} _{i}+\mathbf {m} _{i}-\mathbf {m} )(\mathbf {x} -\mathbf {m} _{i}+\mathbf {m} _{i}-\mathbf {m} )^{t}\\&=\sum _{i=1}^{c}\sum _{\mathbf {x} \in {\mathcal {D}}_{i}}(\mathbf {x} -\mathbf {m} _{i})(\mathbf {x} -\mathbf {m} _{i})^{t}+\sum _{i=1}^{c}\sum _{\mathbf {x} \in {\mathcal {D}}_{i}}(\mathbf {m} _{i}-\mathbf {m} )(\mathbf {m} _{i}-\mathbf {m} )^{T}\\\end{aligned}}} 由此定义类间散布矩阵SB和类内散布矩阵SW： S W = ∑ i = 1 c ∑ x ∈ D i ( x − m i ) ( x − m i ) t S B = ∑ i = 1 c ∑ x ∈ D i ( m i − m ) ( m i − m ) T {\displaystyle \mathbf {S} _{W}=\sum _{i=1}^{c}\sum _{\mathbf {x} \in {\mathcal {D}}_{i}}(\mathbf {x} -\mathbf {m} _{i})(\mathbf {x} -\mathbf {m} _{i})^{t}\quad \mathbf {S_{B}} =\sum _{i=1}^{c}\sum _{\mathbf {x} \in {\mathcal {D}}_{i}}(\mathbf {m} _{i}-\mathbf {m} )(\mathbf {m} _{i}-\mathbf {m} )^{T}} S T = S W + S B {\displaystyle \mathbf {S} _{T}=\mathbf {S} _{W}+\mathbf {S_{B}} } 那么样本数据的投影向量的类间散布矩阵 S ~ B {\displaystyle {\widetilde {\mathbf {S} }}_{\mathbf {B} }} 和类内散布矩阵 S ~ W {\displaystyle {\widetilde {\mathbf {S} }}_{\mathbf {W} }} ：即为： S ~ B = ∑ i = 1 c ∑ y ∈ Y i ( m ~ i − m ~ ) ( m ~ i − m ~ ) T = W t S B W {\displaystyle {\widetilde {\mathbf {S} }}_{\mathbf {B} }=\sum _{i=1}^{c}\sum _{\mathbf {y} \in {\mathcal {Y}}_{i}}({\widetilde {\mathbf {m} }}_{i}-{\widetilde {\mathbf {m} }})({\widetilde {\mathbf {m} }}_{i}-{\widetilde {\mathbf {m} }})^{T}=\mathbf {W} ^{t}\mathbf {S_{B}} \mathbf {W} } S ~ W = ∑ i = 1 c ∑ y ∈ Y i ( y − m ~ i ) ( y − m ~ i ) t = W t S W W {\displaystyle {\widetilde {\mathbf {S} }}_{\mathbf {W} }=\sum _{i=1}^{c}\sum _{\mathbf {y} \in {\mathcal {Y}}_{i}}(\mathbf {y} -{\widetilde {\mathbf {m} }}_{i})(\mathbf {y} -{\widetilde {\mathbf {m} }}_{i})^{t}=\mathbf {W} ^{t}\mathbf {S_{W}} \mathbf {W} } 与两类情况类似，要找到某一W使得类内散布尽量小，类间散布尽量大。但这里的类内散布和类间散布不再是一个值，而是一个矩阵。矩阵的行列式是矩阵的特征值的乘积，也就是数据在各个主要方向的方差的积，相当于类别散布超椭球体的体积的平方。故使用行列式来度量散布，这样判别函数即为 J ( w ) = | S ~ B | | S ~ W | = | W t S B W | | W t S W W | {\displaystyle {\boldsymbol {J}}(\mathbf {w} )={\frac {|{\widetilde {\mathbf {S} }}_{\mathbf {B} }|}{|{\widetilde {\mathbf {S} }}_{\mathbf {W} }|}}={\frac {|\mathbf {W} ^{t}\mathbf {S_{B}} \mathbf {W} |}{|\mathbf {W} ^{t}\mathbf {S_{W}} \mathbf {W} |}}} 可以证明，当W的列向量wi是 S B w i = λ i S W w i {\displaystyle \mathbf {S_{B}} \mathbf {w} _{i}=\mathbf {\lambda } _{i}\mathbf {S_{W}} \mathbf {w} _{i}} 的广义特征向量时，可以使得J(w)最大。因为SB中c个秩为1或0的矩阵相加，而且其中只有c-1个矩阵是相互独立的。所以SB的秩最多为c-1。所以最多只有c-1个特征向量是非零的。 在人脸识别中，每一个人脸图像具有大量的像素点。LDA主要用来将特征减少到一个可以处理的数目在进行分类。每一个新的维度都是原先像素值的线性组合，这就构成了一个模板。这样获得的线性组合被称为Fisher faces,而通过主成分分析获得的则称为特征脸。 Duda, R. O.; Hart, P. E.; Stork, D. H. Pattern Classification 第2版. 机械工业出版社. 2004. ISBN 7-111-13687-X.  Fisher, R. A. The Use of Multiple Measurements in Taxonomic Problems. Annals of Eugenics. 1936, 7 (2): 179–188. doi:10.1111/j.1469-1809.1936.tb02137.x. hdl:2440/15227 .