Teknik reduksi dimensi untuk memaksimalkan pemisahan kluster yang diketahui?

8

Jadi katakanlah saya memiliki banyak titik data di R ^ n, di mana n cukup besar (seperti, 50). Saya tahu data ini terbagi dalam 3 kelompok, dan saya tahu bagian mana dari setiap titik data yang menjadi bagiannya. Yang ingin saya lakukan adalah memvisualisasikan cluster ini dalam 2D ​​sedemikian rupa untuk memaksimalkan pemisahan visual antara-cluster yang saya lihat, dengan tujuan untuk membuktikan bahwa cluster mudah dipisahkan berdasarkan lokasi titik data dalam R ^ n sendirian.

Cara saya sudah melakukan ini sampai sekarang melibatkan melakukan transformasi PCA pada titik data dan kemudian memvisualisasikan pasangan PC secara acak sampai saya menemukan satu di mana cluster tampaknya cukup bersih dipisahkan. Pendekatan ini tampaknya cukup ad hoc, dan sepertinya harus ada cara mudah untuk menemukan rotasi PCA-style data yang, bukannya memaksimalkan varians keseluruhan, memaksimalkan pemisahan antar-cluster.

Apakah ada teknik standar di luar sana yang melakukan ini? Jika tidak, ada ide tentang cara membuat transformasi seperti itu?

dmonner
sumber
Anda mungkin tertarik dengan Pursuit Proyeksi . (Tersedia dalam perangkat lunak GGobi .)
chl

Jawaban:

6

"Perputaran gaya PCA dari data yang, bukannya memaksimalkan varians keseluruhan, memaksimalkan pemisahan antar klaster". Analisis diskriminan adalah teknik yang persis seperti itu. Komponen utama memaksimalkan varians di sepanjang itu. Fungsi diskriminan memaksimalkan rasio antara-cluster-varians / pooled-dalam-cluster-variance di sepanjang itu.

ttnphns
sumber
Analisis diskriminan tidak disajikan secara kanonik sebagai sesuatu yang menghasilkan penyisipan data 2d. Penyisipan 2d apa yang Anda sarankan untuk mengekstraksi, katakanlah, Fisher's LDA?
eric_kernfeld
@ eric_kernfeld, orang dengan mudah memplot data dalam ruang fungsi diskriminan. Juga, mudah untuk menunjukkan fungsi sebagai sumbu tambahan dalam ruang variabel asli, seperti yang ditunjukkan di sini dan di sini .
ttnphns
8

Ada dua metode yang muncul di pikiran saya yang mungkin Anda tertarik. Yang pertama adalah menggunakan cluster yang dikenal dan disebut 'Analisis komponen lingkungan' oleh Goldberger et al .

Idenya adalah Anda belajar pemetaan (misalnya affine) dari ruang dimensi yang lebih tinggi ke ruang yang dapat divisualisasikan. (mis. ). Pemetaan ini diperkirakan dengan memaksimalkan jumlah rata-rata klasifikasi yang benar jika variasi klasifikasi tetangga terdekat k-digunakan. Ada beberapa hasil mengesankan yang diperoleh:SEBUAH:RnR2

NCA pada dataset anggur, wajah, dan digit

Yang lainnya adalah tSNE , yang mempelajari pemetaan (misSEBUAH:RnR2). Pemetaan ini tidak memiliki kendala, tetapi kerugian dioptimalkan (tidak tergantung pada beberapa parametrization, tetapi dengan poin baru diR2itu sendiri) adalah bahwa ruang baru mencerminkan jarak yang mirip dengan ruang asli. Serupa agak rumit di sini, didasarkan pada asumsi distribusi tertentu dari titik-titik dalam ruang dan sesuai KL-divergensi.

Untuk yang terakhir, ada kode matlab yang dapat Anda temukan di tautan yang diberikan. Berikut ini visualisasi dataset MNIST:

tSNE di MNIST

bayerj
sumber
3

Anda mungkin ingin melihat makalah ini:

G. Sanguinetti, Pengurangan dimensi dari kumpulan data yang dikelompokkan, IEEE Trans. Analisis Pola dan Kecerdasan Mesin (PAMI) 30 (3), 535-540 (2008) (www)

Yang menggambarkan versi analisis diskriminan linier tanpa pengawasan, saya telah melihat beberapa demonstrasi tentang ini dan sepertinya alat yang sangat berguna untuk dimiliki dalam kotak peralatan.

Jika Anda sudah tahu kelas mana yang dimiliki masing-masing sampel, maka (seperti yang disarankan ttnphns) Anda ingin Analisis Diskriminan Linier, buku Andrew Webb tentang pengenalan pola statistik adalah buku referensi yang bagus untuk hal semacam itu.

Dikran Marsupial
sumber
0

Artikel "A Unified Approach to PCA, PLS, MLR dan CCA" (oleh M Borga et al) memberikan deskripsi yang ringkas tentang berbagai jenis metode proyeksi linear termasuk PCA dan LDA.

james li
sumber
0

Kotak Kuadrat Sebagian akan melakukan apa yang Anda inginkan. Pustaka "pls" di R adalah apa yang secara tradisional saya gunakan. Berikut ini adalah contoh yang membuat 3 grup dengan 50 poin, merakitnya menjadi bingkai data dengan label grup, dan menjalankan PLS pada mereka:

library(MASS)
library(pls)

pts1 = mvrnorm(50,c(3,0,3),diag(c(1,1,1)))
pts2 = mvrnorm(50,c(-3,0,3),diag(c(1,1,1)))
pts3 = mvrnorm(50,c(3,3,-3),diag(c(1,1,1)))
pts = as.data.frame(rbind(pts1,pts2,pts3))

pts$labels = c(rep(1,50),rep(2,50),rep(3,50))

plsresult = plsr(labels~.,ncomp=2,data=pts)
plot(plsresult$scores,col=pts$labels)
Jared Schuetter
sumber
Mengapa tidak menggunakan analisis diskriminan PLS dalam kasus ini?
chl