特征抽取 线性判别式分析LDA
2021-9-10
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property

原理

LDA思想

LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的,这点和PCA不同,PCA是不考虑样本类别输出的无监督降维技术。
LDA的思想就是“投影后类内方差最小,类间方差最大”,即投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
 
假设有两类数据 分别为红色和蓝色,这些数据特征是二维的,希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大:
notion image
直观上可以看出,右图要比左图的投影效果好,因为右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是LDA的主要思想了,当然在实际应用中,数据是多个类别的,原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。
 

瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient)

瑞利商是指这样的函数
为非零向量,的Hermitan矩阵(满足共轭转置矩阵和自己相等的矩阵,即)。如果是实矩阵,则满足的矩阵即为Hermitan矩阵。
 
瑞利商有一个非常重要的性质,即它的最大值等于矩阵最大的特征值,而最小值等于矩阵的最小的特征值,也就是满足:
当向量是标准正交基时,即满足时,瑞利商退化为:,这个形式在谱聚类和PCA中都有出现。
 
广义瑞利商是指这样的函数
为非零向量,的Hermitan矩阵。为正定矩阵。它的最大值和最小值是什么呢?
其实只要通过将其通过标准化就可以转化为瑞利商的格式,令,则分母转化为:
分子转化为:
此时的转化为
利用前面的瑞利商的性质,可以很快的知道,的最大值为矩阵的最大特征值,或者说矩阵的最大特征值,而最小值为矩阵的最小特征值。
 

二类LDA原理

假设数据集,其中任意样本维向量, 。我们定义 为第类样本的个数,为第类样本的集合,而为第类样本的均值向量,定义为第类样本的协方差矩阵(严格说是缺少分母部分的协方差矩阵)。
的表达式为:
的表达式为:
由于是两类数据,因此只需要将数据投影到一条直线上即可。假设投影直线是向量,则对任意一个样本,它在直线的投影为,对于两个类别的中心点,在在直线 的投影为
由于LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是我们要最大化 ,同时希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差 可能的小,即最小化 。综上所述,优化目标为:
一般定义类内散度矩阵为:
同时定义类间散度矩阵为:
这样优化目标重写为:
这不就是广义瑞利商嘛!最大值为矩阵的最大特征值,而对应的的最大特征值对应的特征向量!而的特征值和的特征值相同, 的特征向量的特征向量 满足
对于二类的时候,的方向恒平行于,不妨令,将其带入:,可以得到,也就是说只要求出原始二类样本的均值和方差就可以确定最佳的投影方向了。
 

多类LDA原理

假设数据集,其中任意样本维向量, 。定义 为第类样本的个数,为第类样本的集合,而为第类样本的均值向量,定义为第类样本的协方差矩阵。在二类LDA里面定义的公式可以很容易的类推到多类LDA。
由于是多类向低维投影,则此时投影到的低维空间就不是一条直线,而是一个超平面了。假设投影到的低维空间的维度为,对应的基向量为 ,基向量组成的矩阵为, 它是一个的矩阵。
此时优化目标应该可以变成为:
为所有样本均值向量。
 
但是有一个问题,就是都是矩阵,不是标量,无法作为一个标量函数来优化!也就是说无法直接用二类LDA的优化方法,怎么办呢?一般来说,可以用其他的一些替代优化目标来实现。
常见的一个LDA多类优化目标函数定义为:
的主对角线元素的乘积, 的矩阵。
的优化过程可以转化为:
上式最右边不就是广义瑞利商嘛!最大值为矩阵的最大特征值,最大的个值的乘积就是矩阵的最大的个特征值的乘积,此时对应的矩阵为这最大的个特征值对应的特征向量张成的矩阵。
由于是一个利用了样本的类别得到的投影矩阵,因此它的降维到的维度最大值为。为什么最大维度不是类别数呢?因为中每个的秩为1,因此协方差矩阵相加后最大的秩为(矩阵的秩小于等于各个相加矩阵的秩的和),但是由于如果知道前后,最后一个以由前线性表示,因此的秩最大为,即特征向量最多有个。
 

LDA算法流程

输入:数据集,其中任意样本维向量, ,降维到的维度
输出:降维后的样本集
 
  1. 计算类内散度矩阵
  1. 计算类间散度矩阵
  1. 计算矩阵
  1. 计算的最大的个特征值和对应的个特征向量,得到投影矩阵
  1. 对样本集中的每一个样本特征,转化为新的样本
  1. 得到输出样本集
 
实际上LDA除了可以用于降维以外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。
 

优缺点

优点:
  • 在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识
  • LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优
 
缺点:
  • LDA不适合对非高斯分布样本进行降维,PCA也有这个问题
  • 如果降维的维度大于,则不能使用LDA,目前有一些LDA的进化版算法可以绕过这个问题
  • LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好
  • LDA可能过度拟合数据
 

PCA VS LDA

相同点:
  • 两者均可以对数据进行降维
  • 两者在降维时均使用了矩阵特征分解的思想
  • 两者都假设数据符合高斯分布
 
不同点:
  • LDA是有监督的降维方法,而PCA是无监督的降维方法
  • LDA降维最多降到类别数 的维数,而PCA没有这个限制
  • LDA除了可以用于降维,还可以用于分类
  • LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向
 
这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。
notion image
当然,某些某些数据分布下PCA比LDA降维较优,如下图所示:
notion image
 

代码

LinearDiscriminantAnalysis类的参数
  • solver : 即求LDA超平面特征矩阵使用的方法。可以选择的方法有奇异值分解"svd",最小二乘"lsqr"和特征分解"eigen"。一般来说特征数非常多的时候推荐使用svd,而特征数不多的时候推荐使用eigen。主要注意的是,如果使用svd,则不能指定正则化参数shrinkage进行正则化。默认值是svd
  • shrinkage:正则化参数,可以增强LDA分类的泛化能力。如果仅仅只是为了降维,则一般可以忽略这个参数。默认是None,即不进行正则化。可以选择"auto",让算法自己决定是否正则化。当然我们也可以选择不同的[0,1]之间的值进行交叉验证调参。注意shrinkage只在solver为最小二乘"lsqr"和特征分解"eigen"时有效。
  • priors :类别权重,可以在做分类模型时指定不同类别的权重,进而影响分类模型建立。降维时一般不需要关注这个参数。
  • n_components:即进行LDA降维时降到的维数。在降维时需要输入这个参数。注意只能为[1,类别数-1)范围之间的整数。如果不是用于降维,则这个值可以用默认的None。
 
notion image
notion image
  • Scikit-Learn
  • 特征抽取 因子分析FA特征抽取 独立成分分析ICA
    目录