ML Vault
All notes

k-means

tags

K-means — это алгоритм кластеризации, который делит данные на k групп (кластеров) на основе их схожести. Он стремится минимизировать разброс точек внутри каждого кластера.
Алгоритм:

  1. Выбираем количество кластеров (k)
  2. Выбираем случайные (или нет? — более умный выбор в k-means++) точки-центроиды для каждого кластера
  3. Для каждого объекта считаем расстояние до каждой центроиды, относим объект к тому кластеру, к центроиде которого он ближе
  4. Калибруем центроиды — ищем новые координаты центроиды (переносим центроиду в центр кластера) (как перенести центроиду в центр кластера?)
  5. Далее повторяем шаги 3-4  пока центроиды не перестанут меняться (или пока не достигнут максимального числа итераций

Метрика:
wcss — сумма квадратов внутри кластеров:
За счет квадратов большие ошибки штрафуют сильнее, чем маленькие ошибки.
Как выбрать количество кластеров? — правило локтя
Начинаем делить данные на кластеры, каждый раз выбирая разное количество кластеров (от 1 и далее), считаем для каждой кластеризации wcss, поначалу она будет сильно падать, но в какой-то момент она начнет падать с меньше скоростью, это и есть момент для остановки.