manifold learning流形学习是一种非线性降维的手段。
这项工作的算法基于以下想法:很多数据集的维度只是人为的高。
多维度数据集非常难于可视化。反而2维或者3维数据很容易通过图表展示数据本身的内部结构,等价的高维绘图就远没有那么直观了。为了实现数据集结构的可视化,数据的维度必须通过某种方式降维。
最简单的降维手段是数据的随机投影。虽然这种方式实现一定程度的数据结构可视化,但是选择的随意性导致结果远不如意。在随机投影中,更有趣的结构容易丢失。
为了解决这种问题,人们设计了一系列监督或非监督的线性降维框架,例如Principal Component Analysis(PCA,主成分分析)、Independent Component Analysis、 Linear Discriminant Analysis…这些算法定义了特殊的平估量用于维数据选择有趣的线性投影,这些手段是有效的,不过经常会错失数据结构中的非线性项。
Manifold Learing可以看作一种生成类似PCA的线性框架,不同的是可以对数据中的非线性结构敏感。虽然存在监督变体,但是典型的流式学习问题是非监督的:它从数据本身学习高维结构,不需要使用既定的分类。
例子:
- 请参阅手写数字上的流形学习:局部线性嵌入,Isomap …以获取手写数字降维的示例。
- 有关玩具“S曲线”数据集上降维的示例,请参阅流形学习方法的比较。
manifold.Isomap ([n_neighbors, n_components, …]) |
Isomap Embedding |
---|---|
manifold.LocallyLinearEmbedding ([…]) |
Locally Linear Embedding |
manifold.MDS ([n_components, metric, n_init, …]) |
Multidimensional scaling |
manifold.SpectralEmbedding ([n_components, …]) |
Spectral embedding for non-linear dimensionality reduction. |
manifold.TSNE ([n_components, perplexity, …]) |
t-distributed Stochastic Neighbor Embedding. |
manifold.locally_linear_embedding (X, …[, …]) |
Perform a Locally Linear Embedding analysis on the data. |
---|---|
manifold.smacof (dissimilarities[, metric, …]) |
Computes multidimensional scaling using the SMACOF algorithm. |
manifold.spectral_embedding (adjacency[, …]) |
Project the sample on the first eigenvectors of the graph Laplacian. |