Не путайте с KNN.
k-means - это алгоритм машинного обучения кластеризации.
k-Means - это неконтролируемый алгоритм.
K-среднее разбивает (разделяет) данные на группы на основе сходства.
Он разделяет данные на K неперекрывающихся подмножеств или кластеров без какой-либо внутренней структуры кластера или меток, что означает, что это неконтролируемый алгоритм. Объекты внутри кластера похожи друг на друга в одном кластере. И отличается от объектов, присутствующих в других кластерах.
При использовании k-средних мы сталкиваемся с вопросом ~
Как найти сходство между объектами (точками данных)?
Цель k-средних состоит в том, что похожие объекты объединяются в кластеры, а несходные - в разные кластеры.
Для этого мы можем использовать метрики несходства вместо подобия. Другими словами, условно расстояние выборок друг от друга используется для организации кластеров, поэтому мы можем сказать, что k-means пытается минимизировать внутри кластерные расстояния и максимизировать меж кластер. расстояния.
Межкластерное расстояние - это различие сходства между объектами, присутствующими в одном кластере.
Внутрикластерное расстояние - разница в сходстве между двумя разными кластерами.
Теперь, как вычислить различия между двумя объектами.
Евклидово расстояние помогает нам найти различия. Существуют и другие методы, такие как косинусное сходство, среднее расстояние и т. Д. .
Но для этой цели широко используется евклидова мера расстояния.
Рассмотрим пример ниже: -
Есть два человека, и мы хотим найти различия между ними, используя демографическую информацию.
Пусть возраст человека 1 - 54 года, а возраст человека 2 - 50, мы можем найти разницу между ними следующим образом:
k-means использует диаграмму рассеяния для распределения объектов.
алгоритм работы k-средних
- Инициализируйте количество кластеров. (По сути, определение количества кластеров - сложная проблема в k-средних).
- Расчет расстояния - на этом этапе мы вычисляем расстояние между каждой точкой данных и центром тяжести кластера. И сохраните это расстояние в матрице.
- Назначьте каждую точку ближайшему кластеру.
- Оцените модель, используя SSE-сумму квадратов ошибок.
- Вычислите новый центроид кластеров, используя среднее значение точек данных, присутствующих в этом кластере.
- теперь повторяйте шаги от 2 до 5, пока центроид кластера не перестанет перемещаться.
Следовательно, это эвристический алгоритм, нет гарантии, что он сойдется к глобальному оптимуму, и результат может зависеть от начальных кластеров, это означает, что этот алгоритм гарантированно сходится к результату, но результат может быть локальным оптимумом.
Чтобы решить эту проблему, рекомендуется запустить весь процесс несколько раз с разными условиями. Это означает, что с рандомизированными начальными центроидами это может дать лучший результат. Поскольку алгоритм обычно очень быстр, не составит труда запустить его несколько раз.