Linear_Classification_03

2022年10月

Posted by franztao on October 31, 2019

本小节为线性分类的第三小节,主要推导了线性判别分析算法,也就是Fisher算法。Fisher算法的主要思想是:{ 类内小,类间大。}这有点类似于,软件过程里的松耦合,高内聚的思想。这个思想转换成数学语言也就是,同一类数据之间的方差要小,不同类数据之间的均值的差距要大。那么,我们对数据的描述如下所示:

X=(x1,x2,,xN)T=(xT1xT2xTN)=(x11x12x1px21x32x2pxN1xN2xNp)N×P
Y=(y1y2yN)N×1
那么,我们的数据集可以记为$\left{ (x_i,y_i) \right}{i=1}^Nx_i \in \mathbb{R}^py_i\in{+1,-1}{y=+1}C_1{y=-1}C_2X{c_1}\left{ x_i y_i=+1 \right}X_{c_2}\left{ x_i y_i=-1 \right} X_{c_1} =N_1 X_{c_2} =N_2N_1+N_2=N$。

Fisher线性判别分析}

\begin{figure}[H]     \centering     \includegraphics[width=.55\textwidth]{微信图片_20191031095624.png}     \caption{Fisher线性判别分析模型图}     \label{fig:my_label_1} \end{figure}

在左图中,我们设置了两个投影方向,很显然上面那个投影方向可以更好的将两个点之间分开。我们可以在投影方向上找一个点作为两个类别的分界点,也就是阈值(Threshhold)。首先,我们先引入一个有关投影算法的小知识。

投影算法}

首先,我们需要设定一个投影向量w,为了保险起见,对这个投影向量w作出约束,令||w||=1。那么,在空间中的一个数据点,也就是一个向量,在投影向量上的投影长度可以表述为:

xiw=|xi||w|cosθ=|xi|cosθ=

Fisher判别分析的损失函数表达式}

在这个部分,主要是要得出Fisher判别分析的损失函数表达式求法。对于,投影的平均值和方差,我们可以分别表述为:

\Barz=1NNi=1zi=1NNi=1wTxiSz=1NNi=1(zi\Barz)(zi\Barz)T

那么对于第一类分类点Xc1和第二类分类点Xc2可以表述为:

C1:\Barz1=1N1N1i=1wTxiS1=1N1Ni=1(zi\Barz1)(zi\Barz1)T
C2:\Barz2=1N2N2i=1wTxiS2=1N2Ni=1(zi\Barz2)(zi\Barz2)T

那么类间的距离我们可以定义为:(\Barz1\Barz2)2, 类内的距离被我们定义为S1+S2。那么我们的目标函数Target Function J(w),可以被定义为:

J(w)=(\Barz1\Barz2)2S1+S2

因为,我们的目的是使方差越小越好,均值之间的差越大越好。

损失函数表达式的化简}

(\Barz1\Barz2)2}

分子的化简过程如下所示:

(\Barz1\Barz2)2=(1N1N1i=1wTxi1N2N2i=1wTxi)2=(wT(1N1N1i=1xi1N2N2i=1xi))2=(wT(\BarXc1\BarXc2))2=wT(\BarXc1\BarXc2)(\BarXc1\BarXc2)Tw

S1+S2}

分母的化简过程如下所示:

S1=1N1Ni=1(zi\Barz1)(zi\Barz1)T=1N1Ni=1(wTxi1N1N1i=1wTxi)(wTxi1N1N1i=1wTxi)T=wT1N1Ni=1(xi1N1N1i=1xi)(xi1N1N1i=1xi)Tw=wTSc1w

同理可得,

S1=wTSc2w

所以,

S1+S2=wT(Sc1+Sc2)w

J(w)的最简表达形式}

J(w)=wT(\BarXc1\BarXc2)(\BarXc1\BarXc2)TwwT(Sc1+Sc2)w

Sb为between-class类间方差,Sw为within-class,也就是类内方差。那么有

Sb=(\BarXc1\BarXc2)(\BarXc1\BarXc2)TSw=(Sc1+Sc2)

于是,我们可以得到进一步化简的表达式;

J(w)=wTSbwwTSww

损失函数J(w)的梯度}

为了方便求导,我们令J(w)=(wTSbw)(wTSww)1

J(w)w=2Sbw(wTSww)1+(1)(wTSbw)(wTSww)2(2)Sww=0Sbw(wTSww)1=(wTSbw)(wTSww)2Sww

显然,w的维度是p×1wT的维度是1×pSw的维度是p×p,所以,wTSww是一个实数,同理 可得,wTSww是一个实数所以,可以得到

Sbw=(wTSbw)(wTSww)1SwwSbw=(wTSbw)(wTSww)Sww

我们主要是求得梯度的方向,大小不是很重要了。所以,我们可得

w=(wTSbw)(wTSww)S1bSwwS1bSww
Sww=(\BarXc1\BarXc2)(\BarXc1\BarXc2)Tw

而$(\Bar{X}{c_1} - \Bar{X}{c_2})^Tw$是一个实数,所以汇总可得

S1bSwwS1w(\BarXc1\BarXc2)

那么,我们就可以求得梯度的方向为$S_w^{-1}(\Bar{X}{c_1} - \Bar{X}{c_2})S_w^{-1}S^{-1}\propto Iw\propto (\Bar{X}{c_1} - \Bar{X}{c_2})$。既然,求得了梯度的方向,其实梯度的大小就不重要的。