gpt4 book ai didi

python - MiniBatchKMeans 参数

转载 作者:太空狗 更新时间:2023-10-29 20:22:58 25 4
gpt4 key购买 nike

我正在尝试使用 Sklearn 的 Minibatch K-Means 对图像 block 进行聚类,以重现 this paper 的结果。以下是有关我的数据集的一些信息:

  • 400,000 行
  • 108 个维度
  • 1600 个集群。

我可以得到一些关于如何设置 Minibatch KMeans 参数的指导吗?目前,惯性开始收敛,但随后又突然上升,算法终止:

Minibatch iteration 48/1300:mean batch inertia: 22.392906, ewa inertia: 22.500929 
Minibatch iteration 49/1300:mean batch inertia: 22.552454, ewa inertia: 22.509173
Minibatch iteration 50/1300:mean batch inertia: 22.582834, ewa inertia: 22.520959
Minibatch iteration 51/1300:mean batch inertia: 22.448639, ewa inertia: 22.509388
Minibatch iteration 52/1300:mean batch inertia: 22.576970, ewa inertia: 22.520201
Minibatch iteration 53/1300:mean batch inertia: 22.489388, ewa inertia: 22.515271
Minibatch iteration 54/1300:mean batch inertia: 22.465019, ewa inertia: 22.507231
Minibatch iteration 55/1300:mean batch inertia: 22.434557, ewa inertia: 22.495603
[MiniBatchKMeans] Reassigning 766 cluster centers.
Minibatch iteration 56/1300:mean batch inertia: 22.513578, ewa inertia: 22.498479
[MiniBatchKMeans] Reassigning 767 cluster centers.
Minibatch iteration 57/1300:mean batch inertia: 26.445686, ewa inertia: 23.130030
Minibatch iteration 58/1300:mean batch inertia: 26.419483, ewa inertia: 23.656341
Minibatch iteration 59/1300:mean batch inertia: 26.599368, ewa inertia: 24.127225
Minibatch iteration 60/1300:mean batch inertia: 26.479168, ewa inertia: 24.503535
Minibatch iteration 61/1300:mean batch inertia: 26.249822, ewa inertia: 24.782940
Minibatch iteration 62/1300:mean batch inertia: 26.456175, ewa inertia: 25.050657
Minibatch iteration 63/1300:mean batch inertia: 26.320527, ewa inertia: 25.253836
Minibatch iteration 64/1300:mean batch inertia: 26.336147, ewa inertia: 25.427005

我生成的图像 block 看起来不像论文作者得到的那样。我可以就如何设置 MiniBatchKmeans 的参数以获得更好的结果提供一些指导吗?这是我当前的参数:

kmeans = MiniBatchKMeans(n_clusters=self.num_centroids, verbose=True, batch_size=self.num_centroids * 20,compute_labels=False,

最佳答案

您看到的行为由 reassignment_ratio 参数控制。 MiniBatchKMeans 试图避免创建过度不平衡的类。每当最小和最大集群的大小比率低于此值时,低于阈值的集群中心将随机重新初始化。这就是

[MiniBatchKMeans] Reassigning 766 cluster centers.

簇数越大,即使在良好的簇中,簇大小的预期分布也越大(因此最小/最大比率越小)。默认设置为 reassignment_ratio=0.01这对于 1600 个集群来说太大了。对于超过 1000 的集群大小,我通常只使用 reassignment_ratio=0。在这种情况下,我还没有看到重新分配的改进。

如果您想尝试重新分配,请查看类似 reassignment_ratio=10**-4 的设置是否比 0 更好。请留意日志消息。如果一次重新分配超过 1 或 2 个集群,您可能应该进一步降低 reassignment_ratio。您可能还想增加 max_no_improvement 以确保算法有足够的时间从重新分配引入的随机化中恢复,因为这至少在最初可能会使事情变得更糟,即使它让您摆脱困境长期的局部最小值。增加批量大小也可能有助于避免某些集群因采样变化而变小而触发重新分配。

关于python - MiniBatchKMeans 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21447351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com