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

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

ЧТО ТАКОЕ КЛАСТЕРИЗАЦИЯ?

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

  • Группа A - Студенты в очках
  • Группа B - Студенты, задающие много вопросов (сверхактивные).
  • Группа C - Студенты, которые всегда молчат и избегают зрительного контакта (интроверты или люди с особыми заболеваниями)
  • Группа D - Студенты, которые легко отвлекаются, а также отвлекают других.
  • Группа E - Студент, который любит шутить в классе и играет со всеми (экстраверт)
  • Группа F - Студенты, которые любят определенный набор предметов (наука или искусство) и преуспевают в нем.
  • И так далее

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

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

Как алгоритм приходит к этим кластерам? как он назначает группы точкам данных, используя аналогичные функции?

Давайте перейдем к изучению других концепций.

ФАКТ: чаще всего люди не понимают, в чем разница между классификацией и кластеризацией. Я тоже в определенное время был сбит с толку. В конце концов, оба алгоритма помещают точки данных в классы, верно? Что ж, не так давно мой дорогой друг разъяснил мне это. Оба алгоритма разные, и в них тоже есть сходство. Оба метода приводят к идентификации паттернов. Однако методы идентификации этих паттернов различаются: один классифицируется с поверхности, а другой выходит за пределы. Примером может служить классификация фруктов / овощей по цвету и форме. В этом смысле алгоритм классификации классифицирует персик и яблоко как принадлежащие к одному классу, тогда как алгоритм кластеризации распознает, что это разные объекты. Я призываю вас провести дополнительные исследования, чтобы по-настоящему понять разницу между этими двумя уникальными алгоритмами обучения в машинном обучении.

ВИДЫ КЛАСТЕРИИ

Есть несколько типов алгоритмов кластеризации. Самые распространенные из них:

  • Алгоритмы разбиения
  • Иерархические алгоритмы
  • Алгоритмы нечеткой кластеризации
  • Алгоритмы на основе плотности
  • Алгоритмы на основе моделей

K-средние подпадают под алгоритм разбиения на кластеры, поскольку он разделяет точки данных на несколько разделов / групп с использованием метода веса / центра, где точки данных классифицируются как принадлежащие к одному кластеру на основе общего центра или среднего (Следовательно имя, K-означает).

КАК РАБОТАЕТ K-MEANS

K-средство - самый популярный из алгоритмов разбиения на кластеры, он был впервые использован в 1967 году Джеймсом Маккуином. ‘K’ - это просто параметр, определяющий количество кластеров, в которые будут сгруппированы точки данных. K-means работает через итеративный процесс поиска лучших k-кластерных групп для точек данных таким образом, что одна точка данных не может принадлежать одной и той же группе / кластеру (без перекрытия). Для каждого кластера вычисляется центроид (с использованием среднего), затем точки данных, близкие по расстоянию к этим кластерам, назначаются как принадлежащие к той же группе. Точки данных назначаются кластеру таким образом, чтобы сумма квадратов расстояния между точками данных и центроидом кластера (среднее арифметическое всех точек данных, принадлежащих этому кластеру) была как можно меньше. Отсюда итерационный процесс для лучших кластеров. Используемое расстояние рассчитывается с использованием меры евклидова расстояния.

Интересный факт: K + означает = количество кластеров + среднее значение кластеров для группировки точек данных.

Краткое изложение шага в псевдокоде:

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

Как и любой другой алгоритм, алгоритм K-средних имеет цели для каждого варианта использования. Две основные цели:

  • Расчет расстояния между точками
  • Уменьшение суммы квадратов расстояний или ошибок между центроидами и точками (SSE).

Следует отметить один важный момент: выбор оптимального значения k очень важен. В то время как меньшие значения k приводят к меньшему количеству кластеров с несоответствием данных, слишком большие значения k приводят к большему количеству кластеров с вероятными кластерами в отдельных группах. Оптимальное значение K будет в той точке, когда центроиды не изменяются, т.е. значения центроидов остаются постоянными. Одним из очень распространенных методов определения этого является «метод локтя».

Метод изгиба подбирает точки данных в диапазоне значений k с использованием принципа «внутрикластерная сумма квадратов (Wcss)», так что WCSS является минимальным, насколько это возможно.

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

ПРИМЕР ИСПОЛЬЗОВАНИЯ: сегментация клиентов на основе годового дохода

Набор данных - это очень простые данные, которые можно продемонстрировать с помощью кода, как работает k-means. Найдите ниже ссылку на набор данных и используемый код, загруженный в репозиторий Github.

НЕОБХОДИМЫЕ БИБЛИОТЕКИ PYTHON

  1. Numpy
  2. Панды
  3. Matlplotlib
  4. ScikitLearn

ШАГИ:

  1. Импортируйте необходимые библиотеки

2. Импортируйте набор данных.

3. Прочтите набор данных.

4. Определите X и Y (зависимые и независимые переменные). X будет содержать все точки данных, а Y будет ссылочным столбцом, с помощью которого мы хотим рассчитывать кластеры. Обратите внимание, что Y здесь не целевой столбец, как в случае контролируемого обучения. Это больше похоже на точку отсчета для анализа. Y - это годовой доход, определяющий цель анализа. Для X столбец «CustomerID» будет опущен, потому что он здесь не играет никакой роли.

5. Визуализируйте точки данных перед кластеризацией.

6. Разделите набор данных на поезд и набор тестов для разработки модели.

7. Найдите K, используя метод Elbow, и постройте результаты, используя Matplotlib.

Как видно, оптимальное значение k равно 5.

8. Подгоните K-средние к набору данных (также, при желании, просмотрите центры, полученные с помощью модели).

9. Печать этикеток, предсказанных моделью.

10. Визуализируйте кластеры с помощью K-средних.

11. Визуализируйте фактические кластеры по сравнению с прогнозируемыми кластерами для сравнения.

БОНУС

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

Эта библиотека называется «YelloBrickVisualizer». Он работает с Matplolib и ScikitLearn в качестве основных оболочек и лучше всего работает с ScikitLearn версии 0.20 или новее и Matplotlib версии 3.0.1 или новее.

Взгляните на график для метода локтя и значения K с помощью этой библиотеки.

Потрясающе!

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

  • В командной строке Anaconda:

«conda install -c Districtdatalabs yellowbrick»

Документация: https://anaconda.org/DistrictDataLabs/yellowbrick

  • Используя Pip Manager:

«pip install yellowbrick»

Документация: https://pypi.org/project/yellowbrick/, https://www.scikit-yb.org/en/latest/quickstart.html

Спасибо за чтение!

GITHUB РЕПОЗИТОРИЙ



ПОДКЛЮЧЕНИЕ В СОЦИАЛЬНЫХ СЕТЯХ

Twitter: @ diyyah92

LinkedIn: https://www.linkedin.com/in/aminah-mardiyyah-rufa-i

РЕСУРСЫ