Haruskah saya menggunakan Trik Kernel bila memungkinkan untuk data non-linear?


13

Baru-baru ini saya belajar tentang penggunaan trik Kernel, yang memetakan data ke dalam ruang dimensi yang lebih tinggi dalam upaya untuk membuat linierisasi data dalam dimensi tersebut. Apakah ada kasus di mana saya harus menghindari menggunakan teknik ini? Apakah ini hanya masalah menemukan fungsi kernel yang tepat?

Untuk data linear ini tentu saja tidak membantu, tetapi untuk data non-linear, ini sepertinya selalu berguna. Menggunakan pengklasifikasi linier jauh lebih mudah daripada non-linear dalam hal waktu pelatihan dan skalabilitas.

Jawaban:


8

Untuk data linear ini tentu saja tidak membantu, tetapi untuk data non-linear, ini sepertinya selalu berguna. Menggunakan pengklasifikasi linier jauh lebih mudah daripada non-linear dalam hal waktu pelatihan dan skalabilitas.

@ BartoszKP sudah menjelaskan mengapa trik kernel bermanfaat. Untuk sepenuhnya menjawab pertanyaan Anda, namun saya ingin menunjukkan, bahwa kernelisasi bukan satu-satunya pilihan untuk menangani data yang tidak dapat dipisahkan secara linear.

Setidaknya ada tiga alternatif yang baik dan umum untuk deliniarisasi model:

  • Metode berbasis jaringan netral, tempat Anda menambahkan satu (atau lebih) lapisan unit pemrosesan, dapat mengubah data Anda menjadi kasing yang dapat dipisahkan secara linear. Dalam kasus paling sederhana itu adalah lapisan berbasis sigmoid, yang menambahkan non-linearitas ke proses. Setelah diinisialisasi secara acak mereka mendapatkan pembaruan selama optimasi berbasis gradien dari lapisan atas (yang sebenarnya memecahkan masalah linier).
  • Khususnya - teknik pembelajaran mendalam dapat digunakan di sini untuk menyiapkan data untuk klasifikasi linier lebih lanjut. Ini adalah ide yang sangat mirip dengan yang sebelumnya, tetapi di sini Anda pertama kali melatih lapisan pemrosesan Anda untuk menemukan titik awal yang baik untuk fine-tuning lebih lanjut berdasarkan pelatihan beberapa model linier.
  • Proyeksi acak - Anda dapat mengambil sampel proyeksi (non linier) dari beberapa ruang yang telah ditentukan dan melatih classifier linier di atasnya. Gagasan ini sangat dieksploitasi dalam pembelajaran mesin ekstrem , di mana solver linier yang sangat efisien digunakan untuk melatih pengelompokan sederhana pada proyeksi acak, dan mencapai kinerja yang sangat baik (pada masalah non linier dalam klasifikasi dan regresi, lihat contoh pembelajaran ekstrem mesin ).

Singkatnya - kernelisasi adalah teknik delinearisasi yang hebat, dan Anda dapat menggunakannya, ketika masalahnya tidak linier, tetapi ini tidak boleh buta "jika kemudian" appraoch. Ini hanyalah salah satu dari beberapa metode menarik, yang dapat menghasilkan berbagai hasil, tergantung pada masalah dan persyaratan. Secara khusus, ELM cenderung menemukan solusi yang sangat mirip dengan yang diberikan oleh kernel SVM sementara pada saat yang sama dapat dilatih baris-baris besarnya lebih cepat (sehingga skala jauh lebih baik daripada SVM kernel).


10

Harga yang Anda bayar untuk Kernel Trick secara umum, untuk metode linear, mengalami batas generalisasi yang lebih buruk. Untuk model linier, dimensi VC - nya juga linier dalam hal jumlah dimensi (mis. Dimensi VC untuk Perceptron adalah d + 1).

Sekarang, jika Anda akan melakukan transformasi non-linear yang kompleks ke ruang dimensi tinggi, dimensi VC set hipotesis Anda secara signifikan lebih besar, karena sekarang linear dalam hal jumlah dimensi dalam ruang baru, dimensi tinggi. Dan dengan itu, batas generalisasi naik.

Dukungan Mesin Vector mengeksploitasi Trik Kernel dengan cara yang paling efisien, dengan melakukan dua hal:


1
"juga linear dalam hal jumlah bobot" dalam hal dimensi ruang, bukan jumlah bobot. Anda dapat memiliki parameter classifier linier dengan bobot sebanyak yang Anda inginkan, tetapi dimensi VC-nya masih d +1 (di mana d adalah dimensi ruang). "Dimensi VC untuk model SVM terkait dengan jumlah Vektor Pendukung" Bagaimana tepatnya dimensi VC diperhitungkan dengan jumlah SV? Saya menyadari batas margin keras, tetapi afaik dalam soft margin case tidak ada hubungan seperti itu. Bahkan dalam batasan kompleksitas Radamacher Anda tidak akan menemukan jumlah SV sebagai variabel.
lejlot

Juga "jadi tidak relevan seberapa" besar "ruang target kernel, Anda tidak kehilangan apa pun dalam hal batasan generalisasi" sejauh yang saya tahu benar-benar salah. Ruang dimensi tinggi akan menyebabkan lepasnya kemampuan generalisasi, bahkan dengan model yang diatur secara kuat seperti SVM.
lejlot

1
@lejlot Terima kasih, memperbaiki dua kesalahan pertama. Saya perlu waktu untuk berhubungan dengan dua komentar terakhir Anda - Saya akan mencoba untuk meningkatkan jawabannya dan memberikan beberapa sumber, setelah saya periksa kembali informasi saya :)
BartoszKP

1
Sekarang hampir benar, tetapi apa alasan untuk asumsi, bahwa ukuran ruang kernel tidak relevan? Ambil dataset apa pun, jalankan SVM dengan RBF kernel dan C-> inf dan Anda akan berpakaian terlalu buruk. Ini tidak sesederhana itu. Jumlah dimensi dalam ruang fitur relevan , namun dapat dikontrol dengan C (sebagai batas atas pengganda lagrange). Secara khusus - dimensi VC untuk SVM dengan RBF adalah tak terbatas, dan batas generalisasi (Vapnik) tidak berguna (Radamacher dapat bekerja tetapi ini adalah cerita yang berbeda).
lejlot

1
@lejlot Saya telah memberikan referensi lain - mereka memberikan batasan untuk soft-margin case secara eksplisit, dan itu tidak tergantung pada jumlah dimensi.
BartoszKP

6

Saya akan mencoba memberikan jawaban non-teknis untuk pertanyaan Anda.

Memang, linear harus lebih disukai dan harus menjadi pilihan pertama karena alasan yang Anda sebutkan, waktu pelatihan, skalabilitas, ditambah kemudahan dalam menafsirkan model akhir, pilihan bekerja pada primal atau ganda, lebih banyak toleransi untuk overfitting dll.

Jika model linier tidak menghasilkan kinerja yang memuaskan, maka Anda dapat mencoba solusi non-linear. Beberapa trade-off yang perlu dipertimbangkan termasuk:

  • pilihan kernel. Ini tidak jelas, biasanya Anda perlu menguji opsi yang berbeda
  • ada bahaya overfitting set pelatihan. Sebenarnya cukup mudah untuk berpakaian jika Anda mau. Untuk menghindari overfitting, Anda memerlukan kerangka evaluasi yang lebih kuat (Anda perlu mengukur varians / stabilitas kinerja pada data yang tidak terlihat) dan Anda membutuhkan data yang cukup untuk dapat melakukan pemilihan model yang tepat.
  • Anda bekerja pada dua, dan dengan demikian Anda tidak dapat menafsirkan model terakhir, yaitu, Anda tidak dapat mengklaim bahwa fitur X lebih penting daripada fitur Y dll.
  • waktu pelatihan ditingkatkan dengan volume data (lebih sedikit dengan jumlah fitur karena ada dalam dual)

Itu adalah wawasan yang menarik tentang "bekerja dengan ganda" yang mengarah pada ketidakmampuan untuk mengklaim kepentingan fitur. Apakah Anda memiliki referensi untuk menjelaskan materi lebih lanjut?
javadba
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.