Здравствуйте, любители данных.

Несколько дней назад я изучал проекты, которыми занимался за более чем 9 лет работы в области аналитики и статистического моделирования. Я нашел один из интересных проектов одной из моих предыдущих организаций — Сегментация.

Я использовал кластеризацию K-средних для сегментации домохозяйств, продуктов и т. д. 7 лет назад.

Здесь, в этой статье, я пытаюсь с нуля объяснить алгоритм кластеризации K-Means и его реализацию с использованием SAS.

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

Начнем сейчас!!!

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

Потому что клиенты разные.

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

Шаг 1. Определение количества кластеров.Кластеризация по методу K-средних – это тип неиерархической кластеризации, где K – число кластеров K. Доступны различные алгоритмы для получения оптимального количества кластеров. Мы обсудим это по мере продвижения.

Шаг 2. Определите центр тяжести каждого кластера.Кластеризация методом K-средних — это итерационная процедура для определения кластеров. Этот шаг в основном является отправной точкой в ​​качестве центра каждого кластера. Скажем, у нас есть

В качестве отправной точки мы определяем количество кластеров = 2, поэтому нам нужно выбрать 2 центральные точки. Мы выбираем две центральные точки (obs = 3 и obs = 6), как показано ниже:

Шаг 3. Рассчитайте расстояние от каждой точки данных до центра каждого кластера.После того, как мы закончим с центром каждого кластера, следующим шагом будет вычисление расстояния между каждыми точками данных до центра каждого кластера. центр кластеров. Как видите, есть 6 наблюдений и 2 центра, будет матрица 6*2 следующим образом:

Позвольте мне развернуть формулу первого наблюдения шага 3 для обоих кластеров. То же самое применимо ко всем наблюдениям.

Шаг 4. Присвоение окончательных кластеров всем наблюдениям.Последний шаг — присвоение кластеров каждому наблюдению. Мы сделаем это, используя min(значение кластера 1, значение кластера 2) из ​​шага 3. Таким образом, для первых наблюдений минимальное значение относится к кластеру 1 (6,7 против 6,9), поэтому наблюдение 1 принадлежит кластеру 1. минимальное значение второго наблюдения относится к кластеру 2 (6,8 против 6,6), поэтому второе значение принадлежит кластеру 2 и так далее.

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

До сих пор мы делали только первую итерацию, где центральные точки выбирались случайным образом. Теперь мы выберем центральные точки на основе выходных данных итерации 1 следующим образом:

Наблюдения 1, 3 и 4 принадлежат кластеру 1, а остальные принадлежат кластеру 2. Итак, мы возьмем среднее значение всех точек, сгруппированных по кластерам, чтобы установить новые центральные точки на итерации 2.

Если мы обновим центральные точки на итерации 2, расстояние также изменится, и, следовательно, окончательный кластер также изменится следующим образом:

Мы снова берем среднее значение и обновляем центральные точки на итерации 3. Снова расстояние и конечный кластер изменятся следующим образом:

Ждать!!! Вы что-нибудь заметили? Если вы видите окончательное распределение кластера итерации 2 и распределение кластера итерации 3, оба они такие же, как показано ниже:

Поскольку распределение кластеров не меняется, даже если мы выполняем итерацию 3, теперь мы можем сказать, что алгоритм сошелся, и теперь у нас есть оптимальное распределение кластера (то есть кластер из итерации 3).

Давайте реализуем описанное выше обучение в SAS.

Цель приведенного ниже набора данных – сегментировать клиентов оптового дистрибьютора на основе их годовых расходов на различные категории продуктов, например молоко, бакалею, регион и т. д. Итак, давайте начнем программировать!

Здесь я запустил кластеризацию с другим количеством кластеров. Следующие два графика нуждаются в пояснении.

Кубические критерии кластеризации (CCC): помогают определить оптимальное количество кластеров для рассмотрения. Идея CCC состоит в том, чтобы сравнить R-квадрат, который вы получите для заданного набора кластеров, с R-квадратом, который вы получите, сгруппировав равномерно распределенный набор точек. На графике вы можете увидеть два максимальных пика в кластере № 5 и кластере № 8. Таким образом, вы можете выбрать кластеры от 5 до 8. Подробнее о CCC https: //support.sas.com/kb/22/addl/fusion_22540_1_a108_5903.pdf

Псевдо F-статистика. Рассчитывается на основе отношения межкластерной дисперсии к внутрикластерной дисперсии. Это точно так же, как F-статистика модели ANOVA. Но здесь он основан на сравнении кластерных средств. Вы можете увидеть пик при номере кластера = 5. Поэтому, исходя из этого, вы можете выбрать «нет». кластеров = 5.

Спасибо,

Урвиш Шах