k-среднее кластеризация - инерция только увеличивается

Я пытаюсь использовать кластеризацию KMeans из faiss на наборе данных позы суставов тела человека. У меня 16 частей тела, то есть размер 32. Суставы масштабируются в диапазоне от 0 до 1. Мой набор данных состоит из ~ 900000 экземпляров. Как упомянул faiss (faiss_FAQ):

Как показывает опыт, нет последовательного улучшения квантователя k-средних после 20 итераций и 1000 * k обучающих точек.

Применяя это к своей задаче, я случайным образом выбираю 50000 экземпляров для обучения. Поскольку я хочу проверить количество кластеров k от 1 до 30.

Теперь к моей «проблеме»:

Инерция увеличивается непосредственно по мере увеличения количества кластеров (n_cluster по оси x):

Я пробовал варьировать количество итераций, количество повторов, подробный и сферический, но результаты остаются прежними или ухудшаются. Не думаю, что это проблема моей реализации; Я протестировал его на небольшом примере с 2D-данными и очень четкими кластерами, и он сработал.

Дело в том, что данные плохо сгруппированы или есть еще одна проблема / ошибка, которую я пропустил? Может быть, масштабирование значений от 0 до 1? Стоит ли попробовать другой подход?

1 ответ

Решение

Я нашел свою ошибку. Пришлось увеличить параметр max_points_per_centroid. Поскольку у меня так много точек данных, он взял подгруппу для соответствия. Для большего количества кластеров эта подгруппа больше. См. FAQ по faiss:

max_points_per_centroid * k: слишком много точек, что делает k-средства излишне медленными. Затем производится выборка обучающего набора.

Более крупная партия, конечно, имеет большую инерцию, так как всего точек больше.

Другие вопросы по тегам