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 + означает = количество кластеров + среднее значение кластеров для группировки точек данных.
Краткое изложение шага в псевдокоде:
- Определите значение k (используя метод локтя) для точек данных, которые будут сгруппированы в K-кластеры.
- Инициировать случайные центроиды для точек данных
- Назначьте наблюдения ближайшему центру скопления
- Определите координаты центра тяжести кластера
- Определите расстояния от каждой точки данных до центроидов.
- Пересчитайте и переназначьте каждую точку ближайшему центроиду кластера, используя минимальное расстояние.
- Снова вычислите центроиды кластера.
- Повторяйте до тех пор, пока центроид не изменится.
Как и любой другой алгоритм, алгоритм K-средних имеет цели для каждого варианта использования. Две основные цели:
- Расчет расстояния между точками
- Уменьшение суммы квадратов расстояний или ошибок между центроидами и точками (SSE).
Следует отметить один важный момент: выбор оптимального значения k очень важен. В то время как меньшие значения k приводят к меньшему количеству кластеров с несоответствием данных, слишком большие значения k приводят к большему количеству кластеров с вероятными кластерами в отдельных группах. Оптимальное значение K будет в той точке, когда центроиды не изменяются, т.е. значения центроидов остаются постоянными. Одним из очень распространенных методов определения этого является «метод локтя».
Метод изгиба подбирает точки данных в диапазоне значений k с использованием принципа «внутрикластерная сумма квадратов (Wcss)», так что WCSS является минимальным, насколько это возможно.
Как видно на изображении выше. Используя метод локтя, оптимальное значение K - это просто та самая точка опрокидывания, в которой не происходит значительных изменений. Оптимальную точку можно определить по так называемому «изгибу кривой».
ПРИМЕР ИСПОЛЬЗОВАНИЯ: сегментация клиентов на основе годового дохода
Набор данных - это очень простые данные, которые можно продемонстрировать с помощью кода, как работает k-means. Найдите ниже ссылку на набор данных и используемый код, загруженный в репозиторий Github.
НЕОБХОДИМЫЕ БИБЛИОТЕКИ PYTHON
- Numpy
- Панды
- Matlplotlib
- ScikitLearn
ШАГИ:
- Импортируйте необходимые библиотеки
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