【问题标题】:Setting the parameters of locally linear embedding (LLE) method in Scikit-learn for dimensionality-reduction在 Scikit-learn 中设置局部线性嵌入 (LLE) 方法的参数以进行降维
【发布时间】:2017-07-08 18:03:27
【问题描述】:

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

【问题讨论】:

  • 一个关键问题是:您使用 LLE 做什么?当n_components=2 用于在二维中绘制高维数据时,您会看到它。 n_neighbors 决定了事物的平滑程度:当您考虑许多邻居时,您将平滑事物之间的边界——也许会过度平滑。您的用例是关键:您的目标是什么。不幸的是,Scikit 文档很差。

标签: python scikit-learn dimensionality-reduction manifold


【解决方案1】:

数据点的维度或样本数与邻居数(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_itermax_iter的默认值只有100,往往会导致结果不收敛。如果结果不稳定,请选择更大的整数。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的回答。实际上,我对这些参数之间存在的任何关系感兴趣,而不是通过应用 GridSeach 来寻找最佳选择,GridSeach 可以应用于其他方法来找到为特定问题提供最佳结果的值。
    猜你喜欢
    • 2021-11-06
    • 2021-04-14
    • 2016-12-18
    • 2018-05-26
    • 2016-07-24
    • 1970-01-01
    • 2016-08-31
    • 2016-04-22
    • 2018-07-31
    相关资源
    最近更新 更多