线性判别分析(LDA)

阅读本篇之前,可先阅读一下主成分分析

对于 PCA 寻找的基向量满足:样本在该基向量方向投影后的坐标方差最大。对于 LDA 则换了一个标准,不选择投影坐标方差最大的方向,

而选择能使样本点分类效果最好的方向,即不同类别的样本点越分开越好,同类的越聚集越好。

这也就意味着,LDA 算法必须事先就知道样本的类别,所以它是一个有监督的模型。

对于 PCA,求投影后坐标的方差即可,那对于 LDA 呢?选择何种数字特征来描述分类效果的好坏呢?

    1)类内方差:对于每一类样本,计算它在基向量上的投影坐标,然后求方差,有几个类别就得到几个类内方差,类内方差越小意味着同类样本越聚集

                 所有类样本投影在某一基向量上的类内方差之和定义为类内散度

    2)类间均值:每一类样本投影后都会得到一个各自的投影均值(标量),如果只有两类的话,就可以用均值距离来度量类间差异,距离越大,则两类样本

                 点越分开;如果类别不止两类的话,就比较麻烦了,暂时不叙述。

设样本点个数为 $m$,每个样本点为 $n$ 维向量,训练集 $T$ 为

$$T = \left \{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})\right \}   \\
x_{i} = (x^{(1)},x^{(2)},...,x^{(n)})^{T}$$

 

1. 二类 LDA

   原来样本点属于 $n$ 维空间,是一个 $n \times m$ 的矩阵,现在先找出一个基向量 $w$,使得分类效果最好,该怎么求解呢?定义如下变量:

       1)$y_{i} \in \left \{ 0, 1 \right \}, i = 1,2,...,m$;

       2)$N_{j}$ 为第 $j$ 类样本内样本点的个数,$j = 0,1$;

       3)$X_{j}$ 代表第 $j$ 类样本,$j = 0,1$;

       4)$\mu_{j}$ 为第 $j$ 类样本的均值向量,$\mu_{j} = \frac{1}{N_{j}}\sum_{x \in X_{j}}^{}x$,是个 $n$ 维列向量。

   计算这两类样本在基向量 $w$ 上投影后的类内方差:

$$D_{0} = \sum_{x \in X_{0}}^{}\left ( w^{T}\left ( x - \mu_{0} \right ) \right )^{2} = w^{T}\left ( \sum_{x \in X_{0}}^{} \left ( x - \mu_{0} \right )\left ( x - \mu_{0} \right )^{T}   \right )w \\
D_{1} = \sum_{x \in X_{1}}^{}\left ( w^{T}\left ( x - \mu_{1} \right ) \right )^{2} = w^{T}\left ( \sum_{x \in X_{1}}^{} \left ( x - \mu_{1} \right )\left ( x - \mu_{1} \right )^{T}   \right )w $$

   求方差,前面应该要除以 $N_{j} - 1$,但对于确定的每类样本,常系数并不影响结果,令

$$S_{0} = \sum_{x \in X_{0}}^{} \left ( x - \mu_{0} \right )\left ( x - \mu_{0} \right )^{T}  \\
S_{1} = \sum_{x \in X_{1}}^{} \left ( x - \mu_{1} \right )\left ( x - \mu_{1} \right )^{T}$$

   $S_{0},S_{1}$ 其实就是对应类样本的协方差矩阵,是 $n$ 阶方阵,所以

$$D_{0} =  w^{T}S_{0}w \\
D_{1} =  w^{T}S_{1}w$$

   所以类内散度为

$$J_{1} = D_{0} + D_{1} = w^{T}\left (S_{0} + S_{1}  \right )w$$

   引入类内散度矩阵

$$S_{w} = S_{0} + S_{1}$$

   所以

$$J_{1} = w^{T}S_{w}w$$

   得到了衡量同类样本聚集程度的目标函数,还需要有衡量类间分离程度的目标函数。

   因为只有两类,所以将两类均值差的平方作为目标函数,即

$$J_{2} = \left ( w^{T}\mu_{1} - w^{T}\mu_{0} \right )^{2}$$

   将上面这个式子变换一下:

$$J_{2} = \left ( w^{T}\mu_{1} - w^{T}\mu_{0} \right )^{2} = \left ( w^{T}\left ( \mu_{1} - \mu_{0} \right ) \right )^{2} \\
= w^{T}\left ( \mu_{1} - \mu_{0} \right )\left ( \mu_{1} - \mu_{0} \right )^{T}w$$

   引入类间散度矩阵

$$S_{b} = \left ( \mu_{1} - \mu_{0} \right )\left ( \mu_{1} - \mu_{0} \right )^{T}$$

   所以

$$J_{2} = w^{T}S_{b}w$$

   为了得到目标向量 $w$,需要使 $J_{1}$ 最小化,$J_{2}$ 最大化,于是构造代价函数

$$J = \frac{J_{2}}{J_{1}} = \frac{w^{T}S_{b}w}{w^{T}S_{w}w}$$

   观察代价函数 $J$,它只与直线 $w$ 的方向有关,而与其长度无关(因为长度变化时,分子分母的变化能够抵消)。当找到最优解的时候,

   总可以通过放缩向量 $w$ 长度使得分母 $w^{T}S_{w}w = 1$,放缩后的向量仍为最优解($J$ 值不变),所以一开始可以直接令 $w^{T}S_{w}w = 1$,不影响最优解。

   建立最优化问题如下:

$$min \;\;\; -w^{T}S_{b}w \\
s.t. \;\;\; w^{T}S_{w}w = 1$$

   对应的拉格朗日函数为

$$L(w,\lambda) = -w^{T}S_{b}w + \lambda\left ( w^{T}S_{w}w - 1 \right )$$

   对 $w$ 求偏导得

$$L_{w} = -2S_{b}w + 2\lambda S_{w}w = 0 \\
\Rightarrow \; S_{b}w = \lambda S_{w}w \\
\Rightarrow S_{w}^{-1}S_{b}w = \lambda w$$

   所以 $w$ 就是矩阵 $S_{w}^{-1}S_{b}$ 的特征向量。将 $S_{b}$ 代入得

$$w = \frac{1}{\lambda}S_{w}^{-1}S_{b}w = \frac{1}{\lambda}S_{w}^{-1}\left ( \mu_{1} - \mu_{0} \right )\left ( \mu_{1} - \mu_{0} \right )^{T}w$$

   我们在乎的只是直线 $w$ 的投影方向,而与长度无关,所以可以将标量 $\frac{1}{\lambda}$ 和标量 $\left ( \mu_{1} - \mu_{0} \right )^{T}w$ 甩掉,即得

$$w = S_{w}^{-1}\left ( \mu_{1} - \mu_{0} \right )$$

   也就是说,对于二类 LDA,只要求出各类样本协方差矩阵 $S_{w}$ 和均值向量 $\mu_{0},\mu_{1}$ 就可以确定一个最佳的投影方向 $w$。

 

2. 多类 LDA

   这部分暂且不论。

 

posted @ 2020-10-19 07:49  _yanghh  阅读(541)  评论(0编辑  收藏  举报