【问题标题】:k-mean clustering - inertia only gets largerk-mean 聚类 - 惯性只会变大
【发布时间】:2021-08-05 14:41:33
【问题描述】:

我正在尝试在人体关节的人体姿势数据集上使用来自 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 之间的值的缩放?我应该尝试其他方法吗?

【问题讨论】:

  • 在 k-means 聚类之前,您是否尝试过运行 PCA 等降维算法?
  • 不,也许这是另一个想法,但我解决了这个问题。请参阅下面的答案。

标签: k-means feature-clustering faiss


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-23
    • 2017-06-30
    • 2017-09-12
    • 2017-07-17
    • 2018-08-12
    • 2015-07-29
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多