机器学习笔记之线性判别分析
线性判别分析
线性判别分析(Linear Discriminant Analysis,LDA)是一种经典的线性学习方法,最早是由Fisher提出,亦称“Fisher判别分析”,主要应用于当时二分类问题。
LDA的思想非常简单:给定训练样本数据集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离,简单来说就是“类内小,类间大”。在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定样本的类别。示意图如下:
给定数据集D={(x1,y1),(x2,y2),…,(xN,yN},y∈{C=+1,C2=−1},其中xC1={xi∣yi=+1},xC2={xi∣yi=−1},∣xC1∣=N1,∣xC2∣=N2,N1+N2=ND=\{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N\},y\in\{C_=+1,C_2=-1\},其中x_{C_1}=\{x_i|y_i=+1\},x_{C_2}=\{x_i|y_i=-1\},|x_{C_1}|=N_1,|x_{C_2}|=N_2,N_1+N_2=ND={(x1,y1),(x2,y2),…,(xN,yN},y∈{C=+1,C2=−1},其中xC1={xi∣yi=+1},xC2={xi∣yi=−1},∣xC1∣=N1,∣xC2∣=N2,N1+N2=N。
将数据投影到直线w\boldsymbol ww上两类样本的平均距离和协方差矩阵分别为Z‾1=1N∑i=1N1wTxi,Z‾2=1N∑i=1N2wTxiS1=1N∑i=1N1(wTxi−Z‾1)(wTxi−Z‾1)T,S2=1N∑i=1N2(wTxi−Z‾2)(wTxi−Z‾2)T\overline Z_1=\frac{1}{N}\sum_{i=1}^{N_1}w^Tx_i,\overline Z_2=\frac{1}{N}\sum_{i=1}^{N_2}w^Tx_i\\S_1=\frac{1}{N}\sum_{i=1}^{N_1}(w^Tx_i-\overline Z_1)(w^Tx_i-\overline Z_1)^T,S_2=\frac{1}{N}\sum_{i=1}^{N_2}(w^Tx_i-\overline Z_2)(w^Tx_i-\overline Z_2)^TZ1=N1i=1∑N1wTxi,Z2=N1i=1∑N2wTxiS1=N1i=1∑N1(wTxi−Z1)(wTxi−Z1)T,S2=N1i=1∑N2(wTxi−Z2)(wTxi−Z2)T
想要同类样例的投影点尽可能接近,一个想法就是使同类样例投影点的协方差尽可能小,即S1+S2S_1+S_2S1+S2尽可能小;而想要异类样例的投影点尽可能远,可以让类中心的距离尽可能大,即(Z‾1−Z‾2)2(\overline Z_1-\overline Z_2)^2(Z1−Z2)2尽可能大,同时考虑二者,则可选取目标函数为J=(Z‾1−Z‾2)2S1+S2,w∗=argmaxwJ(w)J=\frac{(\overline Z_1-\overline Z_2)^2}{S_1+S_2},\boldsymbol w^*=\arg \max_wJ(w)J=S1+S2(Z1−Z2)2,w∗=argwmaxJ(w)
∴(Z‾1−Z‾2)2=(1N∑i=1N1wTxi−1N∑i=1N2wTxi)2=(wT(1N∑i=1N1xi−1N∑i=1N2xi))2=(wT(x‾C1−x‾C2))2=wT(x‾C1−x‾C2)(x‾C1−x‾C2)Tw\begin{aligned}
\therefore (\overline Z_1-\overline Z_2)^2&=\big(\frac{1}{N}\sum_{i=1}^{N_1}w^Tx_i-\frac{1}{N}\sum_{i=1}^{N_2}w^Tx_i\big)^2=\Big(w^T\big(\frac{1}{N}\sum_{i=1}^{N_1}x_i-\frac{1}{N}\sum_{i=1}^{N_2}x_i\big)\Big)^2\\&=\Big(w^T(\overline x_{C_1}-\overline x_{C_2})\Big)^2=w^T(\overline x_{C_1}-\overline x_{C_2})(\overline x_{C_1}-\overline x_{C_2})^Tw
\end{aligned}∴(Z1−Z2)2=(N1i=1∑N1wTxi−N1i=1∑N2wTxi)2=(wT(N1i=1∑N1xi−N1i=1∑N2xi))2=(wT(xC1−xC2))2=wT(xC1−xC2)(xC1−xC2)Tw
上面就是“类间散度矩阵”
S1=1N1∑i=1N1(wTxi−1N∑j=1N1wTxj)(wTxi−1N∑j=1N1wTxj)T=1N1∑i=1N1wT(xi−x‾C1)(xi−x‾C2)Tw=wT(1N1∑i=1N1(x‾C1−x‾C2)(x‾C1−x‾C2)T)w=wTSC1w\begin{aligned}S_1&=\frac{1}{N_1}\sum_{i=1}^{N_1}(w^Tx_i-\frac{1}{N}\sum_{j=1}^{N_1}w^Tx_j)(w^Tx_i-\frac{1}{N}\sum_{j=1}^{N_1}w^Tx_j)^T\\&=\frac{1}{N_1}\sum_{i=1}^{N_1}w^T(x_i-\overline x_{C_1})(x_i-\overline x_{C_2})^Tw\\&=w^T\Big(\frac{1}{N_1}\sum_{i=1}{N_1}(\overline x_{C_1}-\overline x_{C_2})(\overline x_{C_1}-\overline x_{C_2})^T\Big)w\\&=w^TS_{C_1}w
\end{aligned}S1=N11i=1∑N1(wTxi−N1j=1∑N1wTxj)(wTxi−N1j=1∑N1wTxj)T=N11i=1∑N1wT(xi−xC1)(xi−xC2)Tw=wT(N11i=1∑N1(xC1−xC2)(xC1−xC2)T)w=wTSC1w
同理可得S2=wTSC2w,∴S1+S2=wTSC1w+wTSC2w=wT(SC1+SC2)wS_{2}=w^TS_{C_2}w,\therefore S_1+S_2=w^TS_{C_1}w+w^TS_{C_2}w=w^T(S_{C_1}+S_{C_2})wS2=wTSC2w,∴S1+S2=wTSC1w+wTSC2w=wT(SC1+SC2)w。
因此J(w)=wT(x‾C1−x‾C2)(x‾C1−x‾C2)TwwT(SC1+SC2)w=wTSbwwTSwwJ(w)=\frac{w^T(\overline x_{C_1}-\overline x_{C_2})(\overline x_{C_1}-\overline x_{C_2})^Tw}{w^T(S_{C_1}+S_{C_2})w}=\frac{w^TS_bw}{w^TS_ww}J(w)=wT(SC1+SC2)wwT(xC1−xC2)(xC1−xC2)Tw=wTSwwwTSbw其中Sb=(x‾C1−x‾C2)(x‾C1−x‾C2)T,Sw=SC1+SC2S_b=(\overline x_{C_1}-\overline x_{C_2})(\overline x_{C_1}-\overline x_{C_2})^T,S_w=S_{C_1}+S_{C_2}Sb=(xC1−xC2)(xC1−xC2)T,Sw=SC1+SC2
化简为:J(w)=wTSbwwTSww=wTSbw(wTSww)−1J(w)=\frac{w^TS_bw}{w^TS_ww}=w^TS_bw(w^TS_ww)^{-1}J(w)=wTSwwwTSbw=wTSbw(wTSww)−1
令∂J(w)∂w=2Sbw(wTSww)−1−wTSbw(wTSww)−2⋅2Sww=0⇒Sbw(wTSww)−wTSbwSww=0⇒wTSbw⎵∈RSww=Sbw(wTSww)⎵∈R⇒Sww=wTSwwwTSbw⋅Sbw⇒w=wTSwwwTSbwSw−1⋅Sb⋅w∝Sw−1⋅Sb⋅w⎵(x‾C1−x‾C2)(x‾C1−x‾C2)Tw⎵∈R⇒∝Sw−1(x‾C1−x‾C2)\begin{aligned}
&\frac{\partial J(w)}{\partial w}=2S_bw(w^TS_ww)^{-1}-w^TS_bw(w^TS_ww)^{-2}\cdot2S_ww=0\\&\Rightarrow S_bw(w^TS_ww)-w^TS_bwS_ww=0\Rightarrow \underbrace{w^TS_bw}_{\in\R}S_ww=S_bw\underbrace{(w^TS_ww)}_{\in\R}\\&\Rightarrow S_ww=\frac{w^TS_ww}{w^TS_bw}\cdot S_bw\Rightarrow w=\frac{w^TS_ww}{w^TS_bw}S_w^{-1}\cdot S_b\cdot w\propto S_w^{-1}\underbrace{\cdot S_b\cdot w}_{(\overline x_{C_1}-\overline x_{C_2})\underbrace{(\overline x_{C_1}-\overline x_{C_2})^Tw}_{\in\R}}\\&\Rightarrow\propto S_w^{-1}(\overline x_{C_1}-\overline x_{C_2})
\end{aligned}∂w∂J(w)=2Sbw(wTSww)−1−wTSbw(wTSww)−2⋅2Sww=0⇒Sbw(wTSww)−wTSbwSww=0⇒∈RwTSbwSww=Sbw∈R(wTSww)⇒Sww=wTSbwwTSww⋅Sbw⇒w=wTSbwwTSwwSw−1⋅Sb⋅w∝Sw−1(xC1−xC2)∈R(xC1−xC2)Tw⋅Sb⋅w⇒∝Sw−1(xC1−xC2)
注:此处我们考虑的是www的方向,因为大小可以缩放。
在实际中,考虑到数值分解的稳定性,通常对SwS_wSw进行奇异值分解,即Sw=UΣVTS_w=\mathbf{U\Sigma V^T}Sw=UΣVT,这里Σ\SigmaΣ是一个实对角矩阵,其对角线上的元素是SwS_wSw的奇异值,然后再由Sw−1=UΣ−1VTS_w^{-1}=\mathbf{U\Sigma^{-1} V^T}Sw−1=UΣ−1VT得到Sw−1S_w^{-1}Sw−1。
同理,可以将此方法推广到多分类任务中。常见的多分类学习有“一对一”“一对余”“多对多”。