Metode kernel dapat digunakan untuk masalah yang diawasi dan tidak terawasi. Contoh-contoh yang terkenal adalah mesin vektor dukungan dan clustering kernel kernel , masing-masing.
Metode kernel menyediakan cara terstruktur untuk menggunakan algoritma linier dalam ruang fitur yang ditransformasikan, yang transformasi biasanya nonlinier (dan ke ruang dimensi yang lebih tinggi). Keuntungan utama yang disebut oleh trik kernel ini adalah bahwa pola nonlinier dapat ditemukan dengan biaya komputasi yang masuk akal .
Perhatikan bahwa saya mengatakan biaya komputasi itu wajar, tetapi tidak dapat diabaikan. Metode kernel biasanya membangun matriks kernel dengan jumlah instance pelatihan. Kompleksitas metode kernel karena itu merupakan fungsi dari jumlah instance pelatihan, bukan jumlah dimensi input. Mesin pendukung vektor, misalnya, memiliki kompleksitas pelatihan antara dan . Untuk masalah dengan sangat besar , kompleksitas ini saat ini menjadi penghalang. N O ( N 2 ) O ( N 3 ) NK ∈ RN× NNO ( N2)O ( N3)N
Ini membuat metode kernel sangat menarik dari perspektif komputasi ketika jumlah dimensi besar dan jumlah sampel relatif rendah (katakanlah, kurang dari 1 juta).
Terkait: Kernel linear dan kernel non-linear untuk mesin vektor dukungan?
SVM untuk Masalah Skala Besar
Untuk masalah dimensi yang sangat tinggi, seperti 10000
dimensi yang Anda sebutkan dalam pertanyaan, seringkali tidak perlu memetakan ke ruang fitur dimensi yang lebih tinggi. Ruang input sudah cukup baik. Untuk masalah seperti itu, metode linier adalah urutan besarnya lebih cepat dengan kinerja prediksi yang hampir sama. Contoh metode ini dapat ditemukan di LIBLINEAR atau Vowpal Wabbit .
Metode linear sangat menarik ketika Anda memiliki banyak sampel dalam ruang input dimensi tinggi. Bila Anda hanya memiliki sampel, menggunakan metode kernel nonlinier juga akan murah (karena kecil). Jika Anda memiliki, katakanlah, sampel dalam dimensi, metode kernel tidak mungkin dilakukan.N 5.000.000 10.000500N5.000.00010.000
Untuk masalah dimensi rendah dengan banyak contoh pelatihan (disebut masalah besar kecil ), metode linier dapat menghasilkan akurasi prediksi yang buruk. Untuk masalah seperti itu, metode ensemble seperti EnsembleSVM memberikan batas keputusan nonlinier dengan biaya komputasi yang berkurang secara signifikan dibandingkan dengan SVM standar.pNhal
RBF
kernellibsvm
, itu selalu overfitting, classifier mencapai akurasi tinggi tetapi akurasi rendah di set pengujian. Dan jika saya melakukan pengurangan dimensi sebelum pengklasifikasi, dan dimensi yang dikurangi mendekati jumlah sampel pelatihan, pengklasifikasi mungkin mencapai keuntungan yang baik antara pelatihan dan set pengujian. Apakah hasilnya sesuai dengan sebagian besar hasil empiris? Terima kasih.gamma
untuk kernel RBF. Nilai optimal untukgamma
terkait dengan jumlah dimensi input. Pendekatan tuning yang paling umum adalah cross-validation. Jika Anda menggunakan nilai yang sama untukgamma
dengan dan tanpa pengurangan dimensi Anda mungkin membuat kesalahan.grid.py
dalamlibsvm
untuk melakukan cross-validation. Dan di sebagian besar keadaan, untuk data dimensi tinggi,gamma
selalu sangat kecil, seperti0.00001
, level ini.EnsembleSVM
, apakah perlu membuat prosedur cross-validasi multithreading? Dan saya pikir pada tahap prediksi, akan baik jika memprediksi data besar dalam batch dan multithreading atau multi mesin?esvm-train
danesvm-predict
. Untuk multithreading menonaktifkan, menggunakan bendera berikut dalam alat tersebut:-threads 1
.