线性判别分析(LDA)降维方法

线性判别分析是一种线性降维的方法,和之前ARGO提及的PCA(见文章主成分分析(PCA)入门)目的一样,都是为了降低海量特征以实现降维,但两者又有显著的不同。全文分成如下四个部分:

PCA 回顾
线性判别分析(LDA)
多类别的线性判别分析
使用LDA的限制

一 PCA回顾

介绍LDA之前,简单的回顾一下之前讲到的PCA。PCA是一种无监督的线性降维方法,使用
将 m 维的样本 x 映射到 k 维的 y上,这 k 维是相互独立的正交特征,即主成分。

在PCA处理中,数据从原来的坐标系投影到新的坐标系,并且希望投影后的特征分布间隔越大越好,即方差越大越好。因为数据的最大方差特征越显示其包含最显著的信息,所以PCA将选择方差最大的方向作为坐标轴方向。第一个新坐标轴选择的原始数据中方差最大的方向,第二个新坐标轴选择与第一个新坐标轴正交且方差次大的方向。重复该过程,重复次数为原始数据的特征维数。具体步骤如下:

假设我们有一个样本矩阵
,m 是一个样本的维度,n 是样本的个数:

a.先对矩阵 X 做归一化,计算它的协方差矩阵, 则协方差矩阵的维度是

b. 计算协方差矩阵的特征值和特征向量。
c.将特征值排序,保留前 k 个最大的特征值对应的特征向量 , 维度为

d. 将数据矩阵投影到特征向量上,则整个样本矩阵可以降维到
上。

但是PCA作为非监督的降维方法,忽略了类别属性,所以它忽略的投影方向可能刚好包含了重要的可分类信息。如在下图所示情形下,使用PCA,1类和2类的类别将混合在一起难以区分,其主元方向不能保持数据的聚类信息。为解决这个问题,我们引入了有监督的线性判别方法LDA。

二 线性判别分析(LDA)

LDA的全称是Linear Discriminate Analysis(线性判别分析),与PCA不同的是,LDA是有监督学习。基本思想是将带标签的高维样本投影到更低维度的空间中,使投影后的点按类别区分,相同类别的点将会在投影后的空间中更接近,形成一簇一簇的情形,如上图所示。

二分类的LDA方法

二分类问题是通过一个线性变换,将 m 维的样本数据映射到 1 维,且希望该变换将属于同一类的样本数据之间越近越好(最小的类内距离),而将不同类的样本数据映射的越远越好(最大的类间距离),同时尽可能多保留样本数据的分类信息。

假设有一个 m 维的 N 个样例,其中
个样本属于类别

个样本属于类别
,要找一个 m 维的投影向量 w,把 m 维的样本空间投影到一个一维的一条线上 y ,用公式
来计算。

当 x 为二维的时候,要寻找一条直线做投影,这条直线能使样本点分离最明显,如下图所示。

从上图结果来看,右图效果比左图效果好,可以很好地把不同类别的样本点分离。

二分类LDA方法一般化

推广到多维,对LDA过程一般化,其目标函数和目标函数求解如下。

i) 目标函数

根据上节例子,可以知道目标函数应该满足

投影后两个类别之间的距离即类间离散度越大越好。

投影后同类之间的距离即类内离散度越小越好。
那怎么定义类间离散度呢?

假定
为类别
样本集合的均值:

投影后的均值为:

则定义类间离散度:

基于散列度(scatter)定义,

则定义类内离散度为:

从公式中可以看出,散列度的几何意义是样本点的密集程度,值越大越分散,值越小越集中。基于之前对目标函数的要求:最小的类内距离和最大的类间距离,得出最终的目标函数为:

ii) 目标函数求解

接下来寻找使J(w)最大的w,先对目标函数进行转换,使得分子越大,分母越小:

a. 对类内离散函数
转换, 希望
越小越好:

其中,

称为散列矩阵,即协方差矩阵。

定义类内散度矩阵:

则有:

b. 对类间离散函数
进行转换,希望
越大越好:

其中
为类间散度矩阵。

结合上述两步,将目标函数
改写成了:

c. 根据目标函数计算最大极值:

考虑
为一个标量,令其为
,将式子变成:

通过两种方式求解w:

a) 从形式上看,w对应了
的特征向量,而
为特征值,所以我们只需要求取的
特征向量即可。
b) 令
为一个标量,则有:

而基于目标函数的特点,对w扩大缩小任何倍不影响结果, 因为:

所以可以忽略常数
,得到

二分类LDA举例

考虑二维样本,其中, 类
有5个样本:(4,2) , (2,4) , (2,3) , (3,6) , (4,4) ;


有 5 个样本 (9,10) , (6,8) , (9,5) , (8,7) , (10,8);

类内均值为,

计算得,

散内矩阵为,

散间矩阵为,

通过以下两种方法求w :

a) 通过特征向量和特征值来计算 :

计算最大值
对应的 w:

,最佳投影为:

b) 直接计算:

可看出两种方法a,b的计算结果一致。

三 多类别的线性判别分析

上节针对的只是二分类的情况,对于多类别的情况,该如何保证投影后的类别充分分离呢?

假设有 n 维特征,m 个样本数据,共 C 个类别,要将 n 维数据映射到 k 维,所以需要k维向量来做投影:
,其中 W 为

矩阵。

对于类内散度矩阵
就是将 “两个类别的协方差矩阵之和"变成了"多个类别的协方差矩阵之和”,如下式所示:

对类间散度矩阵
,由计算两个类别的均值之差的绝对值变成计算每个类别的均值和所有样本的均值的差异,并对每个类别的数据量进行加权处理。如下式所示:

其中
是所有样本的均值:

,N为样本的总数量,
为类别,
为的样本数量。

类内离散函数
为:

而类间离散函数
为:

得到
的形式为:

由于

是矩阵形式,取其行列式计算目标函数,得到结果与上节的结论一样,即

最后利用求解矩阵的特征值,首先求出
的特征值,取前 k 个特征向量组成W矩阵即可。

另外注意因为
是非零向量,其秩是1,所以
的秩也为1

,所以
的秩最大不超过C。又因为C类
个最多只有C-1个无关性,所以
的秩最多为C-1,因此也有 k 最大为C-1。

四 使用LDA的限制

LDA至多可生成C-1维子空间,LDA降维后的维度区间在[1,C-1],与原始特征数无关。对于二分类,最多投影到一个维度上。
LDA假设数据服从单峰高斯分布,对于其他分布不能很好的进行投影降维。下图都为二类降维,最多能投影到 1 维上,但无论怎么投影,都难使红色点和蓝色点内部凝聚,类间分离。

LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好,如下图所示

你可能感兴趣的:(开发语言)