Есть ли способ определить оптимальное число кластеров или я должен просто попробовать разные значения и проверить частоту появления ошибок, чтобы выбрать лучшее значение?
19
Есть ли способ определить оптимальное число кластеров или я должен просто попробовать разные значения и проверить частоту появления ошибок, чтобы выбрать лучшее значение?
R
) здесь: stackoverflow.com/a/15376462/1036500Ответы:
Метод, который я использую, заключается в использовании 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
NК К
п
Q
Икс n × p
M Q× р
Z Zя к= 1 я К
Предположим, что каждая переменная имеет среднее значение 0:Z'Z= diag ( n1, ⋯ , nQ) M= ( Z'Z) - 1 Я'Икс
, M = ( Z ′ Z ) - 1 Z ′ X
(общая) матрица = T = X ′ X S S (между кластерами) матрица = B = M ′ Z ′ Z M S S (внутри кластеров) матрица = W = T - BSS T Икс'Икс
SS В M'Z'ZM
SS W T- Б
(trace = сумма диагональных элементов)
Стек столбцы в один длинный столбец. Регресс наКронекер продуктизсединичной матрицей Computeдля этой регрессии -жеИкс Z р × р
р2 р2
p × p R 2 R 2
Идея CCC состоит в том, чтобы сравнить вы получаете для данного набора кластеров, с вы получите, кластеризовав равномерно распределенный набор точек в мерном пространстве.R 2 pR2 R2 p
источник