Menetapkan label kelas untuk klaster k-means

10

Saya punya pertanyaan yang sangat mendasar tentang pengelompokan. Setelah saya menemukan k cluster dengan centroid mereka, bagaimana cara menafsirkan kelas poin data yang telah saya klaster (memberikan label kelas yang bermakna untuk masing-masing cluster). Saya tidak berbicara tentang validasi cluster yang ditemukan.

Dapatkah itu dilakukan dengan diberikan satu set kecil titik data berlabel, menghitung ke cluster mana titik-titik berlabel ini milik dan berdasarkan pada jenis dan jumlah titik yang diterima masing-masing cluster, memutuskan labelnya? Tampaknya ini cukup jelas, tetapi saya tidak tahu bagaimana standarnya untuk menetapkan label ke klaster dengan cara ini.

Agar jelas, saya ingin melakukan pengelompokan tanpa pengawasan yang tidak menggunakan label apa pun untuk pertama kali menemukan kluster saya. Kemudian setelah menemukan cluster, saya ingin menetapkan label kelas yang bermakna untuk cluster berdasarkan properti dari beberapa contoh datapoints.

Riyaz
sumber
Saya tidak yakin untuk memahami pertanyaan Anda: biasanya, algoritma k-means apa pun harus mengembalikan informasi tentang keanggotaan kelas untuk setiap titik data. Apakah Anda berbicara tentang poin data aktual atau pengamatan baru?
chl
@chi Saya menduga Riyaz khawatir tentang menemukan nama yang dapat digunakan untuk memberi label pada kluster dan berbicara tentang apriori yang menyebutkan beberapa poin dan kemudian menggunakan beberapa algoritma yang mempertimbangkan banyaknya poin yang disebutkan dalam kluster untuk kemudian memberi nama kluster tersebut.
Glen_b -Reinstate Monica
2
@ Ryi, bisakah kami menggunakan analogi berikut untuk Analisis Faktor untuk memahami pertanyaan Anda? Seringkali seseorang akan faktor menganalisis serangkaian variabel untuk mengelompokkan mereka ke dalam kelompok variabel yang tampaknya 'berkumpul bersama', tetapi kemudian analis perlu berpikir tentang sifat variabel yang membentuk setiap cluster untuk muncul dengan nama untuk / cara berpikir tentang apa yang setiap cluster (faktor) adalah . Apakah pada dasarnya itulah yang Anda maksudkan di sini?
gung - Reinstate Monica

Jawaban:

4

Iya. Apa yang Anda usulkan sepenuhnya standar dan itu adalah cara perangkat lunak k-means standar bekerja secara otomatis. Dalam kasus k-means, Anda menghitung jarak euclidean antara setiap pengamatan (titik data) dan setiap rata-rata kluster (centroid) dan menetapkan pengamatan ke kluster yang paling mirip. Kemudian, label cluster ditentukan dengan memeriksa bahwa karakteristik rata-rata pengamatan diklasifikasikan ke cluster relatif terhadap rata-rata relatif terhadap cluster lain.

Tim
sumber
3

Jika Anda melihat nama-nama dalam objek kmeans Anda, Anda akan melihat bahwa ada objek "cluster". Ini berisi label kelas yang dipesan sama dengan data input Anda. Berikut adalah contoh sederhana yang mengikat label kluster kembali ke data Anda.

x <- data.frame(X=rnorm(100, sd=0.3), Y=rnorm(100, mean=1, sd=0.3))

k <- kmeans(x, 2) 
names(k)
x <- data.frame(x, K=k$cluster)

# You can also directly return the clusters
x <- data.frame(x, K=kmeans(x, 2)$cluster)
Jeffrey Evans
sumber
0

Label untuk kluster mungkin didasarkan pada kelas sampel mayoritas dalam sebuah kluster. Tetapi ini benar hanya jika jumlah cluster sama dengan jumlah kelas.

pengguna101780
sumber