Memahami perbandingan hasil pengelompokan

13

Saya bereksperimen dengan mengklasifikasikan data ke dalam kelompok. Saya cukup baru dalam topik ini, dan mencoba memahami output dari beberapa analisis.

Menggunakan contoh dari Quick-R , beberapa Rpaket disarankan. Saya telah mencoba menggunakan dua paket ini ( fpcmenggunakan kmeansfungsi, dan mclust). Salah satu aspek dari analisis ini yang saya tidak mengerti adalah perbandingan hasilnya.

# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)

Saya telah membaca bagian-bagian yang relevan dari fpc manual ini dan masih belum jelas apa yang harus saya tuju. Sebagai contoh, ini adalah hasil dari membandingkan dua pendekatan pengelompokan berbeda:

$n
[1] 521

$cluster.number
[1] 4

$cluster.size
[1] 250 119  78  74

$diameter
[1]  5.278162  9.773658 16.460074  7.328020

$average.distance
[1] 1.632656 2.106422 3.461598 2.622574

$median.distance
[1] 1.562625 1.788113 2.763217 2.463826

$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264

$average.toother
[1] 3.442575 3.929158 4.068230 4.425910

$separation.matrix
          [,1]      [,2]      [,3]      [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000

$average.between
[1] 3.865142

$average.within
[1] 1.894740

$n.between
[1] 91610

$n.within
[1] 43850

$within.cluster.ss
[1] 1785.935

$clus.avg.silwidths
         1          2          3          4 
0.42072895 0.31672350 0.01810699 0.23728253 

$avg.silwidth
[1] 0.3106403

$g2
NULL

$g3
NULL

$pearsongamma
[1] 0.4869491

$dunn
[1] 0.01699292

$entropy
[1] 1.251134

$wb.ratio
[1] 0.4902123

$ch
[1] 178.9074

$corrected.rand
[1] 0.2046704

$vi
[1] 1.56189

Pertanyaan utama saya di sini adalah untuk lebih memahami bagaimana menafsirkan hasil perbandingan cluster ini.


Sebelumnya, saya telah bertanya lebih banyak tentang efek penskalaan data, dan menghitung matriks jarak. Namun itu dijawab dengan jelas oleh mariana soffer, dan saya hanya mengatur ulang pertanyaan saya untuk menekankan bahwa saya tertarik pada intrepretasi output saya yang merupakan perbandingan dari dua algoritma pengelompokan yang berbeda.

Bagian sebelumnya dari pertanyaan : Jika saya melakukan segala jenis pengelompokan, haruskah saya selalu mengukur data? Sebagai contoh, saya menggunakan fungsi dist()pada dataset skala saya sebagai input ke cluster.stats()fungsi, namun saya tidak sepenuhnya mengerti apa yang sedang terjadi. Saya baca di dist() sini dan menyatakan bahwa:

fungsi ini menghitung dan mengembalikan matriks jarak yang dihitung dengan menggunakan ukuran jarak yang ditentukan untuk menghitung jarak antara baris-baris matriks data.

celenius
sumber
Apakah Anda mencari klarifikasi lebih lanjut atau apakah Anda tidak senang dengan tanggapan @ mariana? Saya kira ini menyangkut pertanyaan pertama Anda (ke-2). Jika ini masalahnya, mungkin Anda harus memperbarui pertanyaan Anda sehingga orang-orang mengerti mengapa Anda menetapkan hadiah untuk pertanyaan ini.
chl
@ chl Saya akan memperbaruinya untuk membuatnya lebih jelas. Saya hanya mencari beberapa panduan untuk menafsirkan perbandingan pengelompokan, karena tidak mengerti apa artinya output. Tanggapan @ mariana sangat membantu menjelaskan beberapa istilah yang terkait dengan metode ini.
celenius

Jawaban:

13

Pertama izinkan saya memberi tahu Anda bahwa saya tidak akan menjelaskan dengan tepat semua tindakan di sini, tetapi saya akan memberi Anda gambaran tentang bagaimana membandingkan seberapa baik metode pengelompokan (mari kita asumsikan kita membandingkan 2 metode pengelompokan dengan nomor yang sama cluster).

  1. Misalnya semakin besar diameter cluster, semakin buruk clustering, karena titik-titik yang dimiliki cluster semakin tersebar.
  2. Semakin tinggi jarak rata-rata setiap pengelompokan, semakin buruk metode pengelompokan. (Mari kita asumsikan bahwa jarak rata-rata adalah rata-rata jarak dari setiap titik dalam gugus ke pusat gugus.)

Ini adalah dua metrik yang paling sering digunakan. Periksa tautan ini untuk memahami apa artinya:

  • jarak antar-kluster (semakin tinggi semakin baik, adalah penjumlahan jarak antara berbagai kluster centroid)
  • jarak intra-cluster (semakin rendah semakin baik, adalah penjumlahan jarak antara anggota cluster ke pusat cluster)

Untuk lebih memahami metrik di atas, periksa ini .

Maka Anda harus membaca manual perpustakaan dan fungsi-fungsi yang Anda gunakan untuk memahami langkah-langkah yang mewakili masing-masing, atau jika ini tidak termasuk mencoba untuk menemukan arti yang disertakan. Namun, saya tidak akan repot dan tetap dengan yang saya nyatakan di sini.

Mari kita lanjutkan dengan pertanyaan yang Anda buat:

  1. Mengenai penskalaan data: Ya, Anda harus selalu menskala data untuk pengelompokan, jika tidak, skala yang berbeda dari dimensi yang berbeda (variabel) akan memiliki pengaruh yang berbeda dalam cara pengelompokan data, dengan semakin tinggi nilainya dalam variabel, semakin besar pengaruhnya pada variabel tersebut. akan berada di bagaimana pengelompokan dilakukan, sementara memang mereka semua harus memiliki pengaruh yang sama (kecuali untuk beberapa alasan aneh tertentu Anda tidak menginginkannya seperti itu).
  2. Fungsi jarak menghitung semua jarak dari satu titik (contoh) ke yang lain. Pengukur jarak yang paling umum adalah Euclidean, jadi misalnya, anggaplah Anda ingin mengukur jarak dari instance 1 ke instance 2 (misalkan Anda hanya memiliki 2 instance untuk kesederhanaan). Juga mari kita asumsikan bahwa setiap instance memiliki 3 nilai (x1, x2, x3), jadi I1=0.3, 0.2, 0.5dan I2=0.3, 0.3, 0.4jarak Euclidean dari I1 dan I2 adalah:, sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17maka matriks jarak akan menghasilkan:

        i1    i2
    i1  0     0.17
    i2  0.17  0

Perhatikan bahwa matriks jarak selalu simetris.

Rumus jarak Euclidean bukan satu-satunya yang ada. Ada banyak jarak lain yang dapat digunakan untuk menghitung matriks ini. Lihat misalnya di Wikipedia Manhattain Distance dan bagaimana cara menghitungnya. Di akhir halaman Wikipedia untuk Euclidean Distance (di mana Anda juga dapat memeriksa formulanya), Anda dapat memeriksa jarak mana yang ada.

mariana lebih lembut
sumber
Terima kasih atas jawaban Anda yang sangat komprehensif - ini sangat membantu.
celenius
Saya sangat senang itu membantu Anda.
mariana soffer
@marianasmenawarkan tautan ke laman Stanford tidak berfungsi. Harap perbarui atau buat itu dapat diakses. Terima kasih
Herman Toothrot
7

Saya pikir ukuran kualitas terbaik untuk pengelompokan adalah asumsi klaster, seperti yang diberikan oleh Seeger dalam Pembelajaran dengan data berlabel dan tidak berlabel :

Misalnya, asumsikan X = Rd dan validitas “asumsi kluster”, yaitu bahwa dua titik x, x harus memiliki label t yang sama jika ada jalur di antara mereka dalam X yang hanya melewati daerah P yang relatif tinggi (x ).

Ya, ini membawa seluruh gagasan pusat massa dan pusat. Setelah semua, ini adalah konsep yang agak sewenang-wenang jika Anda berpikir tentang fakta bahwa data Anda mungkin berada di dalam submanifold non-linear dari ruang tempat Anda sebenarnya beroperasi.

Anda dapat dengan mudah membuat dataset sintetis tempat model campuran terurai. Misalnya satu ini: sebuah lingkaran di dalam awan.

Singkat cerita: Saya akan mengukur kualitas algoritma pengelompokan dengan cara minimax. Algoritma pengelompokan terbaik adalah yang meminimalkan jarak maksimal suatu titik ke tetangga terdekat dari kluster yang sama, sementara itu memaksimalkan jarak minimal suatu titik ke tetangga terdekat dari suatu kluster yang berbeda.

Anda mungkin juga tertarik dengan Algoritma Klaster Teori Informasi Nonparametrik .

bayerj
sumber
Bagaimana cara saya memeriksa kluster yang cocok menggunakan pendekatan minimax? Tingkat pengetahuan saya tentang pengelompokan sangat mendasar, jadi saat ini saya hanya mencoba memahami bagaimana membandingkan dua pendekatan pengelompokan yang berbeda.
celenius
Bisakah Anda membagikan kode R untuk gambar terlampir?
Andrej
@ Andrej Dugaan saya adalah awan Gaussian ( x<-rnorm(N);rnorm(N)->y) dibagi menjadi 3 bagian oleh r (dengan salah satu dari mereka dihapus).
Saya tidak tahu algoritma praktis yang sesuai dengan ukuran kualitas itu. Anda mungkin masih ingin menggunakan K-Means et al. Tetapi jika ukuran di atas rusak, Anda tahu bahwa data yang Anda lihat tidak (belum!) Cocok untuk algoritma itu.
bayerj
@Andrej Saya tidak menggunakan R (berasal dari ML daripada statistik :) tapi apa yang disarankan mbq tampaknya baik-baik saja.
bayerj