0

我正在尝试在人体关节的人体姿势数据集上使用来自faiss的 KMeans 聚类。我有 16 个身体部位,因此尺寸为 32。关节的缩放范围在 0 到 1 之间。我的数据集包含约 900.000 个实例。正如 faiss ( faiss_FAQ ) 所述:

根据经验,k-means 量化器在 20 次迭代和 1000 * k 个训练点之后没有一致的改进

将此应用于我的问题,我随机选择 50000 个实例进行训练。因为我想检查1 到 30 之间的集群k的数量。

现在到我的“问题”:

随着集群数量的增加,惯性直接增加(x轴上的n_cluster): 惯性

我尝试改变迭代次数、重做次数、详细和球形,但结果保持不变或变得更糟。我不认为这是我实施的问题;我在一个带有 2D 数据和非常清晰的集群的小示例上对其进行了测试,它确实有效。

是数据只是聚集不良还是我错过了另一个问题/错误?也许是 0 和 1 之间的值的缩放?我应该尝试另一种方法吗?

4

1 回答 1

0

我发现了我的错误。我不得不增加参数 max_points_per_centroid。由于我有这么多的数据点,它为拟合采样了一个子批次。对于更大数量的集群,这个子批次更大。请参阅 faiss 的常见问题解答:

max_points_per_centroid * k:点太多,使 k-means 不必要地变慢。然后对训练集进行采样

更大的子批次当然具有更大的惯性,因为总共有更多的点。

于 2021-05-20T16:46:55.283 回答