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 R
paket disarankan. Saya telah mencoba menggunakan dua paket ini ( fpc
menggunakan kmeans
fungsi, 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.
sumber
Jawaban:
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).
Ini adalah dua metrik yang paling sering digunakan. Periksa tautan ini untuk memahami apa artinya:
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:
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)
, jadiI1=0.3, 0.2, 0.5
danI2=0.3, 0.3, 0.4
jarak Euclidean dari I1 dan I2 adalah:,sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17
maka matriks jarak akan menghasilkan: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.
sumber
Saya pikir ukuran kualitas terbaik untuk pengelompokan adalah asumsi klaster, seperti yang diberikan oleh Seeger dalam Pembelajaran dengan data berlabel dan tidak berlabel :
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: .
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 .
sumber
x<-rnorm(N);rnorm(N)->y
) dibagi menjadi 3 bagian oleh r (dengan salah satu dari mereka dihapus).