在Scikit中设置局部线性嵌入(LLE)方法的参数 - 学习降维

时间:2017-02-16 13:53:27

标签: python scikit-learn dimensionality-reduction manifold

我在Scikit中使用局部线性嵌入(LLE)方法学习降维。我能找到的唯一示例属于Scikit-learn文档herehere,但我不确定如何选择方法的参数。特别是,数据点的维度或样本数量与邻居数量(n_neighbors)和组件数量(n_components)之间是否存在任何关系? Scikit-learn中的所有示例都使用n_components = 2,总是这样吗?最后,是否有其他参数对调整至关重要,或者我应该使用其余参数的默认设置?

2 个答案:

答案 0 :(得分:2)

  

数据点的维度或样本数量与邻居数量(n_neighbors)和组件数量(n_components)之间是否存在任何关系?

一般来说,没有关系。 n_neighbors通常取决于样本之间的距离。特别是,如果您知道样本的类别,则最好将n_neighbors设置为比每个类中的样本数略多一点。虽然n_components,即缩小的尺寸大小,是由原始尺寸的数据冗余决定的。根据具体的数据分布和您自己的需求,您可以选择适当的空间维度进行投影。

n_components=2是将原始高维空间映射到二维空间。实际上这是一个特例。

  

是否有任何其他参数对调整至关重要,或者我应该使用其余参数的默认设置?

以下是您应该注意的其他几个参数。

  • reg用于权重正则化,the original LLE paper中未使用。如果您不想使用它,只需将其设置为零即可。但是,reg的默认值为1e-3,这非常小。
  • eigen_solver。如果您的数据量很小,建议您使用dense来提高准确性。你可以对此做更多的研究。
  • max_iter。默认值max_iter仅为100,通常会导致结果不收敛。如果结果不稳定,请选择更大的整数。

答案 1 :(得分:0)

您可以使用GridSearch(Scikit-learn)为您选择最佳值。