机器学习笔记 线性判别分析(LDA)(Linear Discriminate Analysis)

上篇博客分析了PCA(https://blog.csdn.net/qq_38366615/article/details/86663634),这次对LDA做一下分析。

与LDA与PCA一样,都是对数据进行绛维,但是,考虑的方向不一样,PCA主要是寻找数据的主要特征,然后将数据转换到这些特征上,而LDA则将数据的标签类型考虑进来,要求数据绛维后仍然可分。从这个层面上来说,PCA是一种无监督学习而LDA是一种有监督学习。LDA主要解决的问题是找到一个投影方向,使得数据投影到该方向后数据尽可能分开。一个最直观的感受是当不同类别的数据距离较远时,分类效果更好,在数学上我们使用数据的中心距离来代表整个数据的距离,这里我们首先从二分类问题入手。假设二分类问题,两类数据的中心分别为:{\mu _1}{\rm{ = }}\sum\limits_{s \in {C_1}} s{\mu _2}{\rm{ = }}\sum\limits_{s \in {C_2}} s。则可以得到两类中心投影后的距离为:

                                                                    L = \left\| {{w^T}{\mu _1} - {w^T}{\mu _2}} \right\|

这样我们就可以将LDA要解决的问题转化为带约束的优化问题:

                                                                   \left\{ {\begin{array}{*{20}{c}} {\mathop {\max }\limits_w \left\| {{w^T}({\mu _1} - {\mu _2})} \right\|}\\ {s.t.{w^T}w = 1} \end{array}} \right.

可以看出当w方向与{\mu _1} - {\mu _2}一致时能达到最大值。但是由于我们使用的是数据中心的距离,不同类别数据中心的数据较远不能代表所有数据都距离较远,数据中心是一个整体的概念,可能有一些不同类别的数据投影后还是会重叠,所以我们需要在中心距离远的基础上让各个类别的数据距离中心的距离更近,这样的话不同类别的数据重叠的概率就会比较少。所以,LDA的问题转化为最大化各个类别的中心距离同时最小化每个类别数据距离该类别中心距离。所以优化的问题为:

                                                                     L(w) = \frac{{{{\left\| {{w^T}({\mu _1} - {\mu _2})} \right\|}^2}}}{{{D_1} + {D_2}}}

{D_1},{D_2}分别表示为两类中的数据距离中心的和

                                              {D_1} = \sum\limits_{x \in {C_1}} {({w^T}} (x - {\mu _1}){)^2} = \sum\limits_{x \in {C_1}} {{w^T}} (x - {\mu _1}){(x - {\mu _1})^T}w

同理可以得到:

                                                               {D_2} = \sum\limits_{x \in {C_2}} {{w^T}} (x - {\mu _2}){(x - {\mu _2})^T}w

于是问题变为:

                                                           L(w) = \frac{{{w^T}({\mu _1} - {\mu _2})({\mu _1} - {\mu _2})^{T}w}}{{\sum\limits_{x \in {C_i}} {{w^T}(x - {\mu _i})(x - {\mu _i})^{T}w} }}

为了便于计算,令A = ({\mu _1} - {\mu _2}){({\mu _1} - {\mu _2})^T}表示类别之间的散度,B = \sum\limits_{x \in {C_i}} {(x - {\mu _i}} ){(x - {\mu _i})^T}表示类内之间的散度。用优化目标对w求导得:

                                                           \frac{{\partial L(w)}}{{\partial w}} = \frac{{\frac{{\partial {w^T}Aw}}{{\partial w}}{w^T}Bw - \frac{{\partial {w^T}Bw}}{{\partial w}}{w^T}Aw}}{{{{({w^T}Bw)}^2}}}

由于A和B都是对称阵而且{w^T}Bw{w^T}Aw都是标量,所以令导数等于零,就可以得到:

                                                                ({w^T}Bw)Aw = ({w^T}Aw)Bw

然后我们令\lambda = L(w) = \frac{{{w^T}Aw}}{{{w^T}Bw}},于是上面的式子可以写成:

                                                                         {B^{ - 1}}Aw = \lambda w

这里就得到了跟PCA相同的结论,最大化目标为一个矩阵的最大特征值,而投影的方向为该特征值对应的特征向量。到此,对于二分类问题的LDA分析就结束了,后面分析多分类问题的LDA。

 


 

对于多分类问题,我们将类别扩展到n,而且我们需要找的是d维的超平面\{ {w_1},{w_2}, \cdots {w_d}\}。上面方法的B矩阵仍然是适用的,只是把i从2扩大到n。我们需要重新定义A矩阵。我们定义全局散度为:

                                                                    T = \sum\limits_{i = 1}^n {({\mu _i} - \mu } ){({\mu _i} - \mu )^T}

其中\mu = \sum\limits_{i = 1}^n {{\mu _i}}。重新定义的A矩阵为:

{A^'} = T - A \\ = \sum\limits_{i = 1}^n {({x_i}} - \mu ){({x_i} - \mu )^T} - \sum\limits_{x \in {C_i}} {(x - {\mu _i}} ){(x - {\mu _i})^T} \\ = \sum\limits_{j = 1}^n {\sum\limits_{x \in {C_i}} {((x - \mu )(x - } } \mu {)^T} - (x - {\mu _j}){(x - {\mu _j})^T}) = \sum\limits_{j = 1}^n {{k_j}} ({\mu _j} - \mu )({\mu _j} - \mu )

所以最大化目标为:

                                                                    L(W) = \frac{{tr({W^T}A'W)}}{{tr({W^T}BW)}}

通过求解{B^{ - 1}}A的最大的d个特征值所对应的特征向量就能得到最佳的超平面。这里跟PAC的第二种求解方法类似。总的来说PCA跟LAD的求解过程类似,都是通过求解矩阵的最大的前d个特征值对应的特征向量,从而求解出最佳的超平面。

你可能感兴趣的:(机器学习笔记)