使用sklearn Kmeans时如何避免Kmean局部最优
Posted
技术标签:
【中文标题】使用sklearn Kmeans时如何避免Kmean局部最优【英文标题】:How to avoid Kmean local optima when using sklearn Kmeans 【发布时间】:2019-05-25 03:38:11 【问题描述】:我想在生产部署中使用 scikit kmean,并希望使用 kmean.init = k-means++ 的默认设置。我的问题是,在初始化集群质心时,kmeans 陷入局部最优的可能性有多大?
Notes 说“‘k-means++’:以智能的方式为 k-means 聚类选择初始聚类中心以加速收敛。有关详细信息,请参阅 k_init 中的注释部分”。
是否有关于获得局部最优的概率的数据? 如果是这样,我应该迭代以获得最小成本函数吗?
【问题讨论】:
【参考方案1】:陷入局部最优的概率主要取决于数据的性质。如果将其明确分组,则初始集群可能不会对最终集群结果产生太大影响。 May be of use for you.
尽管有上述几点,对于高维数据集,最好用不同的初始集群尝试 10 次或更多次迭代,并选择性能最佳的一个(性能指标之一可以是silhouette-coefficient)
【讨论】:
我确实尝试迭代 100 次以获得最小失真成本函数并选择最佳 kmean 簇质心,但似乎具有 init=k-mean++ 的 kmeans 得到了很好的优化,因为它返回了相同的值成本函数。 正如我之前提到的,只有当数据集倾斜时才会出现变化。如果您想了解更多关于 k-means++ 的信息,请查看论文 ilpubs.stanford.edu:8090/778/1/2006-13.pdf 的第 2.2 节以上是关于使用sklearn Kmeans时如何避免Kmean局部最优的主要内容,如果未能解决你的问题,请参考以下文章
Sklearn Pipeline:如何构建kmeans,聚类文本?