#python-3.x #machine-learning #data-science #cluster-analysis #k-means
#python-3.x #машинное обучение #наука о данных #кластерный анализ #k-означает
Вопрос:
Я выполняю кластеризацию (kmeans) для большого набора данных. Теперь хотелось добавить новые данные в существующий кластер.
Вот моя идея:
- Вычислите евклидово расстояние новой точки данных от всех центроидов и найдите минимальное из этих расстояний.
- Проверьте, не меньше ли минимальное расстояние порогового значения. Если true, мы назначаем новую точку данных соответствующему кластеру. Затем обновите центр кластера этого кластера.
- Если 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 не является идеальным выбором, я много играл, но не смог выбрать идеальный порог.