Cluster Big Data dalam R dan Apakah Pengambilan Sampel Relevan?

13

Saya baru dalam ilmu data dan memiliki masalah menemukan cluster dalam kumpulan data dengan 200.000 baris dan 50 kolom di R.

Karena data memiliki variabel numerik dan nominal, metode seperti K-means yang menggunakan ukuran jarak Euclidean sepertinya bukan pilihan yang tepat. Jadi saya beralih ke PAM, agnes dan hclust yang menerima matriks jarak sebagai input.

Metode daisy dapat bekerja pada data tipe campuran tetapi matriks jarak terlalu besar: 200.000 kali 200.000 jauh lebih besar dari 2 ^ 31-1 (batas panjang vektor sebelum R 3.0.0.)

R 3.0.0 yang baru dirilis kemarin mendukung vektor panjang dengan panjang lebih dari 2 ^ 31-1. Tetapi matriks ganda 200.000 kali 200.000 membutuhkan RAM terus menerus yang lebih besar dari 16Gb yang tidak mungkin pada mesin saya.

Saya membaca tentang komputasi paralel dan paket bigmemory dan saya tidak yakin apakah mereka akan membantu: jika saya menggunakan daisy, itu akan menghasilkan matriks besar yang tidak bisa muat dalam memori.

Saya juga membaca tentang pos tentang pengambilan sampel: Apakah pengambilan sampel relevan dengan waktu 'data besar'?

Jadi dalam kasus saya, apakah relevan untuk menggunakan pengambilan sampel pada kumpulan data, mengelompokkan pada sampel dan kemudian menyimpulkan struktur seluruh kumpulan data?

Bisakah Anda memberi saya saran? Terima kasih!

Tentang mesin saya:

R versi 3.0.0 (2013-04-03)

Platform: x86_64-w64-mingw32 / x64 (64-bit)

OS: Windows 7 64bit

RAM: 16.0GB

Komunitas
sumber
Satu-satunya metode pengelompokan yang saya tahu adalah untuk data besar (mis. Jutaan kasus) dan dapat menerima variabel nominal beserta yang numerik adalah TwoStep cluster yang ditemukan di SPSS.
ttnphns

Jawaban:

4

HAI(n3)HAI(n2)

PAM sendiri seharusnya tidak memerlukan matriks jarak yang lengkap, tetapi algoritme diketahui memiliki skala yang buruk, karena kemudian perlu (kembali) menghitung semua jarak berpasangan dalam setiap kluster pada setiap iterasi untuk menemukan elemen yang paling sentral. Ini jauh lebih sedikit jika Anda memiliki sejumlah besar cluster, tetapi tetap sangat mahal!

HAI(nlHaign)

Namun, untuk sebagian besar algoritma ini, pertama-tama Anda harus memastikan fungsi jarak Anda benar-benar baik; maka Anda perlu mempertimbangkan cara untuk mempercepat kueri dengan menggunakan indeks yang sesuai.

Perhatikan juga bahwa dalam banyak kasus - dan ini mungkin berlaku untuk PAM - Anda dapat menjalankan algoritma pada sampel terlebih dahulu , kemudian hanya memperbaikinya pada set data lengkap. Jika sampel Anda representatif, algoritma seperti k-means dan PAM seharusnya memberi Anda hasil yang sama seperti pada set data lengkap.

Memiliki QUIT - Anony-Mousse
sumber
Tidak akan membantu OP di sini, tetapi jika ada orang lain yang memiliki nomor sampel "perantara": ada juga fastcluster untuk R (lihat math.stanford.edu/~muellner/fastcluster.html ).
cbeleites mendukung Monica
Hai Anony-Mousse, bisakah Anda mengarahkan saya ke beberapa algoritma yang menggunakan percepatan struktur indeks? Terima kasih banyak!
Misalnya DBSCAN dapat dipercepat dengan indeks yang mendukung kueri rentang epsilon. Mungkin juga berarti pengelompokan shift. OPTICS, yang juga dapat dipercepat dengan cara ini, dapat dilihat sebagai versi yang lebih maju dari pengelompokan tautan (Anda dapat menyebutnya "pengelompokan
kerekatan
2

coba fungsi CLARA dari paket cluster di R. Ini mengimplementasikan algoritme pam-seperti dengan subsampling data Anda (pastikan Anda memberikan ukuran subsampel yang masuk akal untuk data Anda karena standarnya sengaja terlalu kecil). Ini bekerja sangat baik jika media dalam data Anda dapat diwakili oleh sampel kecil dari total data (yaitu - ada lebih sedikit cluster dalam dataset). Dengan cara ini Anda dapat mengelompokkan secara efisien dengan sampel acak kecil dan menambahkan poin ke solusi pengelompokan yang dikomputasi.

http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA

zzk
sumber
hai zzk, terima kasih atas jawabannya. Saya membaca tentang clara sebelumnya tetapi sepertinya itu hanya menyediakan metrik euclidean dan manhattan. Masalah utama adalah bahwa dataset saya memiliki variabel numerik dan nominal. Jadi tidak menggunakan metrik untuk pengukuran jarak tidak tepat.
ah ya, itu saat ini menjadi batasan bagi saya juga. Saya percaya metode ini sebenarnya dapat dilakukan pada jarak sembarang, tetapi saya belum repot-repot melihat melalui kode sumber belum melihat apakah itu dapat diubah.
zzk
0

Anda juga dapat menerapkan analisis korespondensi berganda pada variabel kualitatif Anda dan membuat transformasi menjadi variabel numerik.

Alvaro
sumber
2
Ini sepertinya ide yang bagus, tetapi mungkin agak jarang. Bisakah Anda menyempurnakan ini sedikit untuk menjelaskan apa itu & mengapa itu akan membantu?
gung - Reinstate Monica