k-means
tags
K-means — это алгоритм кластеризации, который делит данные на k групп (кластеров) на основе их схожести. Он стремится минимизировать разброс точек внутри каждого кластера.
Алгоритм:
- Выбираем количество кластеров (k)
- Выбираем случайные (или нет? — более умный выбор в k-means++) точки-центроиды для каждого кластера
- Для каждого объекта считаем расстояние до каждой центроиды, относим объект к тому кластеру, к центроиде которого он ближе
- Калибруем центроиды — ищем новые координаты центроиды (переносим центроиду в центр кластера) (как перенести центроиду в центр кластера?)
- Далее повторяем шаги 3-4 пока центроиды не перестанут меняться (или пока не достигнут максимального числа итераций
Метрика:
wcss — сумма квадратов внутри кластеров:
За счет квадратов большие ошибки штрафуют сильнее, чем маленькие ошибки.
Как выбрать количество кластеров? — правило локтя
Начинаем делить данные на кластеры, каждый раз выбирая разное количество кластеров (от 1 и далее), считаем для каждой кластеризации wcss, поначалу она будет сильно падать, но в какой-то момент она начнет падать с меньше скоростью, это и есть момент для остановки.