Saya seorang pemula ketika datang untuk mendukung mesin vektor. Apakah ada beberapa pedoman yang mengatakan kernel mana (mis. Linear, polinomial) paling cocok untuk masalah tertentu? Dalam kasus saya, saya harus mengklasifikasikan halaman web menurut apakah mereka mengandung beberapa informasi spesifik atau tidak, yaitu saya memiliki masalah klasifikasi biner.
Dapatkah Anda mengatakan secara umum kernel mana yang paling cocok untuk tugas ini? Atau apakah saya harus mencoba beberapa dari mereka pada dataset khusus saya untuk menemukan yang terbaik? By the way, saya menggunakan perpustakaan Python scikit-belajar yang memanfaatkan perpustakaan libSVM.
classification
svm
model-selection
libsvm
kernel-trick
pemistahl
sumber
sumber
Jawaban:
Anda benar-benar menemukan sesuatu pertanyaan terbuka dalam literatur. Seperti yang Anda katakan, ada berbagai kernel (misalnya, linier, fungsi basis radial, sigmoid, polinomial), dan akan melakukan tugas klasifikasi Anda dalam ruang yang ditentukan oleh persamaan masing-masing. Sepengetahuan saya, tidak ada yang secara definitif menunjukkan bahwa satu kernel selalu berkinerja terbaik pada satu jenis tugas klasifikasi teks dibandingkan yang lain.
Satu hal yang perlu dipertimbangkan adalah bahwa setiap fungsi kernel memiliki 1 atau lebih parameter yang perlu dioptimalkan untuk set data Anda, yang berarti, jika Anda melakukannya dengan benar, Anda harus memiliki koleksi pelatihan hold-out kedua di mana Anda dapat selidiki nilai terbaik untuk parameter ini. (Saya katakan koleksi hold-out kedua, karena Anda seharusnya sudah memiliki satu yang Anda gunakan untuk mengetahui fitur input terbaik untuk classifier Anda.) Saya melakukan percobaan beberapa waktu lalu di mana saya melakukan optimasi skala besar dari masing-masing parameter-parameter ini untuk tugas klasifikasi tekstual sederhana dan menemukan bahwa setiap kernel tampaknya berkinerja cukup baik, tetapi melakukannya pada konfigurasi yang berbeda. Jika saya mengingat hasil saya dengan benar, sigmoid melakukan yang terbaik, tetapi melakukannya pada penyetelan parameter yang sangat spesifik - yang membutuhkan waktu lebih dari sebulan untuk ditemukan mesin saya.
sumber
Coba kernel Gaussian.
Kernel Gaussian sering dicoba terlebih dahulu dan ternyata menjadi kernel terbaik di banyak aplikasi (dengan fitur bag-of-words Anda juga). Anda juga harus mencoba kernel linear. Jangan berharap itu memberikan hasil yang baik, masalah klasifikasi teks cenderung non-linear. Tapi itu memberi Anda perasaan untuk data Anda dan Anda bisa bahagia tentang betapa non-linearitas meningkatkan hasil Anda.
Pastikan Anda benar memvalidasi lebar kernel dan berpikir tentang bagaimana Anda ingin menormalkan fitur Anda (tf-idf dll).
Saya akan mengatakan Anda dapat meningkatkan hasil Anda dengan normalisasi fitur yang lebih baik daripada dengan memilih kernel yang berbeda (yaitu bukan Gaussian).
sumber