Clustering sebagai reduksi dimensi

10

Saya membaca buku "Machine learning with Spark" oleh Nick Pentreath, dan di halaman 224-225 penulis membahas tentang penggunaan K-means sebagai bentuk pengurangan dimensionalitas.

Saya belum pernah melihat pengurangan dimensi seperti ini, apakah ada nama atau / dan berguna untuk bentuk data tertentu ?

Saya mengutip buku yang menggambarkan algoritma:

Asumsikan bahwa kita mengelompokkan vektor fitur dimensi tinggi kami menggunakan model pengelompokan K-means, dengan k cluster. Hasilnya adalah satu set pusat k cluster.

Kami dapat mewakili setiap titik data asli kami dalam hal seberapa jauh dari masing-masing pusat klaster ini. Artinya, kita bisa menghitung jarak dari titik data ke setiap pusat cluster. Hasilnya adalah seperangkat jarak k untuk setiap titik data.

Jarak k ini dapat membentuk vektor dimensi baru k. Kami sekarang dapat merepresentasikan data asli kami sebagai vektor baru dengan dimensi lebih rendah, relatif terhadap dimensi fitur asli.

Penulis menyarankan jarak Gaussian.

Dengan 2 cluster untuk data 2 dimensi, saya memiliki yang berikut ini:

K-means:

K-means dengan 2 cluster

Menerapkan algoritma dengan norma 2:

norma 2

Menerapkan algoritma dengan jarak Gaussian (menerapkan dnorm (abs (z)):

Gaussian

Kode R untuk gambar sebelumnya:

set.seed(1)
N1 = 1000
N2 = 500
z1 = rnorm(N1) + 1i * rnorm(N1)
z2 = rnorm(N2, 2, 0.5) + 1i * rnorm(N2, 2, 2)
z = c(z1, z2)

cl = kmeans(cbind(Re(z), Im(z)), centers = 2)

plot(z, col = cl$cluster)

z_center = function(k, cl) {
  return(cl$centers[k,1] + 1i * cl$centers[k,2])
}

xlab = "distance to cluster center 1"
ylab = "distance to cluster center 2"

out_dist = cbind(abs(z - z_center(1, cl)), abs(z - z_center(2, cl)))
plot(out_dist, col = cl$cluster, xlab = xlab, ylab = ylab)
abline(a=0, b=1, col = "blue")

out_dist = cbind(dnorm(abs(z - z_center(1, cl))), dnorm(abs(z - z_center(2, cl))))
plot(out_dist, col = cl$cluster, xlab = xlab, ylab = ylab)
abline(a=0, b=1, col = "blue")
ahstat
sumber
1
Perhatikan bahwa dalam contoh Anda, tidak ada pengurangan dimensionalitas yang terjadi karena data Anda adalah 2-dimensi untuk memulainya, dan Anda memetakannya ke 2 dimensi baru (jarak ke masing-masing 2 kluster Anda). Untuk mengurangi dimensi data Anda, Anda perlu menggunakan lebih sedikit kluster daripada jumlah dimensi asli dalam data.
Ruben van Bergen
Ya, saya melakukan semua ini dalam 2D ​​untuk memungkinkan memplot gambar awal dan membiarkan semua orang melihat bentuk ulang; jadi bukan pengurangan dimensi dalam kasus itu. Bentuk output serupa untuk data sampel yang serupa dalam 3D dan dengan 2 cluster.
ahstat
4
Saya suka fakta bahwa Anda menekankan jarak dari pusat cluster. Terlalu banyak analis data yang mendiskritisasi data dan kehilangan informasi dengan mengelompokkan data ke dalam kelompok "berbeda".
Frank Harrell

Jawaban:

6

Saya pikir ini adalah "metode centroid" (atau metode "centroidQR" yang terkait erat) yang dijelaskan oleh Park, Jeon dan Rosen . Dari abstrak tesis Moon-Gu Jeon :

Metode Centroid kami memproyeksikan data dimensi penuh ke ruang centroid kelasnya, yang memberikan pengurangan dimensi yang luar biasa, mengurangi jumlah dimensi menjadi jumlah kelas sekaligus memperbaiki struktur kelas asli. Salah satu sifat yang menarik adalah bahwa bahkan ketika menggunakan dua ukuran kesamaan yang berbeda, hasil klasifikasi untuk ruang penuh dan pengurangan dimensi yang dibentuk oleh Centroid adalah identik ketika klasifikasi berbasis centroid diterapkan. Metode kedua, disebut CentroidQR, adalah varian dari metode Centroid kami, yang digunakan sebagai ruang proyeksi, k kolom matriks ortogonal Q dari QR dekomposisi dari matriks centroid.

Tampaknya juga setara dengan metode "beberapa kelompok" dari Analisis Faktor .

Leo Martins
sumber
3

Lihat semua literatur tentang pengindeksan berbasis pivot .

Tapi Anda mendapat sedikit keuntungan dengan menggunakan k-means. Biasanya, Anda bisa menggunakan titik acak sebagai pivot. Jika Anda cukup memilih, semuanya tidak akan sama.

Memiliki QUIT - Anony-Mousse
sumber
Bisakah Anda jelaskan mengapa "Anda mendapatkan sedikit dengan menggunakan k-means"? Terima kasih
Tagar
Karena hasilnya tidak tampak lebih baik daripada dengan pivot acak.
Memiliki QUIT - Anony-Mousse
Terima kasih! dapatkah Anda memperbarui respons Anda dengan tautan ke teknik "pengindeksan berbasis pivot"? Saya berasumsi itu sama dengan "menggunakan titik acak sebagai pivot". Saya mencoba google, tetapi tidak yakin apakah yang saya dapatkan berhubungan langsung dengan pendekatan K-means yang diuraikan dalam Q.
Tagar
2

Ada beberapa cara untuk menggunakan pengelompokan sebagai pengurangan dimensi. Untuk K-means, Anda juga dapat memproyeksikan titik (secara orthogonal) ke ruang vektor (atau affine) yang dihasilkan oleh pusat.

Benoit Sanchez
sumber