我在Scikit中使用局部线性嵌入(LLE)方法学习降维。我能找到的唯一示例属于Scikit-learn文档here和here,但我不确定如何选择方法的参数。特别是,数据点的维度或样本数量与邻居数量(n_neighbors
)和组件数量(n_components
)之间是否存在任何关系? Scikit-learn中的所有示例都使用n_components = 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)为您选择最佳值。