Кластеризация K-средних, один из самых простых и популярных неконтролируемых алгоритмов машинного обучения. — это итеративный алгоритм, который пытается разбить набор данных на заранее определенные отдельные непересекающиеся подгруппы (называемые кластерами), где «K» представляет количество кластеров, и каждый точка данных принадлежит только к одной группе.

Что такое кластеры?

Кластер относится к набору точек данных, объединенных вместе из-за определенного сходства.

Что такое неконтролируемое обучение (UL)?

Неконтролируемое обучение использует алгоритмы машинного обучения для анализа и кластеризации немаркированных наборов данных. Эти алгоритмы обнаруживают скрытые шаблоны или группы данных без необходимости вмешательства человека и используют их для маркировки/объединения данных по уникальным целям.

Как работает алгоритм К-средних?

Шаг 1. Определите количество кластеров «K».

Шаг 2. Случайным образом выбираются K точек/центроидов.

Шаг 3: назначьте каждой точке данных ближайший к ней центр тяжести, сформировав локальные кластеры.

Шаг 4. Вычислите центроиды новых кластеров, а затем снова разделите точки данных, ближайшие к их вновь найденным центроидам.

Шаг 5. Повторяйте 4-й шаг, пока все точки данных не установятся на их ближайший центроид, и дальнейшее разделение будет невозможно.

В итоге у вас останется K различных непересекающихся кластеров.

Реализация K-средних

Давайте посмотрим, как работает алгоритм машинного обучения K-средних с использованием языка программирования Python.

Шаг 1. Импортируйте библиотеки

Шаг 2. Импорт набора данных

мы будем использовать Клиенты торгового центра | Kaggle набор данных

(для этого примера мы просто будем использовать «Годовой доход (тыс. долл.)» и «Оценка расходов (1–100)»)

Шаг 3. Визуализация набора данных

Как мы видим, данные разделены примерно на 5 кластеров.

Но во многих случаях данные могут быть такими

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

Что такое локтевой метод?

Этот метод использует концепцию значения WCSS. WCSS расшифровывается как Сумма квадратов внутри кластера, которая определяет общее количество вариаций внутри кластера. Формула для расчета значения WCSS (для 3 кластеров) приведена ниже:

WCSS= ∑Pi на расстоянии Cluster1(Pi C1)2 +∑Pi на расстоянии Cluster2(Pi C2)2

+ ∑Pi в расстоянии CLuster3(Pi C3)2

Чтобы найти оптимальное значение кластеров, метод локтя следует следующим шагам:

  • Он выполняет кластеризацию K-средних для заданного набора данных для разных значений K (в диапазоне от 1 до 10).
  • Для каждого значения K вычисляется значение WCSS.
  • Строит кривую между рассчитанными значениями WCSS и количеством кластеров K.
  • Острая точка изгиба или точка графика выглядит как плечо, тогда эта точка считается лучшим значением К.

Шаг 4. Использование метода локтя для определения значения K

мы можем видеть внезапное изменение наклона прямо на отметке 5 кластера, создающее локтевую структуру

Как мы и предсказывали, идеальное значение K для этого набора данных равно 5.

Шаг 5. Использование Scikit-learn

Создайте модель Kmean с 5 кластерами, используя следующую команду:

затем вписываем наш набор данных в модель,

Как мы видим, модель присвоила каждой точке данных соответствующие кластеры.
Давайте добавим это в наш набор данных для лучшей визуализации.

Шаг 6. Визуализация

Давайте визуализируем, построив график, каждый кластер которого окрашен в разные цвета,

Как мы видим, данные были разделены на 5 отдельных кластеров.

Шаг 7. Поиск центроида

Мы можем получить доступ к окончательным центроидам с помощью следующей команды:

Давайте добавим это к нашей визуализации, отметив каждый центр тяжести на графике разным цветом.

Подведение итогов

Кластеризация K-средних — это широко используемый метод кластерного анализа данных. который широко используется для многих промышленных вариантов использования из-за его универсального характера и способности быстро добавлять новые данные в существующие кластеры.

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