降维的技术

   有时候机器学习所使用的特征太多了,几百上千个,这个时候计算量很大,可能需要减少对一些特征进行降维。当然,对特征进行降维不意味着对特征进行筛选,我曾经以为,所谓的降维,就是选择一些更加重要的特征,但实际上并不是,这个降维其实就是对原本的矩阵进行变换,然后让原矩阵变小了,特征还是那些特征,只是它们融合到了新矩阵,这种融合的手段,实际上改变了原来特征的性质,所以一定要小心使用。

    降维有好几种方法,其中常见的降维手段有主成分分析(PCA),线性判别分析(LDA),局部线性嵌入(LLE)。文章末尾会讲几个其他的手段当作科普。

1.奇异值分解

学过线性代数的同学都应该理解特征值和特征向量的关系。特征向量其实就是坐标系的一个维度,特征向量组成的矩阵就是对应的坐标系。为什么叫他们坐标系呢,因为空间中的任意一点,都可以用基坐标系线性组合。

坐标系就是这么一个东西,以二维空间为例,它的坐标系是:j,k不为0

a = [0, j]

b = [k, 0]

那么这个二维坐标的任意一点就可以用下面这个式子表示,k和l为任意常数

k*a+l*b

没问题吧.

那么,我们任意矩阵A可以表示为

A = Q\Sigma Q^-1

其中Q是A的左特征矩阵,Q-1是它的右特征矩阵,Segama是对角矩阵,对角线上的值是右特征矩阵对应的特征值开方。

计算过程我就不多说了,很简单

(1).求A^T*A得特征矩阵和特征值得到Q

(2).求A*A^T的特征矩阵和特征向量值得到QT

(3).\Sigma等于A*A^T对应的特征值开方,然后形成对角矩阵

有些矩阵没办法求特征矩阵和特征向量,所以我们一般是采用协方差矩阵

2.PCA降维

  PCA降维使用的一般是奇异值分解,最后得到特征矩阵和特征值。特征向量组成特征矩阵的时候,需要按照特征值的大小进行排列,特征值的大小就代表了特征的贡献率,因此我们一般选择前面几个特征值对应的特征向量组成特征矩阵W,降维之后的特征矩阵为WT*X

  PCA降维的方法是让数据投影到低维度上,让数据尽可能的分来。

  PCA也有核技巧,先让数据进行一次非线性映射,也就是通过核函数计算一次,得到新的矩阵,然后来求特征值和特征向量。

3.LDA线性判别分析

这个方法其实和PCA的思想差不多,也是在降维的时候,使得组间差异最大,组间差异最小,不同的是,它是一种和有监督的学习,而不是PCA那种无监督的计算。LDA降维之后的特征维度必然减少,而PCA可以不减少维度。LDA可以用作二分类。它的计算过程其实和PCA差不多。

4.LLE局部线性嵌入

LLE降维是保持局部线性关系的一种降维方式。

一般要选取k个临近值,然后求每个样本的k个临近样本,这k个样本可以线性组合大致可以表示这个样本,然后要求系数组合等于1,那么就有了约束条件。最后求解这个条件就行了。

简单来讲,就是降维要求保持数据的原本相对关系,这种要求是尽量,而不是绝对。

它的优点在于

(1).可以学习任意维度的局部线性的地位流形。

(2).算法可归结为稀疏矩阵特征分解,计算复杂度相对较小

缺点在于

(1).算法学习的流形只能是不闭合的,且样本是稠密均匀。

(2).对K值的选择很敏感。

5.其他降维技术

(1).随机投影,顾名思义,就是把高维数据随机投影到一个低纬度,这种方法居然是科学的,因为有研究指出,降维的质量取决于实例的数量和目标维度,和初始维度无关。

(2).多维缩放:尽量保持样本之间的距离

(3).Isomap:将实例与周围最近的邻居连接创建一个图,保持实例之间的测地距离

(4)t分布随机临近嵌入:降维的同时使得相似的实例靠近,不一样的实例尽可能分开

你可能感兴趣的:(机器学习,人工智能)