Простой, быстрый и популярный метод кластеризации

Что такое кластеризация?

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

Как видите, набор данных можно четко разделить на группы (конечно, это упрощенный пример, наборы данных будут казаться намного более случайными и сложными на самом деле). Мы можем разделить данные на группы в зависимости от близости. Если вы привыкли иметь дело с контролируемым обучением, воспользуйтесь этим мыслительным процессом:
Так же, как мы используем алгоритмы DecisionTree для разделения набора данных на отдельные классы, и мы можем это сделать, исключительно на основе обучения на помеченных данных. Кластеризация предоставляет ту же услугу, но вместо того, чтобы сортировать данные по разным классам на основе помеченных данных, мы можем делать это полностью на основе близости данных на заданном пороговом расстоянии.

Что такое кластеризация KMeans?

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

Как работает кластеризация KMeans?

Кластеризация Kmeans выполняется следующим образом:

  1. Он назначает центроиды и случайным образом размещает их в вашем наборе данных, он почти никогда не добьется идеальных центроидов с первой попытки, как на изображении выше. Это будут центральные точки каждого класса, который есть в вашем наборе данных, и вы определите количество центроидов, k, в своем наборе данных, и настроите его на алгоритм Kmeans с помощью настройки гиперпараметров.
  2. Теперь, поскольку KMeans основан на близости, алгоритм разделит данные на группы: какая бы точка данных ни находилась ближе всего к тому центроиду, которому будет назначена группа этого центроида, визуально это можно представить как получение цвета группы центроидов.
  3. Теперь случайное размещение центроидов и присвоение классов точкам данных в пределах их соответствующей близости не кажется хорошей идеей, в первую очередь потому, что центроиды на самом деле назначались случайным образом, это может в конечном итоге найти что-то на изображении ниже, и очень вероятно, что это будет. Обратите внимание, что на самом деле существуют отдельные группы, однако они были классифицированы / сгруппированы довольно ужасно. Но алгоритм KMeans только начал работать, ему нужно продолжить обучение.

4. Представьте, что линия соединяет каждую из точек данных с их ближайшим центроидом. Теперь представьте, что эта линия представляет собой веревку до центра тяжести. Это справедливо для каждой отдельной точки данных. KMeans исправляет случайное назначение центроидов, позволяя набору данных исправлять его. В зависимости от того, сколько точек данных «подтягивает» центроид, тем ближе центроид окажется на следующей итерации. Таким образом, он может начинаться несколько ближе к кластеру и немного дальше к другому кластеру, кластер с большим количеством точек данных будет иметь центроид ближе к нему на следующей итерации. Если кластер находится слишком далеко, вероятно, он ближе к другому кластеру и занимается этим.

5. Теперь KMeans будет повторять шаг 4 столько раз, сколько мы захотим, и с каждой итерацией он будет приближаться к правильному назначению кластера. Если вы укажете повторение этого процесса 300 раз, вполне вероятно, что центроиды найдут свое правильное центральное положение задолго до этого, поэтому 300 итераций не потребуются, потому что он смог найти его, например, за 120 итераций.

6. Основываясь на первоначальном предположении или случайном размещении центроидов в начале KMeans, мы можем поставить под угрозу наш набор данных. В некоторых наборах данных, основанных на случайном размещении, фактические кластеры могут быть неправильно назначены из-за плохого размещения кластеров. Это можно увидеть в приведенном выше примере плохой кластеризации. Вот почему мы указываем, сколько раз KMeans должен повторяться. Он будет повторять шаги 1–5 столько раз, сколько мы укажем, и в конце будет просто собирать среднее значение, чтобы убедиться, что даже если в одной из его повторяющихся моделей случайная инициализация испортила кластеризацию, остальные 10 модели (или любое другое указанное число) в любом случае предпочтут ошибочную модель, и в любом случае она с большей вероятностью получит приличную кластеризацию, чем ошибочную. так что 10 моделей или 10 повторов - это хорошее предложение, однако, увеличение этого числа не повредит, если вы не будете заботиться о времени и вычислительной мощности.

Гиперпараметры

  • n_clusters: этот параметр - количество кластеров / центроидов, которые мы хотим для нашей модели. Например, если бы у нас был классификатор изображений без меток «кошка-собака», мы бы указали k как n_clusters = 2.
  • n_init: Здесь мы указываем, сколько идентичных моделей KMeans мы хотим создать, чтобы они голосовали, когда все модели определились с окончательным расположением своих центроидов и сформировали свои кластеры. (Важно отметить, что это не новые модели, это буквально одна и та же модель, единственная разница будет заключаться в том, где будут размещены начальные центроиды в каждой модели, что само по себе поможет определить кластеризацию каждой модели, требуя все они проголосуют в итоге по кластерам)
  • max_iter: максимальное количество итераций - это именно то, что вы думаете. Мы просто указываем максимальное количество итераций, которые каждая модель будет делать, чтобы переместить их центроиды в центр их кластеров. Это «Макс», потому что KMeans, скорее всего, сможет выполнить задачу меньше, чем max_iter, поэтому нам решать, какое максимальное количество итераций мы допустим.

Преимущества KMeans

  • Относительно просто реализовать
  • Масштабируется до больших наборов данных
  • Гарантирует конвергенцию
  • Легко адаптируется к дополнительным новым точкам данных / выборкам
  • Обобщается на кластеры разных форм и размеров, например эллиптические кластеры.
  • KMeans довольно эффективен и быстр

Недостатки KMeans

  • Выбор «k» вручную; в зависимости от проблемы это может быть сложно.
  • Зависит от начального положения центра тяжести
  • Кластеризация данных разного размера и плотности. У Kmeans есть проблемы с кластерами разного размера и разной плотности.
  • Кластеризация выбросов; Центроиды могут перетаскивать выбросы или могут иметь свои собственные кластеры. Выбросы никогда не будут игнорироваться.
  • Масштабирование по количеству измерений; не может обрабатывать слишком большую размерность, и в этом случае потребуется уменьшение размерности, т. е. PCA. Это связано с тем, что слишком высокая размерность заставит KMeans обрабатывать дольше, а также некоторые данные будут чрезмерно соответствовать.

Когда использовать KMeans

  • KMeans можно использовать с табличными данными, изображениями и всем, что угодно. Он просто группирует данные
  • KMeans используется для задач классификации.
  • KMeans - это быстрый и эффективный алгоритм кластеризации.
  • KMeans уязвим только для переобучения, в зависимости от значения «k», которое вы выбираете для алгоритма, и забывая об уменьшении размерности.
  • Алгоритм полезен, когда вы имеете представление о том, сколько кластеров на самом деле существует в вашем пространстве.
  • K-средства и другие алгоритмы кластеризации эффективны, когда у вас есть многомерные данные (много функций / много измерений)
  • KMeans всегда выполняется с уменьшением размерности, они идеально сочетаются друг с другом