manifold learning流形学习是一种非线性降维的手段。
这项工作的算法基于以下想法:很多数据集的维度只是人为的高。
多维度数据集非常难于可视化。反而2维或者3维数据很容易通过图表展示数据本身的内部结构,等价的高维绘图就远没有那么直观了。为了实现数据集结构的可视化,数据的维度必须通过某种方式降维。
最简单的降维手段是数据的随机投影。虽然这种方式实现一定程度的数据结构可视化,但是选择的随意性导致结果远不如意。在随机投影中,更有趣的结构容易丢失。
为了解决这种问题,人们设计了一系列监督或非监督的线性降维框架,例如Principal Component Analysis(PCA,主成分分析)、Independent Component Analysis(独立成分分析)、 Linear Discriminant Analysis(线性判别分析)…这些算法定义了特殊的评估量用于多维数据选择有趣的线性投影,这些手段是有效的,不过经常会错失数据结构中的非线性项。
Manifold Learing可以看作一种生成类似PCA的线性框架,不同的是可以对数据中的非线性结构敏感。虽然存在监督变体,但是典型的流式学习问题是非监督的:它从数据本身学习高维结构,不需要使用既定的分类。
例子:
- 请参阅手写数字上的流形学习:局部线性嵌入,Isomap …以获取手写数字降维的示例。
- 有关玩具“S曲线”数据集上降维的示例,请参阅流形学习方法的比较。
类:
class | 解释 | 解释 |
---|---|---|
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. | T-SNE |
函数:
function | 解释 |
---|---|
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. |
class sklearn.manifold.LocallyLinearEmbedding(n_neighbors=5, n_components=2, reg=0.001, eigen_solver=’auto’, tol=1e-06, max_iter=100, method=’standard’, hessian_tol=0.0001, modified_tol=1e-12, neighbors_algorithm=’auto’, random_state=None, n_jobs=None)
局部线性嵌入(LLE)通过保留局部邻域内的距离来寻求数据的低维投影。 它可以被认为是一系列的局部主成分分析,与全局相比,找到最优的局部非线性嵌入。
面向对象:sklearn.manifold.LocallyLinearEmbedding
类的实例化
面向函数:sklearn.manifold.locally_linear_embedding()
LLE原理: manifold.LocallyLinearEmbedding(LLE)流形学习之局部线性嵌入算法详解
一般来说,需要调参的参数只有样本近邻的个数。
参数详解:
属性详解:
embedding_vectors_
:给出了原始数据在低维空间的嵌入矩阵。reconstruction_error_
:给出了重构误差。方法详解:
fit(X[, y])
:训练模型。transform(X)
:执行降维,返回降维后的样本集。fit_transform(X[, y])
:训练模型并执行降维,返回降维后的样本集。