Klasifikasi dengan data tinggi lemak

15

Saya perlu melatih classifier linier pada laptop saya dengan ratusan ribu titik data dan sekitar sepuluh ribu fitur. Apa saja pilihan saya? Bagaimana keadaan seni untuk jenis masalah ini?

Sepertinya penurunan gradien stokastik adalah arah yang menjanjikan, dan menurut saya ini adalah yang terbaik:

"Pegasos: Perkiraan awal Sub-GrAdient SOlver untuk SVM" Shai Shalev-Shwartz, Penyanyi Yoram, Nathan Srebro, Andrew Cotter. "Pemrograman Matematika, Seri B, 127 (1): 3-30, tahun: 2007."

Apakah ini konsensus? Haruskah saya mencari ke arah lain?

carlosdc
sumber
1
sudahkah Anda mempertimbangkan untuk menggunakan beberapa metode pengurangan dimensi? ribuan fitur memerlukan pengurangan dimensi, lihat: en.wikipedia.org/wiki/Dimension_reduction
Dov
Pertanyaan ini dapat ditingkatkan dengan upaya penelitian. Apakah Anda memiliki teknik dalam pikiran?
Tamzin Blake
@Thom Blake: Saya sudah mengedit sedikit pertanyaan, dengan pikiran saya.
carlosdc
Tanpa mengetahui lebih lanjut tentang data, jawaban apa pun tidak akan mendapat informasi. Apakah ini jarang? kontinu? diskrit? fitur / objek yang berlebihan? berapa kelas? Misalnya, PCA pada data jarang terkadang dapat berbahaya.
cyborg
2
tinggi = banyak Poin? gemuk = banyak fitur? Apakah terminologi std ini ada di mana saja, digunakan dalam referensi di suatu tempat?

Jawaban:

6

Saya pikir Anda harus melihat metode Pembelajaran Online . The perceptron dan perceptron kernel sangat mudah untuk kode dan bekerja sangat baik dalam praktek, dan ada seluruh host metode online lainnya. Perhatikan bahwa setiap metode pembelajaran online dapat dikonversi menjadi algoritma pembelajaran batch, dalam hal ini mereka sangat mirip dengan metode keturunan gradien stokastik.

Jika Anda menggunakan Matlab ada kotak alat yang sangat bagus yang disebut DOGMA oleh Francesco Orabona, yang berisi berbagai algoritma pembelajaran online, dan Anda dapat mengevaluasi beberapa metode berbeda menggunakan itu. Saya telah menggunakan ini dalam beberapa penelitian saya dan menemukan itu sangat berguna (perhatikan bahwa sejauh yang saya ingat itu mengharapkan data sebagai [fitur x contoh] sehingga Anda mungkin harus memindahkannya).

Seperti yang disebutkan orang lain, Anda mungkin ingin mencoba pengurangan dimensionalitas. PCA mungkin bukan pilihan yang baik di sini, karena Anda harus menghitung matriks kovarians yang akan sangat mahal. Anda dapat mencoba melihat Proyeksi Acak . Teorinya sulit, tetapi prinsipnya sangat sederhana. Ini didasarkan pada Lemma Johnson-Lindenstrauss jika Anda tertarik, tetapi ide dasarnya adalah jika Anda memproyeksikan secara acak ke ruang dimensi yang lebih rendah, maka jarak antar titik dipertahankan hingga beberapa ϵ . Jika Anda menggunakan kernel RBF, maka 2 jarak semua yang Anda tertarik!2ϵ2

tdc
sumber
7

Pertama, saya ingin bertanya bagaimana Anda tahu classifier linier adalah pilihan terbaik? Secara intuitif untuk ruang yang begitu besar (R ^ 10000) ada kemungkinan bahwa beberapa classifier non-linear lainnya adalah pilihan yang lebih baik.

Saya sarankan Anda untuk mencoba beberapa pengklasifikasi yang berbeda dan mengamati kesalahan prediksi (saya akan mencoba beberapa model klasifikasi yang diatur).

Jika Anda kehabisan memori, kurangi dimensi menggunakan PCA

niko
sumber
2
Terima kasih. Saya berpikir lebih banyak tentang bagaimana menangani skala masalah. Saya ingin memulai dengan melakukan linear, karena lebih sederhana. Saya pikir Anda menyarankan metode berbasis kernel. Izinkan saya menunjukkan bahwa jika saya memiliki 750000 datapoints, matriks kernel akan berukuran 540 GB. Jadi jawabannya tidak bisa: tancapkan ke LIBSVM / SVMLight / etc. Dapatkan C dan gamma yang baik dan lihat apa yang Anda dapatkan.
carlosdc
2
(-1) jawabannya adalah a) sebagian begitu generik, dapat diterapkan untuk pertanyaan klasifikasi b) tidak dijelaskan mengapa PCA direkomendasikan (lebih dari teknik pengurangan dimensi lainnya).
steffen
1

Seperti yang disarankan jb, saya pikir lebih baik menggunakan metode "Pengurangan Dimensi". Principle Component Analysis (PCA) adalah pilihan populer. Anda juga dapat mencoba teknik pembelajaran fitur tanpa pengawasan. Untuk informasi lebih lanjut tentang pembelajaran fitur tanpa pengawasan dapat ditemukan di http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

Upul
sumber
1
PCA bukan PAC;) ( 15 karakter )
neuron