Это третья часть серии Объяснение алгоритмов машинного обучения 10-летней давности. Если вы читали два предыдущих о регрессии XGBoost и кластеризации K-средних, то вы знаете, как это сделать. У нас есть пугающе звучащий алгоритм, так что давайте избавим его от пугающих частей и поймем простую интуицию, стоящую за ним. В том же духе, что и K-Means Clustering, сегодня мы поговорим о другом популярном алгоритме кластеризации — Hierarchical Clustering.

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

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

Я собираюсь разделить объяснение на 3 части:

  1. Создание кластера и дендрограммы
  2. Дискуссия о расстояниях
  3. Подробнее о кластерах

1. Создание кластера и дендрограммы

Начнем с того, что сделаем каждую точку данных кластером. Это формирует 9 кластеров:

Возьмите два ближайших кластера (подробнее о близости см. в разделе 2) и объедините их в один кластер. Поскольку C2 и C3 находятся ближе всего, они образуют кластер. Это дает нам в общей сложности 8 кластеров.

Теперь мы представляем этот кластер на так называемой дендрограмме. Ось X представляет точки (или клиентов в нашем случае), а ось Y — расстояние между кластерами.

Мы повторяем это. Возьмите два ближайших кластера (C5 и C6), объедините их в один кластер и нанесите на дендрограмму.

Сделайте это снова. (розовый кластер и C4)

И опять. (С7 и С8)

Мы продолжаем повторять этот процесс, пока у нас не останется только один кластер.

На данный момент именно так мы создаем дендрограмму и наши иерархические кластеры.

2. Обсуждение расстояний

Ранее мы говорили о поиске ближайших кластеров, но как именно мы измеряем эту близость?

Представьте, что у нас есть розовые, синие и фиолетовые кластеры. А теперь мы хотим выяснить, должны ли мы сгруппировать розовый кластер с синим или фиолетовым.

Есть 4 способа сделать это. Но прежде чем мы поговорим о них, давайте кратко поговорим о расстоянии. В этом контексте, когда я говорю о расстоянии, я имею в виду евклидово расстояние. Итак, если p с координатами (p₁, p₂,…, pₙ) и q с координатами (q₁, q₂,…, qₙ) — это две точки в n-мерном пространстве, то евклидово расстояние между ними равно:

В нашем случае, поскольку данные двумерные, евклидово расстояние между двумя точками будет:

Теперь, когда мы понимаем, как интерпретировать расстояния, есть 4 способа определения близости:

  1. Простая связь. В методе одиночной связи мы определяем расстояние как кратчайшее расстояние между двумя точками в каждом кластере. Итак, мы сравниваем расстояние между ближайшими точками в розовом и фиолетовом кластерах с расстоянием между ближайшими точками в синем и розовом кластерах. Меньшее из двух расстояний определяет, к какому кластеру ближе розовый.

2. Полная связь: похожа на одиночную связь, но здесь расстояние измеряется между самой дальней парой точек в двух кластерах.

3.Средняя связь. Как следует из названия, расстояние определяется как среднее расстояние между каждым наблюдением из первого кластера и каждым наблюдением во втором кластере. (Ужасно выглядящая формула предупреждения! Она здесь для заинтересованных людей, но важно, чтобы вы понимали логику измерения расстояния.)

4. Метод центроида. Он включает в себя поиск центра (центроида) каждого кластера, а затем определение расстояния между ними. (Если вы не знаете, как вычислить центроиды, я объясню процесс здесь)

3. Подробнее о кластерах

Настройка кластеров

Мы знаем, что наша окончательная дендрограмма выглядит так:

Мы можем настроить количество нужных кластеров, указав пороговое расстояние. Например, скажем, что нам не нужны кластеры с расстояниями больше 3. Затем мы рисуем пороговую линию на 3:

Эта строка означает, что нам не нужны никакие кластеры выше этого уровня, так что у нас остаются только 3 кластера ниже пороговой линии:

Если мы установим пороговое расстояние равным 5, то…

… у нас осталось 2 кластера:

Оптимальное количество кластеров

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

Нарисуйте горизонтальную линию, которая будет пересекать эту линию наибольшего расстояния, и эта линия будет порогом для расчета кластеров:

У нас есть свои кластеры. Что теперь?

Теперь, когда мы завершили процесс кластеризации и обнаружили, что существует 3 оптимальных кластера, какие выводы магазин может извлечь из этого?

Если вы посмотрите на кластеры, то увидите, что они делятся на 3 категории: молодые клиенты, которые не тратят много, пожилые клиенты, которые также тратят меньше, и средний сегмент, который тратит много. Теперь магазин может использовать эту информацию в своих интересах. Они могут оптимизировать свой бизнес, расширяя спектр услуг, продуктов и сделок, предлагаемых третьему сегменту клиентов среднего возраста. Они могут объединить свои ресурсы, чтобы сделать эту группу счастливее — предоставить им больше выбора, который удовлетворит их вкус, принести им новейшие продукты или даже предложить им эксклюзивные часы для покупок.

Это простой пример того, как можно использовать кластеризацию, но возможности безграничны!

Если вы хотите поддержать мою работу, рассмотрите возможность использования моей ссылки для подписки на Medium! (5 долларов в месяц, отменить в любое время)

Если у вас есть еще какие-либо предложения или комментарии по алгоритму машинного обучения для меня, не стесняйтесь связаться со мной в LinkedIn или написать мне по адресу [email protected].