Bagaimana saya bisa menguji apakah pengelompokan data biner saya signifikan

12

Saya sedang melakukan analisis keranjang belanja dataset saya adalah kumpulan vektor transaksi, dengan item-item produk yang dibeli.

Ketika menerapkan k-means pada transaksi, saya akan selalu mendapatkan beberapa hasil. Matriks acak mungkin juga akan menampilkan beberapa kluster.

Apakah ada cara untuk menguji apakah pengelompokan yang saya temukan adalah signifikan, atau itu bisa menjadi kebetulan. Jika ya, bagaimana saya bisa melakukannya.

Peter Smit
sumber

Jawaban:

14

Mengenai analisis keranjang belanja, saya pikir tujuan utamanya adalah untuk mengindividuasikan kombinasi produk yang paling sering dibeli oleh pelanggan. The association rulesmewakili metodologi alami yang paling di sini (memang mereka benar-benar dikembangkan untuk tujuan ini). Menganalisis kombinasi produk yang dibeli oleh pelanggan, dan berapa kali kombinasi ini diulang, mengarah ke aturan jenis 'jika kondisi, maka hasil' dengan pengukuran menarik yang sesuai. Anda juga dapat mempertimbangkan Log-linear modelsuntuk menyelidiki hubungan antara variabel yang dipertimbangkan.

Sekarang untuk pengelompokan, berikut adalah beberapa informasi yang mungkin berguna:

Pertimbangan pertama Variable clustering. Clustering variabel digunakan untuk menilai collinearity, redundancy, dan untuk memisahkan variabel menjadi cluster yang dapat dinilai sebagai variabel tunggal, sehingga menghasilkan reduksi data. Cari varclusfungsinya (paket Hmisc dalam R)

Penilaian stabilitas clusterwise: function clusterboot{R package fpc}

Statistik berbasis jarak untuk validasi klaster: function cluster.stats{R package fpc}

Seperti mbq telah disebutkan, gunakan lebar siluet untuk menilai jumlah cluster terbaik. Lihat ini . Mengenai lebar siluet, lihat juga fungsi optsil .

Perkirakan jumlah cluster dalam set data melalui statistik gap

Untuk menghitung Indeks Dissimilaritas dan Jarak, lihat dsvdis dan vegdist

Algoritma pengelompokan EM dapat memutuskan berapa banyak cluster yang akan dibuat dengan validasi silang, (jika Anda tidak dapat menentukan berapa banyak cluster yang akan dihasilkan). Meskipun algoritma EM dijamin untuk konvergen ke maksimum, ini adalah maksimum lokal dan mungkin tidak harus sama dengan global maksimum. Untuk peluang yang lebih baik untuk mendapatkan global maksimum, seluruh prosedur harus diulang beberapa kali, dengan tebakan awal yang berbeda untuk nilai parameter. Angka log-likelihood keseluruhan dapat digunakan untuk membandingkan berbagai konfigurasi akhir yang diperoleh: cukup pilih yang terbesar dari maxima lokal . Anda dapat menemukan implementasi pengelompokan EM di proyek open-source WEKA

Ini juga tautan yang menarik.

Juga mencari di sini untukFinding the Right Number of Clusters in k-Means and EM Clustering: v-Fold Cross-Validation

Akhirnya, Anda dapat menjelajahi hasil pengelompokan menggunakan clusterfly

George Dontas
sumber
8

Ini adalah metode menggunakan Monte Carlo untuk menunjukkan apakah hasilnya benar.

Hipotesis nol kami H_0 adalah bahwa dataset kami tidak memiliki pengelompokan yang menarik. Hipotesis alternatif kami H_1 adalah bahwa dataset kami berisi pengelompokan yang menarik.

Dengan ini kami menganggap menarik sebagai, lebih menarik daripada struktur pengelompokan dari dataset acak dengan margin baris dan kolom yang sama. Tentu saja kendala lain dapat dipilih, tetapi untuk kendala longgar akan membuat hasil kami terlalu umum, dan untuk mempersempit kendala akan memperbaiki pengelompokan terlalu banyak, sehingga membuat hasil kami tidak signifikan secara otomatis. Margin, seperti yang akan kita lihat, adalah pilihan yang baik karena metode yang ada untuk mengacak dengannya.

Mari kita definisikan sebagai statistik pengujian kami kesalahan pengelompokan (kuadrat dalam jarak klaster), T dari Π_0. Nilai untuk dataset asli kami adalah t .

Kami tidak tahu apa-apa tentang distribusi ini, kecuali bahwa kami dapat mengambil sampel darinya. Yang membuatnya menjadi kandidat yang bagus untuk Monte Carlo.

Sekarang kita menggambar n (iid) sampel acak dari Π_0 dan menghitung nilai- p empiris dengan rumus p_emp = 1 / (n + 1) * (Σ_i = 1-n I (t_i> = t) + 1)

Pengambilan sampel acak dapat dilakukan dengan swap pengacakan. Dengan kata-kata sederhana, sebuah kotak dicari dengan dua sudut yang berlawanan 1 dan di dua sudut lainnya a 0. Kemudian sudut dibalik. Ini menjaga margin kolom dan baris. Prosedur ini diulangi cukup banyak sampai dataset cukup acak (ini akan membutuhkan beberapa percobaan). Info lebih lanjut tentang ini dapat ditemukan dalam Menilai Hasil Data Mining melalui Pengacakan Swap oleh Gionis et. Al.

Salah satu metode untuk melakukan ini adalah mendefinisikan distribusi data Anda dan mengambil kesalahan clustering sebagai uji-statistik t.

Misalnya, jika kami menganggap semua set data dengan margin baris dan kolom yang sama sebagai distribusi data kami, maka kami dapat mengambil n matriks acak Xi dari distribusi ini dan menghitung kesalahan pengelompokan untuk mereka. Lalu kita bisa menghitung nilai-p emperikal dengan rumus

Peter Smit
sumber
4

Ada sesuatu seperti siluet , yang sampai batas tertentu mendefinisikan statistik yang menentukan kualitas cluster (misalnya digunakan dalam mengoptimalkan k). Sekarang kemungkinan Monte Carlo akan menjadi sebagai berikut: Anda menghasilkan banyak dataset acak yang mirip dengan aslinya Anda (misalnya dengan mengocok nilai antara baris di setiap kolom), mengelompokkan dan memperoleh distribusi siluet rata-rata yang kemudian dapat digunakan untuk menguji signifikansi siluet dalam data nyata. Tetap saya admin bahwa saya belum pernah mencoba ide ini.


sumber
1
Ini mengingatkan saya pada poster yang saya lihat di konferensi Pemetaan Otak Manusia 2010. Tom Nichols menggunakan bootstrap parametrik untuk menilai stabilitas korelasi dan siluet cophenetic dalam pengelompokan hierarki, tetapi lihat posternya: j.mp/9yXObA .
chl
@ chl, terima kasih; memang baru-baru ini saya telah melihat hal serupa dilakukan di lab saya; hasilnya adalah bahwa cluster tidak signifikan: - /
Saya setuju bahwa ini terdengar seperti bootstrap.
Vass
(FYI: interpretasi nilai siluet ). Juga, perhatikan bahwa nilai siluet tidak didefinisikan untuk k = 1 cluster, jadi kami tidak dapat membandingkan hipotesis k = 1 (yaitu dataset tidak disatukan) vs k> 1 (dataset dikelompokkan) menggunakan nilai siluet.
Franck Dernoncourt