Выбор количества кластеров

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

Доступно несколько алгоритмов кластеризации. Однако они требуют, чтобы в качестве входных данных было задано количество кластеров (k). Выбор количества кластеров может быть затруднен, так как это неконтролируемая проблема без меток.

Нестабильность кластеризации можно измерить, чтобы определить производительность алгоритма кластеризации при данном k. Мы бы предпочли, чтобы кластер был стабильным, но что это значит?

Допустим, у вас есть выборка наблюдений (X), мы можем перетасовать этот набор данных и взять три подвыборки. Эти три подвыборки взяты из одной и той же выборки X, поэтому они должны иметь одинаковую структуру.

Мы берем выбранный нами алгоритм кластеризации и обучаем две отдельные версии модели. Во-первых, модель подгоняется к набору данных z1. Во-вторых, для набора данных z2 установлена ​​другая модель. В обоих случаях применяется один и тот же алгоритм при заданном значении k, т.е. количества кластеров.

модель1.fit(z1)

модель2.fit(z2)

После обучения обеих моделей мы прогнозируем метки третьей (проверочной) подвыборки z3.

модель1.предсказать(z3)

модель2.предсказать(z3)

Чтобы измерить нестабильность этого кластерного отображения, мы вычисляем его следующим образом:

  • для каждого наблюдения iи его соседаj = i+1
  • проверьте, согласна ли модель 1, что они имеют одинаковую метку: label1(xi) = label1(xj)
  • проверьте, согласна ли модель 2, что у них одинаковая метка: label2(xi) = label2(xj)

Если модель 1 помечает оба наблюдения i и j как равные, а модель 2, с другой стороны, помечает оба наблюдения как разные, это вызывает нестабильность сопоставления кластеров.

Если согласен1 != согласен2:

нестабильность += 1

Это приводит нас к показателю нестабильности для этого k и этих подвыборок. Мы хотим повторить этот процесс для диапазона k, чтобы оценить нестабильность кластеризации для всех.

Наконец, мы выбираем количество кластеров (k), которое минимизирует нестабильность.

Не стесняйтесь отвечать на любые вопросы по теории или кодированию.

В настоящее время я работаю над приложением для выбора количества тем в тематическом моделировании с помощью скрытого распределения Дирихле, дайте мне знать, если вы хотите увидеть продолжение!