Apakah saya perlu membuang variabel yang berkorelasi / collinear sebelum menjalankan kmeans?


13

Saya menjalankan kmeans untuk mengidentifikasi kelompok pelanggan. Saya memiliki sekitar 100 variabel untuk mengidentifikasi cluster. Masing-masing variabel ini mewakili% pengeluaran oleh pelanggan pada suatu kategori. Jadi, jika saya memiliki 100 kategori, saya memiliki 100 variabel ini sehingga jumlah dari variabel-variabel ini adalah 100% untuk setiap pelanggan. Sekarang, variabel-variabel ini sangat berkorelasi satu sama lain. Apakah saya harus membuang beberapa dari ini untuk menghilangkan collinearity sebelum menjalankan kmeans?

Berikut adalah contoh data. Pada kenyataannya saya memiliki 100 variabel dan 10 juta pelanggan.

Customer CatA CatB CatC   
1         10%  70%  20%   
2         15%  60%  25%

1
Sudahkah Anda mencoba analisis PCA untuk menghias data Anda?
Miroslav Sabo

2
"Collinear" tidak sama dengan "correleted". Jadi pertanyaan Anda tetap tidak jelas
ttnphns

Jawaban:


10

Jangan jatuhkan variabel apa pun, tetapi pertimbangkan untuk menggunakan PCA. Inilah sebabnya.

Pertama, seperti yang ditunjukkan oleh Anony-mousse, k-means tidak terpengaruh oleh kolinearitas / korelasi. Anda tidak perlu membuang informasi karena itu.

Kedua, jika Anda menjatuhkan variabel Anda dengan cara yang salah, Anda akan secara artifisial membawa beberapa sampel lebih dekat. Sebuah contoh:

Customer CatA CatB CatC
1        1    0    0
2        0    1    0
3        0    0    1

(Saya telah menghapus notasi% dan hanya menaruh nilai antara 0 dan 1, dibatasi sehingga semuanya berjumlah 1.)

Jarak euclidean antara masing-masing pelanggan di ruang 3d alami mereka adalah (10)2+(01)2+(00)2=2

Sekarang katakanlah Anda menjatuhkan CatC.

Customer CatA CatB 
1        1    0    
2        0    1    
3        0    0    

Sekarang jarak antara pelanggan 1 dan 2 masih , tetapi antara pelanggan 1 dan 3, dan 2 dan 3, itu hanya2(10)2+(00)2=1

Ketiga, collinerarity / korelasi bukan masalah. Dimensi Anda adalah. 100 variabel cukup besar sehingga bahkan dengan 10 juta titik data, saya khawatir k-means dapat menemukan pola palsu dalam data dan cocok untuk itu. Alih-alih, pikirkan tentang menggunakan PCA untuk mengompresnya ke jumlah dimensi yang lebih mudah dikelola - katakan 10 atau 12 untuk memulai dengan (mungkin jauh lebih tinggi, mungkin jauh lebih rendah - Anda harus melihat varians di sepanjang setiap komponen, dan bermain-main sedikit, untuk menemukan nomor yang benar). Anda secara artifisial membawa beberapa sampel lebih dekat bersama-sama melakukan ini, ya, tetapi Anda akan melakukannya dengan cara yang seharusnya mempertahankan sebagian besar varians dalam data, dan yang biasanya akan menghapus korelasi.

~~~~~

EDIT:

Re, komentar di bawah tentang PCA. Ya, itu memang memiliki patologi. Tapi ini cukup cepat dan mudah untuk dicoba, jadi sepertinya masih bukan taruhan buruk bagi saya jika Anda ingin mengurangi dimensi masalah.

Pada catatan itu, saya mencoba dengan cepat membuang beberapa set data sintetik 100 dimensi ke dalam algoritma k-means untuk melihat apa yang muncul. Sementara perkiraan posisi pusat cluster tidak seakurat itu, keanggotaan cluster (yaitu apakah dua sampel ditugaskan ke cluster yang sama atau tidak, yang tampaknya menjadi minat OP) jauh lebih baik daripada yang saya kira. Jadi firasat saya sebelumnya sangat mungkin salah - k-means berfungsi dengan baik pada data mentah.


1
Saya pikir banyak perhatian harus diambil ketika menghilangkan variabel dengan PCA. Pertama-tama varians harus dinormalisasi sebelum eliminasi karena Anda dapat keliru menghilangkan variabel hanya karena mereka memiliki skala yang berbeda karena unit mereka. Kedua setelah itu saya akan menghilangkan hanya dimensi-dimensi yang memiliki variasi sangat kecil, karena karena PCA mengasumsikan basis ortogonal jika Anda memiliki variasi dalam arah non-ortogonal ini akan ditangkap dengan k-cara tetapi dihilangkan oleh PCA.
Cagdas Ozgenc

1
(X1,X2)1ρ>0Y=X1X2(X1,X2)X1+X2X1X2YX1+X2

1
Ini adalah diskusi yang tidak relevan dalam pengaturan tanpa pengawasan. Untuk pengaturan yang diawasi ya PCA tidak peduli tentang hubungan dengan variabel target. Jika arah ketergantungan jatuh ke arah nasib buruk varians rendah.
Cagdas Ozgenc

2

Pada contoh mainan di 2d atau 3d, itu seharusnya tidak membuat banyak perbedaan, itu hanya menambahkan beberapa redundansi ke data Anda: semua poin Anda berada pada hyperplane dimensi aneh, (d-1). Begitu juga dengan cluster artinya. Dan jarak dalam hyperplane dimensi (d-1) ini adalah kelipatan linear dari jarak yang sama, sehingga tidak mengubah apa pun.

(x,y)(x,y,x+y)xy

Mari kita lihat contoh paling sederhana: variabel duplikat.

Jika Anda menjalankan PCA pada kumpulan data Anda, dan menduplikasi suatu variabel, ini secara efektif berarti menempatkan bobot rangkap pada variabel ini. PCA didasarkan pada asumsi bahwa varians di setiap arah adalah sama pentingnya - jadi Anda harus, memang, hati-hati variabel bobot (memperhitungkan korelasi, juga melakukan preprocessing lain yang diperlukan) sebelum melakukan PCA.


1
Mengingat analisis saya di stats.stackexchange.com/a/50583 , alasan ini tampaknya salah.
whuber

Saya telah banyak memperbaiki jawaban saya, itu terlalu banyak didasarkan pada data contoh mainan.
Memiliki QUIT - Anony-Mousse

1

Dianjurkan untuk menghapus variabel jika ada sangat berkorelasi .

Terlepas dari algoritma pengelompokan atau metode tautan, satu hal yang biasanya Anda ikuti adalah menemukan jarak antar titik. Menjaga variabel yang sangat berkorelasi adalah memberi mereka lebih banyak, menggandakan bobot dalam menghitung jarak antara dua titik (Karena semua variabel dinormalisasi, efek biasanya akan berlipat ganda).

Singkatnya kekuatan variabel untuk mempengaruhi pembentukan cluster meningkat jika memiliki korelasi yang tinggi dengan variabel lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.