K-Means — один из наиболее важных алгоритмов кластеризации, который обычно используется учеными-данными и специалистами по машинному обучению в задачах обучения без учителя. Одним из параметров этого алгоритма, с которым нужно обращаться осторожно, является количество кластеров K. Наиболее популярным методом нахождения оптимального значения K является локтевая диаграмма, однако это не самый эффективный метод для этого. В этой статье мы рассмотрим более эффективные методы поиска оптимального значения K для алгоритма кластеризации K-средних.

Содержание:

  1. Введение в кластеризацию K-средних
  2. Использование диаграммы локтя для определения значения K
  3. Оценка силуэта для определения K-значения
  4. Ссылки

Исходные коды и сгенерированные графики, используемые в этой статье, можно найти в этом репозитории GitHub:



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

  • Бесплатные интерактивные дорожные карты для самостоятельного изучения науки о данных и машинного обучения. Начните здесь: https://aigents.co/learn/roadmaps/intro
  • Поисковая система для учебных ресурсов Data Science (БЕСПЛАТНО). Добавляйте в закладки свои любимые ресурсы, отмечайте статьи как завершенные и добавляйте учебные заметки. https://aigents.co/learn
  • Хотите изучить науку о данных с нуля при поддержке наставника и учебного сообщества? Присоединяйтесь к этому учебному кружку бесплатно: https://community.aigents.co/spaces/9010170/

Если вы хотите начать карьеру в области науки о данных и искусственного интеллекта, но не знаете, как это сделать. Я предлагаю сеансы наставничества по науке о данных и долгосрочное наставничество по карьере:

Присоединяйтесь к программе Среднее членство всего за 5 $, чтобы продолжить обучение без ограничений. Я получу небольшую часть вашего членского взноса, если вы перейдете по следующей ссылке, без каких-либо дополнительных затрат с вашей стороны.



1. Введение в кластеризацию K-средних

K-Means — это алгоритм кластеризации, который был предложен Стюартом Ллойдом в Bell Labs в 1957 году в качестве метода импульсно-кодовой модуляции, но он был опубликован за пределами компании только в 1982 году в статье под названием «Квантование методом наименьших квадратов в PCM». . К тому времени, в 1965 г., Эдвард У. Форги опубликовал фактически тот же самый алгоритм, поэтому K-Means иногда называют Ллойдом-Форги. Рассмотрим немаркированный набор данных, представленный на рис. 1, построенный с использованием приведенного ниже кода:

Мы можем четко наблюдать 5 кластеров экземпляров. Алгоритм K-Means — это простой алгоритм, способный очень быстро и эффективно кластеризовать такой набор данных, часто всего за несколько итераций.

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

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

Это показывает кластер, которому была назначена каждая точка данных.

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

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

Как видите, выбор более низких значений для K (в данном случае 3) приведет к присвоению данных неправильным кластерам, как показано на рисунке 3 (слева). В то время как выбор более высокого значения K приведет к разделению одного и того же кластера на более мелкие кластеры, как видно на рисунке 3 (справа). Поэтому важно найти способ оценки наилучшего значения K, который позволит избежать как недооценки, так и переоценки его значения, поскольку в обоих случаях это приведет к плохим моделям кластеризации. Мы обсудим два метода нахождения наилучшего значения K: диаграмма ELbow и коэффициент силуэта.

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

Диаграмма ниже основана на вычислении interia для каждого значения k и построении графика. interia – это среднеквадратичное расстояние между каждым экземпляром и ближайшим к нему центроидом. Таким образом, чем больше точек данных находятся рядом с центроидами, тем меньше будет интерия. Однако у зависимости только от этого измерения есть один недостаток: по мере увеличения числа кластеров интерия будет уменьшаться, и здесь возникает важность диаграммы локтя, поскольку мы можем выбрать наиболее подходящее значение K.

Давайте сначала нарисуем диаграмму локтя, используя приведенный ниже код:

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

Эта кривая имеет примерно форму руки, и есть «локоть» при k = 4, поэтому, если бы мы не знали лучше, это был бы хороший выбор для значения K: любое более низкое значение было бы драматичным, в то время как любое более высокое значение не сильно помогло бы, и мы могли бы просто разделить совершенно хорошие кластеры пополам без какой-либо важной причины.

Мы можем проверить границы решения кластеризации для k = 4. Как мы видим на рисунке 5, было обнаружено два кластера, так как при выборе k = 4 было обнаружено только одно скопление.

Однако иногда это может сбивать с толку. Что мы должны принять за оптимальное количество кластеров: 4, 5 или 6? Кроме того, это не так точно, как в этом примере, мы знаем, что лучшее значение для K равно 5, однако наилучшее значение, оцененное на этой диаграмме локтя, равно 4. Более точный подход (но и более затратный с точки зрения вычислений) заключается в использовании оценки силуэта.

3. Оценка силуэта для определения K-значения

Показатель силуэта – это средний коэффициент силуэта по всем экземплярам. Коэффициент силуэта экземпляра равен (b — a) / max(a, b), где a — среднее расстояние до других экземпляров в том же кластере (это среднее расстояние внутри кластера). , а b — среднее расстояние до ближайшего кластера, т. е. среднее расстояние до экземпляров следующего ближайшего кластера (определяемого как тот, который минимизирует b, исключая собственный кластер экземпляра).

Коэффициент силуэта может варьироваться от -1 до +1: коэффициент, близкий к +1, означает, что экземпляр находится внутри своего кластера и далеко от других кластеров, а коэффициент, близкий к 0, означает, что экземпляр находится близко к границе кластера. и, наконец, коэффициент, близкий к -1, означает, что экземпляр мог быть отнесен не к тому кластеру.

Чтобы вычислить оценку силуэта, вы можете использовать функцию Scikit-Learn Silhouette_score(), задав ей все экземпляры в наборе данных и присвоенные им метки:

Как видите, эта визуализация намного богаче, чем локтевая диаграмма. Хотя это подтверждает, что k=4 — очень хороший выбор, оно также подчеркивает тот факт, что k=5 тоже неплохо и намного лучше, чем k=6 или 7. Этого не видно при сравнении значений инерции.

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

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

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

Мы видим, что при k=3 и при k=6 мы получаем плохие кластеры. Но когда k=4 или k=5, кластеры выглядят довольно хорошо, так как большинство экземпляров выходит за пунктирную линию вправо и приближается к 1,0.

При k=4 кластер с индексом 1 (третий сверху) довольно большой, а при k=5 все кластеры имеют одинаковые размеры, так что даже несмотря на то, что общий балл силуэта при k=4 немного выше, чем при k=4 k=5, кажется хорошей идеей использовать k=5 для получения кластеров одинакового размера.

4. Ссылки

  1. Практическое машинное обучение с помощью Scikit-Learn, Keras и Tensorflow: концепции, инструменты и методы построения интеллектуальных систем

Понравилась статья? Станьте участником Medium, чтобы продолжать обучение без ограничений. Я получу небольшую часть вашего членского взноса, если вы воспользуетесь следующей ссылкой без каких-либо дополнительных затрат для вас.



Спасибо, что прочитали! Если вам понравилась статья, не забудьте поставить аплодисменты (до 50!) и связаться со мной в LinkedIn и подписаться на Medium, чтобы быть в курсе моих новых статей.