Не путайте с KNN.

k-means - это алгоритм машинного обучения кластеризации.

k-Means - это неконтролируемый алгоритм.

K-среднее разбивает (разделяет) данные на группы на основе сходства.

Он разделяет данные на K неперекрывающихся подмножеств или кластеров без какой-либо внутренней структуры кластера или меток, что означает, что это неконтролируемый алгоритм. Объекты внутри кластера похожи друг на друга в одном кластере. И отличается от объектов, присутствующих в других кластерах.

При использовании k-средних мы сталкиваемся с вопросом ~

Как найти сходство между объектами (точками данных)?

Цель k-средних состоит в том, что похожие объекты объединяются в кластеры, а несходные - в разные кластеры.

Для этого мы можем использовать метрики несходства вместо подобия. Другими словами, условно расстояние выборок друг от друга используется для организации кластеров, поэтому мы можем сказать, что k-means пытается минимизировать внутри кластерные расстояния и максимизировать меж кластер. расстояния.

Межкластерное расстояние - это различие сходства между объектами, присутствующими в одном кластере.

Внутрикластерное расстояние - разница в сходстве между двумя разными кластерами.

Теперь, как вычислить различия между двумя объектами.

Евклидово расстояние помогает нам найти различия. Существуют и другие методы, такие как косинусное сходство, среднее расстояние и т. Д. .

Но для этой цели широко используется евклидова мера расстояния.

Рассмотрим пример ниже: -

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

Пусть возраст человека 1 - 54 года, а возраст человека 2 - 50, мы можем найти разницу между ними следующим образом:

k-means использует диаграмму рассеяния для распределения объектов.

алгоритм работы k-средних

  1. Инициализируйте количество кластеров. (По сути, определение количества кластеров - сложная проблема в k-средних).
  2. Расчет расстояния - на этом этапе мы вычисляем расстояние между каждой точкой данных и центром тяжести кластера. И сохраните это расстояние в матрице.
  3. Назначьте каждую точку ближайшему кластеру.
  4. Оцените модель, используя SSE-сумму квадратов ошибок.
  5. Вычислите новый центроид кластеров, используя среднее значение точек данных, присутствующих в этом кластере.
  6. теперь повторяйте шаги от 2 до 5, пока центроид кластера не перестанет перемещаться.

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

Чтобы решить эту проблему, рекомендуется запустить весь процесс несколько раз с разными условиями. Это означает, что с рандомизированными начальными центроидами это может дать лучший результат. Поскольку алгоритм обычно очень быстр, не составит труда запустить его несколько раз.