一、数据降维的简介
二、PCA的数学原理
三、PCA使用方法及例子
四、其他降维算法
1.为什么要进行降维?
在处理现实问题时,我们会发现大部分数据集的维度都高达成百乃至上千。但在实际应用中,有用信息却并不需要那么高的维度,而且每增加一维所需的样本个数呈指数级增长,我们通常没有那么多样本。于是高纬度下就会造成数据样本稀疏和距离计算困难等「维数灾难」。于是不难得出数据降维的优点有:
2.数据降维的方法
线性/非线性
线性降维是指通过降维所得到的低维数据能保持高维数据点之间的线性关系。
监督/非监督
监督式和非监督式学习的主要区别在于数据样本是否存在类别信息。非监督降维方法的目标是在降维时使得信息的损失最小;监督式降维方法的目标是最大化类别间的辨别能力。
全局/局部
局部方法仅考虑样本集合的局部信息,即数据点与临近点之间的关系。全局方法不仅考虑样本几何的局部信息,还考虑样本集合的全局信息,及样本点与非临近点之间的关系。
先提出一个问题:如何把三维的数据降成二维的?
找到一个二维平面将数据投射到平面上,用新的x1’,x2’表示。要求该平面能尽量接近原始数据信息(由于总是不可避免的会丢失一些信息,所以这也是PCA的缺点)。
启发:通过变化坐标轴使维度降低。 那么该如何变化坐标轴?
由线性代数的知识可以通过基向量实现变换,于是我们要解决的问题变成为:如何选择K个基向量,使N维向量降到K维向量并能尽可能的保存多的信息?
数据中包含信息多少我们可以这样理解-----信息在差异中存在,全是相同的东西即使量再多,信息量也很少。
降维的指标与方差和协方差有关,因此,可将两者统一表示为协方差矩阵。
优化目标:选择K个基,使N维向量降到K维向量后,新K维向量的方差最大,协方差为0。 设原始数据集为X,对应的协方差矩阵为C,而P是一组基按行组成的矩阵(基矩阵),Y是X对P做基变换后的数据集Y=PX,Y的协方差矩阵为D。
D是对角矩阵,C是对称矩阵。优化目标变成寻找一个矩阵P,满足PCP^T是一个对角矩阵,并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。
由对称矩阵对角化可知,P是协方差矩阵的特征向量单位化后按行排列出的矩阵,其中每一行都是C的一个特征向量。如果设P按照Λ中特征值的从大到小,将特征向量从上到下排列,则用P的前K行组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y。
#coding=utf-8
import numpy as np
from sklearn.decomposition import PCA
X = np.array([[-1,2,66,-1], [-2,6,58,-1], [-3,8,45,-2], [1,9,36,1], [2,10,62,1], [3,5,83,2]]) #导入数据,维度为4
pca = PCA(n_components=2) #降到2维
pca.fit(X) #训练
newX=pca.fit_transform(X) #降维后的数据
# PCA(copy=True, n_components=2, whiten=False)
print(pca.explained_variance_ratio_) #输出贡献率
print(newX) #输出降维后的数据
参数解释:
结果分析:
[0.95713353 0.03398198]
[[ 7.96504337 4.12166867]
[ -0.43650137 2.07052079]
[-13.63653266 1.86686164]
[-22.28361821 -2.32219188]
[ 3.47849303 -3.95193502]
[ 24.91311585 -1.78492421]]
第一行为各主成分的贡献率,可以看出第一个特征占了很大比重 ,后面几行是降维后的数据。
1.线性判别分析(LDA)
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。什么意思呢? 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
2. 核主成份分析 KCPA
基于核函数的主成分分析和主成分分析的步骤是一样的,只不过用核函数替代了原来的数据。原理:通过kPCA将非线性数据映射到高维空间,在高维空间下使用标准PCA将其映射到另一个低维空间。将数据隐式映射到高维线性可分空间,利用核函数进行处理,无需知道映射函数的具体形式。
3.局部线性嵌入(LLE)
LLE属于流形学习(Manifold Learning)的一种。流形学习是一大类基于流形的框架。数学意义上的流形比较抽象,不过我们可以认为LLE中的流形是一个不闭合的曲面。这个流形曲面有数据分布比较均匀,且比较稠密的特征,有点像流水的味道。基于流行的降维算法就是将流形从高维到低维的降维过程,在降维的过程中我们希望流形在高维的一些特征可以得到保留。
LLE首先假设数据在较小的局部是线性的,也就是说,某一个数据可以由它邻域中的几个样本来线性表示。比如我们有一个样本x1,我们在它的原始高维邻域里用K-近邻思想找到和它最近的三个样本x2,x3,x4. 然后我们假设x1可以由x2,x3,x4线性表示,即:
其中,w12,w13,w14为权重系数。在我们通过LLE降维后,我们希望x1在低维空间对应的投影x′1和x2,x3,x4对应的投影x′2,x′3,x′4也尽量保持同样的线性关系,即
也就是说,投影前后线性关系的权重系数w12,w13,w14是尽量不变或者最小改变的。
4.等距映射算法Isomap
Isomap是一种非迭代的全局优化算法。降维的目的是找出隐藏在高维数据中的低维结构,可以降低计算的复杂性。引进了邻域图,样本只与其相邻的样本连接,他们之间的距离可直接计算,较远的点可通过最小路径算出距离,在此基础上进行降维保距。
参考和引用:
https://blog.csdn.net/Reticent_Man/article/details/82633214
https://blog.csdn.net/liuweiyuxiang/article/details/78853404
https://blog.csdn.net/yanta0/article/details/91956735
https://www.cnblogs.com/pinard/p/6266408.html?utm_source=itdadao&utm_medium=referral