降维算法 LDA & PCA

问题:

什么是降维算法

降维算法有哪些

各自是怎么实现降维的

降维算法,是为了使庞大的数据,多个特征,在之后能得到更好的处理效果,如分类,进行尽量保持原有信息的数据的压缩同时提高数据的处理效率。

降维算法中有两种,LDA 线性判别分析 和 PCA 主成分分析

LDA是针对有监督问题的,PCA是针对无监督问题的。

LDA,Linear Discrimination Analysis ,线性判别分析

在有监督的问题中,LDA希望能找到最有价值的那几个特征,把方向往该方向投影,

数据得到充分分开,便于之后的模型建立。

其目标:最大化类间区分度。(针对特定方向)

那么如何找到最合适的投影呢(能够最大化类间区分度的投影)

我们可以先来设想,什么样的投影是我们想找的

首先投影完之后我们希望数据的分布是清晰的,那么类间的距离应该是越大越好的

其次,同类别的数据尽量靠近。

而怎样才算是类间的距离呢?

看边界点?那有可能数据的情况是这样的:某些点处于边界,而绝大多数点是集中在一起的,那么这时候看边界点就不是那么合适了。因此我们选用类间的均值来比较。每个类的均值之差的累和越大越好。

(实际处理上的妙点:因为去遍历所有的类其实在庞大的数据中是耗费时间和资源的,那么我们可以选用各类均值和全句均值之差的累和来判别类间距离)

而同类的数据就是,投影后统计所有类别的在同一类别中的所有点和其均值之差的累和。

那么我们就有了我们的目标函数(为了找到这个投影)——类别间距离/同类别距离,很明显这个目标函数越大越好

但是现在在这个函数中还没有我们需要的投影,那么就需要进行处理

我们用类间散布矩阵和类内散布矩阵来表示函数,那么就有了我们最终的目标函数——带投影的目标函数

(投影来自于原来数据和投影进行内积后得到的投影后的数据)

那么需要得到最合适的投影,也就是为了得到能让目标函数取最值的投影,我们需要进行对投影这个参数求偏导

而现在并没有办法直接求出偏导,而且,观察式子可以发现,分子分母其实是可以同比例放大缩小的,也就意味着,其实可以去无穷多个解,但这并不是我们想要的

因此我们对分母进行了限制——分母长度限制为1

那么我们此时就有了约束条件,就可以使用拉格朗日乘子法,求出在约束条件下目标函数的最值

最后我们我们得到的是投影是类间散布矩阵和类内散布矩阵的逆之积的特征向量

因此我们进行编码的时候只需要求出特征向量,根据特征值选择前几个特征完成降维操作。

PCA Principal Component Analysis 主成分分析

PCA 是针对无监督问题进行降维的最常用的手段

PCA是基于方差,提取最有价值的信息。

通常来说是肯定是投影后得到的方差越大,之后进行的分类等操作越容易,

也就是说方差越大,PCA效果越好

但是,事实上,特征间并不全是线性无关的,特征间有可能是线性有关的,

即特征A可以代替特征B,如果仅仅看方差,A的方差最大,那么B方差有可能也就较大,

但是对于我们来说,这样的特征AB,其实选一个就足够了吧,并不需要再多选一个,

因此我们需要添加协方差作为判断标准,协方差就是看两者相关性,接近1 ,就越是正相关,接近-1 ,就是负相关,我们想要的是0,没有相关性。

然后我们换个角度理解,线性无关,可以理解为内积为0,也就是垂直,那么也就是一组基

基的例子就是x-y坐标轴。因为PCA是无监督问题的处理方法,那么我们就无法以哪些特征对其Label影响最大这样的特定的方向去寻找,PCA是基于基的方式去寻找合适的投影方向。

因此我们选择第一个基的时候是选择方差最大的,而第二个基是选择与第一个基正交方向上的方差最大的一个,如此类推

那我们计算的时候使用的是协方差矩阵,协方差矩阵的对角线是方差,非对角线是协方差,同时也是个对称矩阵。

我们需要令协方差矩阵的非对角线为0,对协方差矩阵进行处理

通过矩阵分解(理论上就是特征值和特征向量的关系以及矩阵对角化),得到特征值和特征向量,选择其中合适的作为基,实现降维。

补充:协方差矩阵对角化,M=PCP-1,M就是特征值的对角阵,C是协方差矩阵,P是得到的特征值最大的经过单位化处理的特征向量

猜你喜欢

转载自blog.csdn.net/qq_40229367/article/details/88421165
今日推荐