Bagaimana cara menentukan jumlah cluster di K-means clustering?

19

Apakah ada cara untuk menentukan jumlah cluster optimal atau haruskah saya mencoba nilai yang berbeda dan memeriksa tingkat kesalahan untuk memutuskan nilai terbaik?

berkay
sumber
1
@berkay Bagaimana Anda menentukan tingkat kesalahan untuk metode yang tidak diawasi ini? (Atau maksud Anda dengan SS?)
chl
@ chl, saya dapat menggunakan jumlah kesalahan kuadrat untuk semua cluster atau akurasi keseluruhan (dalam hal ini saya tahu label kelas.)
berkay
3
@berkay Algoritma sederhana untuk menemukan cluster No. adalah menghitung WSS rata-rata untuk 20 run k-means pada peningkatan jumlah cluster (dimulai dengan 2, dan berakhir dengan mengatakan 9 atau 10), dan menyimpan solusi yang memiliki WSS minimal pada set cluster ini. Metode lain adalah statistik Gap . Tetapi jika Anda sudah memiliki contoh yang berlabel, lalu mengapa Anda mencoba metode yang tidak diawasi?
chl
@chl terima kasih, pertanyaan bagus, kita bisa menebak fitur tergantung dari cluster, saya menganalisis karakteristik intrusi baru, mimikri aplikasi legal.
berkay
2
Saya telah menjawab Q serupa dengan setengah lusin metode (menggunakan R) di sini: stackoverflow.com/a/15376462/1036500
Ben

Jawaban:

8

Metode yang saya gunakan adalah menggunakan CCC (Kriteria Clustering Kubik). Saya mencari CCC meningkat maksimum ketika saya menambah jumlah cluster dengan 1, dan kemudian mengamati ketika CCC mulai berkurang. Pada saat itu saya mengambil jumlah cluster pada maksimum (lokal). Ini akan mirip dengan menggunakan plot scree untuk memilih jumlah komponen utama.


Laporan Teknis SAS A-108 Kriteria Clustering Kubik ( pdf )

= jumlah observasi n k = jumlah cluster k p = jumlah variabel q = jumlah cluster X = n × p Data matriks M = q × p matriks cluster sarana Z = indikator klaster ( z i k = 1 jika obs . i dalam cluster k , 0 jika tidak) n
nkk
p
q
Xn×p
Mq×p
Zzik=1ik

Asumsikan setiap variabel memiliki rata-rata 0:
, M = ( Z Z ) - 1 Z XZZ=diag(n1,,nq)M=(ZZ)1ZX

Matriks S S (total) = T = X X S S (antara kluster) matriks = B = M Z Z M S S (dalam klaster) matriks = W = T - BSSTXX
SSBMZZM
SSWTB

(trace = jumlah elemen diagonal)R2=1trace(W)trace(T)

Tumpuk kolom menjadi satu kolom panjang. Regresi pada produk Kronecker dari Z dengan p × p matriks identitas Hitung R 2 untuk regresi ini - sama R 2X
Zp×p
R2R2

Gagasan CCC adalah untuk membandingkan Anda dapatkan untuk sekelompok cluster tertentu dengan R 2 yang akan Anda dapatkan dengan mengelompokkan set poin yang terdistribusi secara seragam dalam ruang p dimensi.R2R2p

Ralph Winters
sumber
2
Ada kriteria lain selain CCC. Lihat Menentukan jumlah cluster dalam set data , untuk melihat yang utama.
Vincent Labatut