线性判别分析(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}) ight }   \
x_{i} = (x^{(1)},x^{(2)},...,x^{(n)})^{T}$$

1. 二类 LDA

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

       1)$y_{i} in left { 0, 1 ight }, 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} ight ) ight )^{2} = w^{T}left ( sum_{x in X_{0}}^{} left ( x - mu_{0} ight )left ( x - mu_{0} ight )^{T}   ight )w \
D_{1} = sum_{x in X_{1}}^{}left ( w^{T}left ( x - mu_{1} ight ) ight )^{2} = w^{T}left ( sum_{x in X_{1}}^{} left ( x - mu_{1} ight )left ( x - mu_{1} ight )^{T}   ight )w $$

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

$$S_{0} = sum_{x in X_{0}}^{} left ( x - mu_{0} ight )left ( x - mu_{0} ight )^{T}  \
S_{1} = sum_{x in X_{1}}^{} left ( x - mu_{1} ight )left ( x - mu_{1} ight )^{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}  ight )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} ight )^{2}$$

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

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

   引入类间散度矩阵

$$S_{b} = left ( mu_{1} - mu_{0} ight )left ( mu_{1} - mu_{0} ight )^{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 + lambdaleft ( w^{T}S_{w}w - 1 ight )$$

   对 $w$ 求偏导得

$$L_{w} = -2S_{b}w + 2lambda 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} ight )left ( mu_{1} - mu_{0} ight )^{T}w$$

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

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

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

2. 多类 LDA

   这部分暂且不论。

原文地址:https://www.cnblogs.com/yanghh/p/13838160.html