机器学习在数据分析与挖掘中的应用越来越广泛,随着机器学习模型的不断发展,处理的数据量和数据维度越来越大,衡量模型性能和可视化数据信息变得至关重要。一般来说用于挖掘的数据信息都是多维的,而目前数据可视化一般为二维或者三维的,要想对高维数据可视化必须进行降维。
降维是指使用特征选择或特征提取等方法在数据信息不丢失的情况下减少要素集中特征总数。例如一个人的身高体重胖瘦三个信息中,我们可以去掉胖瘦,直接用身高体重就可以表示,而胖瘦这是就是冗余特征。在机器学习中有许多用于降低维数的算法,主要有线性方法和非线性方法两大类。那么现在我们就来对比分析总结一下降维的几种方法。我们采用的是mnist数据集作为例子,通过降维可视化结果来直观理解不同降维方法的差异。
主成分分析(PCA)
主成分分析是一种统计方法,PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。
增量PCA
增量主成分分析是PCA的一种变体。它只保留最重要的奇异向量,将数据投影到空间中以减小尺寸。
核PCA
KPCA为核主成分分析,当数据不是线性可分的时候,KPCA采用可以支持向量机中核函数的思想将数据先映射到高维,然后再变换到低维。整个过程采用复杂的非线性投影以降低维数。
稀疏PCA
稀疏PCA通过求解低阶矩阵来提取数据特征中主要分量来降低数据维度。
奇异值分解(SVD)
SVD是对矩阵进行分解,但与特征值不同的是SVD并不要求分解的矩阵为方阵。通过SVD方法获得的特征值被称为奇异值,并且等效于特征向量的矢量。具体原理这里不做详细说明。
高斯随机投影(GRP)
在随机投影中,具有高维特征的数据被投影在具有随机矩阵的二维空间中以降低数据维度。具体可见sklearn中的sklearn.random_projection.GaussianRandomProjection模块。
稀疏随机投影(SRP)
稀疏随机投影是随机投影中的非结构化随机矩阵方法,与高斯随机投影类似,稀疏随机投影通过使用稀疏随机矩阵将原始输入空间减小维数。稀疏随机矩阵是密集高斯随机投影矩阵的替代方案,保证了类似的嵌入质量,同时具有更高的存储器效率并允许更快地计算投影数据。具体可见sklearn中的sklearn.random_projection.SparseRandomProjection模块。
多维缩放(MDS)
MDS是一种可视化样本之间相似性的方法。在预定义维数k的情况下,MDS返回最佳解决方案以在较小维度空间中表示数据。
ISOMAP
等距特征映射(ISOMAP)是一种基于光谱理论的非线性降维方法,其是在MDS的基础上作相应的改进,使得降维之后的点两两之间的距离尽量不变。
MiniBatch字典学习
基于字典的学习解决了矩阵分解的问题,MiniBatch是字典学习的一种方法,这种方法专门应用于大数据情况下字典学习。当数据量非常大时,严格对待每一个样本就会消耗大量的时间,而MiniBatch通过降低计算精度来换取时间利益,但是仍然能够通过大量的数据学到合理的词典。
独立分量分析(ICA)
独立分量分析是一种主要用于信号处理以线性分离混合数据的方法。
T-SNE
T-SNE是一种非线性降维方法,非常适用于高维数据降维到 2 维或者 3 维进行可视化。其算法有SNE改进得到,具体原理可自行学习。
局部线性嵌入(LLE)
LLE属于流行学习的一种,和传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于降维时保持样本局部的线性特征,由于LLE在降维时保持了样本的局部特征。
自动编码
自动编码器是基于人工神经网络的无监督方法,通过神经网络最大程度压缩数据而最小化数据中信息的损失。
参考原文
https://towardsdatascience.com/dimensionality-reduction-toolbox-in-python-9a18995927cd
深度学习与Python,专注于深度学习、机器学习前沿知识与资讯