Добавление нового документа в существующий кластер

#python-3.x #machine-learning #data-science #cluster-analysis #k-means

#python-3.x #машинное обучение #наука о данных #кластерный анализ #k-означает

Вопрос:

Я выполняю кластеризацию (kmeans) для большого набора данных. Теперь хотелось добавить новые данные в существующий кластер.

Вот моя идея:

  1. Вычислите евклидово расстояние новой точки данных от всех центроидов и найдите минимальное из этих расстояний.
  2. Проверьте, не меньше ли минимальное расстояние порогового значения. Если true, мы назначаем новую точку данных соответствующему кластеру. Затем обновите центр кластера этого кластера.
  3. Если False, создайте новый кластер и назначьте новую точку данных в качестве его центра. Кроме того, точка данных становится частью кластера.

На шаге 2, каким будет пороговое значение, которое я должен использовать. Пожалуйста, поделитесь своей идеей.

Я думаю, что моим пороговым значением будет вычисление внутрикластерного расстояния от каждого кластера и максимальное расстояние от них.

Я следую статье здесь

Ответ №1:

Разве вы не можете вместо порогового значения использовать внутреннюю проверку, такую как оценка силуэта, чтобы узнать, нужно ли вам добавить количество кластеров на единицу или просто поместить новую точку данных в один из существующих кластеров?

И, что касается вашего предложения о пороге, допустим, у вас есть два кластера C1 и C2, удаленных друг от друга (допустим, расстояние между их центрами равно 10), а расстояние между их центрами и их самым дальним элементом равно 1 и 1,1. Теперь у вас есть новая точка, расстояние от которой до(обновленные или оригинальные) центры C1 равны 1.2. Каков ваш вызов? Поскольку он немного больше 1, но в то же время больше 1.1, вы просто помещаете его в новый кластер (?!). Как вы можете видеть, это не разумный подход.

Если вы настаиваете на использовании порога, вот идея: вы можете найти расстояние от новой точки до ближайшего центра (назовем его d1) и следующего ближайшего центра (назовем его d2). Если, например, d1 / d2 меньше 0,5 (пороговое значение), вы можете сказать, что новая точка принадлежит ближайшей группе, если нет, это означает, что вы не можете определить, к какой группе она принадлежит. Итак, затем вы создаете новый кластер

Комментарии:

1. Спасибо, @Nima S, вы правы в отношении моего предлагаемого подхода. Я не могу использовать оценку силуэта, потому что мой набор данных очень большой, а вычисление оценки силуэта обходится очень дорого. Я попробовал предложенные вами подходы (d / d2). Здесь также порог 0.5 не является идеальным выбором, я много играл, но не смог выбрать идеальный порог.