Как определить количество кластеров в кластеризации K-средних?

19

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

Беркай
источник
1
@berkay Как вы определяете частоту ошибок для этого неконтролируемого метода? (или вы имеете ввиду внутри СС?)
chl
@chl, я могу использовать сумму квадратов ошибок для всех кластеров или общую точность (в этом случае я знаю метки классов.)
berkay
3
@berkay Простой алгоритм поиска кластеров № состоит в том, чтобы вычислить среднее значение WSS для 20 прогонов k-средних на растущем числе кластеров (начиная с 2 и заканчивая, скажем, 9 или 10), и сохранить решение, которое имеет минимальный WSS над этим набором кластеров. Другим методом является статистика Gap . Но если у вас уже есть помеченные экземпляры, то почему вы пытаетесь использовать неконтролируемый метод?
ЧЛ
@ CHL Спасибо, хороший вопрос, мы можем угадать кластеры в зависимости от особенностей экземпляров, я анализирую новые характеристики вторжения, имитация юридических приложений.
Беркай,
2
Я ответил на аналогичный вопрос с полдюжины методов (используя R) здесь: stackoverflow.com/a/15376462/1036500
Бен

Ответы:

8

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


Технический отчет SAS A-108 Критерий кубической кластеризации ( pdf )

= количество наблюдений n k = число в кластере k p = количество переменных q = количество кластеров X = n × p матрица данных M = q × p матрица кластеров означает Z = индикатор кластера ( z i k = 1, если obs . я в кластере к , 0противном случае) n
nkk
p
q
Xn×p
Mq×p
Zzik=1ik

Предположим, что каждая переменная имеет среднее значение 0:
, M = ( Z Z ) - 1 Z XZZ=diag(n1,,nq)M=(ZZ)1ZX

(общая) матрица = T = X X S S (между кластерами) матрица = B = M Z Z M S S (внутри кластеров) матрица = W = T - BSSTXX
SSBMZZM
SSWTB

R2=1trace(W)trace(T)
(trace = сумма диагональных элементов)

Стек столбцы в один длинный столбец. Регресс наКронекер продуктизсединичной матрицей Computeдля этой регрессии -жеX
p × p R 2 R 2Zp×p
R2R2

Идея CCC состоит в том, чтобы сравнить вы получаете для данного набора кластеров, с вы получите, кластеризовав равномерно распределенный набор точек в мерном пространстве.R 2 pR2R2p

Ральф Винтерс
источник
2
Есть и другие критерии, кроме ССС. Посмотрите Определение количества кластеров в наборе данных , чтобы увидеть основные из них.
Винсент Лабатут