Kernel SVM mana yang digunakan untuk masalah klasifikasi biner?

9

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.

pemistahl
sumber
bagaimana Anda mewakili halaman web Anda? sekantong kata-kata? Pilihan kernel tergantung pada ukuran kesamaan yang Anda inginkan di ruang input Anda.
Memming
@Memming Ya, saya menggunakan representasi bag-of-words. Apa yang Anda maksud dengan ukuran kesamaan? Saya sedang menyelidiki apakah suatu halaman web berisi beberapa jenis informasi spesifik atau tidak.
pemistahl
Anda mungkin menemukan tutorial ini berguna jika Anda belum memeriksanya ( csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf ). Libsvm memiliki skema validasi silang k-fold bawaan untuk memilih antara model dan parameter model.
Zoran
@PeterStahl Juga, itu tergantung pada batas kelas seperti apa yang Anda harapkan. Saya tidak punya pengalaman dengan ruang kata-kata, jadi saya tidak bisa banyak membantu Anda.
Memming

Jawaban:

10

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.

Kyle.
sumber
Terima kasih banyak atas pemikirannya. Maaf atas reaksi saya yang terlambat. Saya sedang menulis tesis master saya saat ini di mana saya perlu mengevaluasi hasil untuk beberapa pengklasifikasi, tidak hanya SVM. Sayangnya, saya tidak punya waktu untuk menguji banyak kombinasi parameter. Itu sebabnya saya mungkin akan tetap menggunakan kernel linier.
pemistahl
Semoga berhasil! Saya pikir itu panggilan yang bagus.
Kyle.
7

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).

flxb
sumber