Kasus penggunaan RBF SVM (vs regresi logistik dan hutan acak)

10

Mendukung Mesin Vektor dengan kernel fungsi radial-base adalah classifier yang diawasi untuk keperluan umum.

Sementara saya tahu dasar-dasar teoretis untuk SVM ini, dan poin-poin kuatnya, saya tidak mengetahui kasus-kasus di mana mereka adalah metode yang lebih disukai. Jadi, apakah ada kelas masalah yang RBF SVM lebih unggul dari teknik ML lainnya? (Baik dalam hal skor, atau lainnya - seperti ketahanan, kemudahan untuk memulai, interpretabilitas dll)

Saya bertanya, karena pendekatan default saya berpusat di sekitar regresi logistik (mungkin dengan beberapa interaksi), hutan acak dan sedikit jaringan saraf. Tidak ada teman saya yang melakukan ML (beberapa adalah pemenang Kaggle) adalah pengguna SVM (tetapi mungkin merupakan artefak komunitas saya, atau masalah yang mereka hadapi).

Piotr Migdal
sumber

Jawaban:

8

Saya akan mencoba menjawab pertanyaan ini dengan kombinasi bukti yang dipublikasikan, pengalaman pribadi, dan spekulasi.

A) Bukti yang dipublikasikan.

Satu-satunya makalah yang saya tahu yang membantu menjawab pertanyaan adalah Delgado et al 2014 - Apakah kita Membutuhkan Ratusan Penggolong untuk Memecahkan Masalah Klasifikasi Dunia Nyata? - JMLR yang menjalankan ratusan algoritma dan implementasi yang berbeda pada 121 dataset untuk UCI. Mereka menemukan bahwa walaupun RBF SVM bukan algoritma "terbaik" (ini adalah hutan acak jika saya ingat dengan benar), itu termasuk 3 teratas (atau 5).

Jika Anda menganggap bahwa pemilihan kumpulan data mereka adalah "sampel yang baik" dari masalah dunia nyata, maka SVM secara definitif merupakan algoritma yang harus dicoba pada masalah baru tetapi orang harus mencoba hutan acak terlebih dahulu!

Batasan untuk menggeneralisasi hasil itu adalah bahwa dataset hampir semuanya tinggi dan kurus (n >> p), tidak terlalu jarang - yang saya berspekulasi harus lebih menjadi masalah untuk RF, dan tidak terlalu besar (baik n dan p).

Akhirnya, masih dengan bukti yang dipublikasikan, saya merekomendasikan dua situs yang membandingkan berbagai implementasi hutan acak:

B) Pengalaman pribadi.

Saya percaya bahwa makalah seperti Delgado et semua sangat penting bagi komunitas pembelajaran mesin, jadi saya mencoba mereplikasi hasil mereka dalam beberapa kondisi yang berbeda. Saya menjalankan sekitar 15 algoritma berbeda pada 100+ kumpulan data biner (dari kumpulan dataset Delgado). Saya juga berpikir saya lebih berhati-hati dalam pemilihan hyperparameter saat itu.

Hasil saya adalah bahwa SVM adalah "algoritma terbaik" (rangking 4,9). Menurut saya SVM lulus RF karena dataset asli berisi banyak masalah multiclass - yang akan saya bahas di bagian spekulasi - harus menjadi masalah bagi SVM.

EDIT (16 Juni):

Tapi RF jauh lebih cepat, dan itu adalah algoritma terbaik ke-2 (rangking 5.6) diikuti oleh gbm (5.8), nnets (7.2), dan sebagainya). Saya tidak mencoba regresi logistik standar dalam masalah ini, tetapi saya mencoba jaring elastis (L1 dan L2 yang diatur LR) tetapi tidak berkinerja baik (rerata peringkat 8.3) ~

Saya belum selesai menganalisis hasil atau menulis makalah sehingga saya bahkan tidak bisa menunjuk ke laporan teknis dengan hasilnya. Mudah-mudahan, dalam beberapa minggu saya dapat mengedit kembali jawaban ini dan menunjukkan laporan teknis dengan hasilnya.

Makalah ini tersedia di http://arxiv.org/abs/1606.00930 Ternyata setelah analisis penuh RF dan SVM hampir setara dalam hal tingkat kesalahan yang diharapkan dan SVM lebih cepat (mengejutkan saya !!). Saya tidak lagi tegas dalam merekomendasikan RF (dengan alasan kecepatan).

Jadi pengalaman pribadi saya adalah bahwa meskipun SVM mungkin memberi Anda sedikit akurasi ekstra, hampir selalu merupakan pilihan yang lebih baik untuk menggunakan RF.

Juga untuk masalah yang lebih besar, mungkin tidak mungkin untuk menggunakan pemecah SVM batch (saya belum pernah menggunakan pemecah SVM online seperti LASVM atau yang lainnya).

Akhirnya saya hanya menggunakan regresi logistik dalam satu situasi. Saya sedang melakukan beberapa rekayasa fitur "intens" pada masalah klasifikasi gambar (seperti - menggabungkan atau tidak dua deskripsi gambar yang berbeda, dan dimensi deskripsi). Dan saya menggunakan regresi logistik untuk memilih di antara banyak alternatif (karena tidak ada pencarian hyperparameter di LR). Setelah kami puas dengan fitur terbaik (menurut LR) kami menggunakan RF (memilih untuk hyperparameter terbaik) untuk mendapatkan classifier akhir.

C) Spekulasi

Saya tidak pernah serius menangani masalah multikelas, tetapi perasaan saya adalah bahwa SVM tidak begitu baik pada mereka. Masalahnya bukan masalah antara solusi satu-vs-satu atau satu-vs-semua, tetapi semua implementasi yang saya tahu, akan menggunakan hyperparameters yang sama untuk semua pengklasifikasi (OVO atau OVA). Memilih hiperparameter yang benar untuk SVM sangat mahal sehingga tidak ada implementasi yang saya tahu akan melakukan pencarian untuk setiap pengklasifikasi. Saya berspekulasi bahwa ini adalah masalah untuk SVM (tapi bukan masalah untuk RF !!).

Kemudian lagi, untuk masalah multikelas saya akan langsung ke RF.

Jacques Wainer
sumber
Jawaban yang bagus! Apakah Anda memiliki posting blog, buku catatan, atau skrip pada replikasi eksperimen Delgado et al? (Tweaking parameter, scaling variable biasanya sama pentingnya dengan pilihan suatu algoritma, jadi tanpa itu sulit untuk membuat klaim yang kuat tentang keunggulan algoritma.)
Piotr Migdal
2-5,20,25,210,2152-15,2-10.5,2-6,2-1.5,230,5,1,2hal
0

Saya tidak memiliki hak yang cukup untuk dapat menulis komentar, jadi saya hanya akan memberikan masukan / pengamatan saya di sini sebagai jawaban.

Dalam pengalaman saya, Support Vector Classifiers (SVC) cenderung setara atau mengungguli metode lain ketika kelas biner seimbang. Untuk kelas yang tidak seimbang, SVC cenderung berkinerja buruk.

Saya tidak sering berurusan dengan masalah multiclass, tetapi saya telah melihat beberapa hasil yang baik dengan SVC untuk masalah multiclass juga.

Hal lain yang saya perhatikan adalah kutukan dimentionalitas tampaknya tidak mempengaruhi SVC sebanyak teknik pemodelan lainnya. Dengan kata lain, saat saya menambahkan lebih banyak istilah dalam model, teknik lain mulai berkinerja buruk pada set tes (atau, ketidaksepakatan) dibandingkan dengan set pelatihan. Tetapi tidak begitu banyak ketika saya menggunakan SVC. Karena alasan ini, jika model parsimony bukan prioritas Anda, maka SVC mungkin menjadi pilihan yang lebih baik karena Anda dapat memasukkan banyak istilah tanpa terlalu pas seperti metode lainnya.

Salah satu masalah yang saya miliki dengan SVC adalah bahwa hal itu tidak secara implisit memberikan ukuran (seperti probabilitas yang diprediksi) untuk dapat membuat peringkat urutan pengamatan. Anda dapat menggunakan Platt Scaling (diimplementasikan dalam paket sklearn.svm dengan Python), tetapi saya telah melihat beberapa inkonsistensi. (Saya dapat membagikan detailnya jika ada yang tertarik.)

Tidak yakin apakah ini benar-benar menjawab pertanyaan Anda, tetapi ini adalah pengamatan saya. Semoga itu bisa membantu.

Vishal
sumber
0

RF dan (RBF) SVM memiliki teori yang berbeda di belakangnya, tetapi dengan asumsi Anda memiliki cukup data, mereka berkinerja sama baiknya. Mereka berdua dapat mempelajari fungsi-fungsi kompleks dan menangani dengan baik variabel dan outlier yang berisik dan tidak informatif.

Jika Anda mencoba untuk mendapatkan hasil terbaik untuk sesuatu seperti kaggle, Anda akan tetap menggunakan beberapa model termasuk RF dan SVM.

Dalam pengaturan non-kaggle, Anda dapat mempertimbangkan seberapa sulit menerapkan model, memproduksinya, membuat prediksi, menafsirkan, menjelaskannya kepada manajer, dll.

SVM (linear atau RBF yang sangat teratur) akan lebih disukai jika Anda memiliki sedikit data atau Anda sedang berhadapan dengan rangkaian dimensi. Ada beberapa alasan untuk itu, satu adalah yang lebih baik untuk mencari hyperplane margin maksimum daripada serangkaian pemisahan terbaik pada fitur Anda, juga biasanya tidak perlu untuk batas yang kompleks karena dalam ruang dimensi tinggi akan ada beberapa hyperplane yang tetap dapat memisahkan data. Masalah lain adalah bahwa RF lebih sulit disetel (memiliki lebih banyak parameter untuk disetel), sehingga Anda memerlukan lebih banyak data.

Pemikiran lain, validasi silang bisa sangat murah dan cepat untuk SVM, terutama LOOCV. Karena hanya beberapa sampel yang merupakan vektor dukungan (tidak selalu), Anda tidak perlu melatih ulang classifier Anda di setiap flip, tetapi hanya ketika data yang sekarang dalam set tes sebelumnya adalah vektor dukungan. Ini juga dapat membuat pembelajaran online lebih mudah.

Juga, mungkin lebih murah untuk menyimpan vektor dukungan daripada pohon penuh.

Seringkali lebih baik untuk membuat model probabilistik daripada classifier. Jadi, buat model dulu dan putuskan nanti. Dalam hal ini regresi logistik akan lebih disukai. Dan Anda masih bisa menggunakan kernel dan regularisasi untuk membuatnya berperilaku seperti yang Anda inginkan. Juga, Anda tidak akan menggunakan RF untuk menjawab pertanyaan seperti: mengoreksi usia, gaya hidup, jenis kelamin dan pendidikan, apakah minum alkohol meningkatkan kemungkinan pewarnaan serangan jantung?

Beberapa sumber tambahan yang saya temukan menarik: https://www.quora.com/What-are-the-keuntungan-of-different-classification-algorithms http://videolectures.net/solomon_caruana_wslmw/

rep_ho
sumber