• Tidak ada hasil yang ditemukan

Mesin Vektor Dukungan Kernelized

BAB I PENGANTAR

BAB 2 PEMBELAJARAN TERAWASI

2.10 Mesin Vektor Dukungan Kernelized

Jenis model terawasi berikutnya yang akan kita bahas adalah mesin vektor pendukung kernel. Kami mengeksplorasi penggunaan mesin vektor pendukung linier untuk klasifikasi dalam “Model linier untuk klasifikasi” di halaman 56. Mesin vektor pendukung berkernel (sering disebut sebagai SVM) adalah ekstensi yang memungkinkan model yang lebih kompleks yang tidak didefinisikan secara sederhana oleh hyperplanes di ruang input. Meskipun ada mesin vektor pendukung untuk klasifikasi dan regresi, kami akan membatasi diri pada kasus klasifikasi, seperti yang diterapkan di SVC. Konsep serupa berlaku untuk mendukung regresi vektor, seperti yang diterapkan di SVR.

Matematika di balik mesin vektor dukungan kernel sedikit terlibat, dan berada di luar cakupan buku ini. Anda dapat menemukan detailnya di Bab 1 dari Hastie, Tibshirani, dan The Elements of Statistical Learning karya Friedman. Namun, kami akan mencoba memberi Anda gambaran tentang ide di balik metode ini.

Model linier dan fitur nonlinier

Seperti yang Anda lihat pada Gambar 2-15, model linier bisa sangat membatasi ruang dimensi rendah, karena garis dan hyperplane memiliki fleksibilitas terbatas. Salah satu cara untuk membuat model linier lebih fleksibel adalah dengan menambahkan lebih banyak fitur—

misalnya, dengan menambahkan interaksi atau polinomial dari fitur input.

Mari kita lihat kumpulan data sintetik yang kita gunakan di “Kepentingan fitur dalam pohon”

di halaman 77 (lihat Gambar 2-39):

Gambar 2.36 Dataset klasifikasi dua kelas di mana kelas tidak dapat dipisahkan secara linier Model linier untuk klasifikasi hanya dapat memisahkan titik menggunakan garis, dan tidak akan dapat melakukan pekerjaan yang sangat baik pada kumpulan data ini (lihat Gambar 2.37):

Sekarang mari kita perluas kumpulan fitur input, misalnya dengan menambahkan fitur1 ** 2, kuadrat dari fitur kedua, sebagai fitur baru. Alih-alih mewakili setiap titik data sebagai titik dua dimensi, (fitur0, fitur1), sekarang kita merepresentasikannya sebagai titik tiga dimensi, (fitur0, fitur1, fitur1 ** 2).10 Representasi baru ini diilustrasikan dalam Gambar 2.38 dalam plot sebar tiga dimensi:

Gambar 2.37 Batas keputusan ditemukan oleh SVM linier

Gambar 2.38 Perluasan dataset yang ditunjukkan pada Gambar 2.37, dibuat dengan menambahkan fitur ketiga yang berasal dari fitur1

Dalam representasi data yang baru, sekarang memang dimungkinkan untuk memisahkan dua kelas menggunakan model linier, bidang tiga dimensi. Kami dapat mengkonfirmasi ini dengan memasang model linier ke data yang ditambah (lihat Gambar 2.39):

Gambar 2.39 Batas keputusan yang ditemukan oleh SVM linier pada kumpulan data tiga dimensi yang diperluas

Sebagai fungsi dari fitur asli, model SVM linier sebenarnya tidak linier lagi. Ini bukan garis, tetapi lebih seperti elips, seperti yang Anda lihat dari plot yang dibuat di sini (Gambar 2.40):

Trik kernel

Pelajaran di sini adalah bahwa menambahkan fitur nonlinier ke representasi data kami dapat membuat model linier jauh lebih kuat. Namun, seringkali kita tidak tahu fitur mana yang harus ditambahkan, dan menambahkan banyak fitur (seperti semua kemungkinan interaksi dalam ruang fitur 100 dimensi) mungkin membuat komputasi menjadi sangat mahal.

Untungnya, ada trik matematika cerdas yang memungkinkan kita mempelajari pengklasifikasi dalam ruang dimensi yang lebih tinggi tanpa benar-benar menghitung representasi baru yang mungkin sangat besar. Ini dikenal sebagai trik kernel, dan bekerja dengan menghitung secara langsung jarak (lebih tepatnya, produk skalar) dari titik data untuk representasi fitur yang diperluas, tanpa pernah benar-benar menghitung ekspansi.

Gambar 2.40 Batas keputusan dari Gambar 2.39 sebagai fungsi dari dua fitur asli Ada dua cara untuk memetakan data Anda ke dalam ruang berdimensi lebih tinggi yang biasanya digunakan dengan mesin vektor pendukung: kernel polinomial, yang menghitung semua polinomial yang mungkin hingga derajat tertentu dari fitur asli (seperti fitur1 **2 * fitur2 ** 5); dan kernel fungsi basis radial (RBF), juga dikenal sebagai kernel Gaussian. Kernel Gaussian sedikit lebih sulit untuk dijelaskan, karena sesuai dengan ruang fitur dimensi tak terbatas. Salah satu cara untuk menjelaskan kernel Gaussian adalah dengan mempertimbangkan semua polinomial yang mungkin dari semua derajat, tetapi pentingnya fitur berkurang untuk derajat yang lebih tinggi.

Namun, dalam praktiknya, detail matematis di balik kernel SVM tidak begitu penting, dan bagaimana SVM dengan kernel RBF membuat keputusan dapat diringkas dengan cukup mudah—kita akan melakukannya di bagian berikutnya.

Memahami SVM

Selama pelatihan, SVM mempelajari betapa pentingnya setiap titik data pelatihan untuk mewakili batas keputusan antara dua kelas. Biasanya hanya sebagian dari poin pelatihan yang penting untuk mendefinisikan batas keputusan: yang terletak di perbatasan antara kelas. Ini disebut support vector dan beri nama mesin support vector tersebut.

Untuk membuat prediksi untuk titik baru, jarak ke masing-masing vektor pendukung diukur. Keputusan klasifikasi dibuat berdasarkan jarak ke vektor pendukung, dan pentingnya vektor pendukung yang dipelajari selama pelatihan (disimpan dalam atribut dual_coef_ dari SVC). Jarak antara titik data diukur dengan kernel Gaussian:

Di sini, x1 dan x2 adalah titik data, |x1 - x2| menunjukkan jarak Euclidean, dan ɣ (gamma) adalah parameter yang mengontrol lebar kernel Gaussian.

Gambar 2.41 menunjukkan hasil pelatihan mesin vektor pendukung pada dataset kelas dua dimensi. Batas keputusan ditampilkan dalam warna hitam, dan vektor pendukung adalah titik yang lebih besar dengan garis besar yang lebar. Kode berikut membuat plot ini dengan melatih SVM pada dataset forge:

Gambar 2.41 Batas keputusan dan vektor dukungan yang ditemukan oleh SVM dengan kernel RBF

Dalam hal ini, SVM menghasilkan batas yang sangat halus dan nonlinier (bukan garis lurus). Kami menyesuaikan dua parameter di sini: parameter C dan parameter gamma, yang sekarang akan kita bahas secara rinci.

Menyetel parameter SVM

Parameter gamma adalah yang ditunjukkan dalam rumus yang diberikan di bagian sebelumnya, yang mengontrol lebar kernel Gaussian. Ini menentukan skala dari apa artinya

poin menjadi berdekatan. Parameter C adalah parameter regularisasi, mirip dengan yang digunakan dalam model linier. Ini membatasi pentingnya setiap poin (atau lebih tepatnya, dual_coef_ mereka).

Mari kita lihat apa yang terjadi ketika kita memvariasikan parameter ini (Gambar 2.42):

Gambar 2.42 Batas keputusan dan vektor pendukung untuk pengaturan yang berbeda dari parameter C dan gamma

Dari kiri ke kanan, kami meningkatkan nilai parameter gamma dari 0,1 menjadi 10.

Gamma kecil berarti radius besar untuk kernel Gaussian, yang berarti banyak titik dianggap berdekatan. Hal ini tercermin dalam batas-batas keputusan yang sangat halus di sebelah kiri, dan batas-batas yang lebih fokus pada satu titik lebih jauh ke kanan. Nilai gamma yang rendah berarti batas keputusan akan bervariasi secara perlahan, yang menghasilkan model dengan kompleksitas rendah, sedangkan nilai gamma yang tinggi menghasilkan model yang lebih kompleks.

Dari atas ke bawah, kami meningkatkan parameter C dari 0,1 menjadi 1000. Seperti pada model linier, C kecil berarti model yang sangat terbatas, di mana setiap titik data hanya dapat memiliki pengaruh yang sangat terbatas. Anda dapat melihat bahwa di kiri atas batas

keputusan terlihat hampir linier, dengan titik-titik yang salah diklasifikasikan hampir tidak memiliki pengaruh pada garis. Meningkatkan C, seperti yang ditunjukkan di kanan bawah, memungkinkan titik-titik ini memiliki pengaruh yang lebih kuat pada model dan membuat batas keputusan ditekuk untuk mengklasifikasikannya dengan benar.

Mari kita terapkan kernel RBF SVM ke dataset Kanker Payudara. Secara default, C=1 dan gamma=1/n_features:

Model overfits cukup substansial, dengan skor sempurna pada set pelatihan dan akurasi hanya 63% pada set tes. Meskipun SVM sering kali berkinerja cukup baik, mereka sangat sensitif terhadap pengaturan parameter dan penskalaan data. Secara khusus, mereka membutuhkan semua fitur untuk bervariasi pada skala yang sama. Mari kita lihat nilai minimum dan maksimum untuk setiap fitur, diplot dalam log-space (Gambar 2.43):

Dari plot ini kita dapat menentukan bahwa fitur dalam kumpulan data Kanker Payudara memiliki urutan besarnya yang sangat berbeda. Ini bisa menjadi masalah untuk model lain (seperti model linier), tetapi memiliki efek yang menghancurkan untuk kernel SVM.

Mari kita periksa beberapa cara untuk menangani masalah ini.

Gambar 2.43 Rentang fitur untuk dataset Kanker Payudara (perhatikan bahwa sumbu y memiliki skala logaritmik)

Memproses data untuk SVM

Salah satu cara untuk mengatasi masalah ini adalah dengan menskalakan ulang setiap fitur sehingga semuanya kira-kira pada skala yang sama. Metode penskalaan ulang yang umum untuk SVM kernel adalah menskalakan data sedemikian rupa sehingga semua fitur berada di antara 0 dan 1. Kita akan melihat bagaimana melakukannya menggunakan metode prapemrosesan MinMaxScaler di Bab 3, di mana kita akan memberikan rincian lebih lanjut.

Untuk saat ini, mari lakukan ini "dengan tangan":

Menskalakan data membuat perbedaan besar! Sekarang kita sebenarnya berada dalam rezim yang kurang pas, di mana kinerja set pelatihan dan pengujian sangat mirip tetapi kurang mendekati akurasi 100%. Dari sini, kita dapat mencoba meningkatkan C atau gamma agar sesuai dengan model yang lebih kompleks. Sebagai contoh:

Di sini, meningkatkan C memungkinkan kami meningkatkan model secara signifikan, menghasilkan akurasi 97,2%.

Kekuatan, kelemahan, dan parameter

Mesin vektor dukungan kernel adalah model yang kuat dan berkinerja baik pada berbagai set data. SVM memungkinkan batasan keputusan yang kompleks, bahkan jika data hanya memiliki beberapa fitur. Mereka bekerja dengan baik pada data berdimensi rendah dan tinggi (yaitu, sedikit dan banyak fitur), tetapi tidak berskala sangat baik dengan jumlah sampel.

Menjalankan SVM pada data hingga 10.000 sampel mungkin bekerja dengan baik, tetapi bekerja dengan kumpulan data berukuran 100.000 atau lebih dapat menjadi tantangan dalam hal waktu proses dan penggunaan memori.

Kelemahan lain dari SVM adalah bahwa mereka memerlukan pra-pemrosesan data yang cermat dan penyetelan parameter. Inilah sebabnya mengapa, akhir-akhir ini, kebanyakan orang menggunakan model berbasis pohon seperti hutan acak atau peningkatan gradien (yang memerlukan sedikit atau tanpa pra-pemrosesan) di banyak aplikasi. Selain itu, model SVM sulit untuk diperiksa; mungkin sulit untuk memahami mengapa prediksi tertentu dibuat, dan mungkin sulit untuk menjelaskan model kepada orang yang tidak ahli.

Namun, mungkin ada baiknya mencoba SVM, terutama jika semua fitur Anda mewakili pengukuran dalam unit yang serupa (misalnya, semua adalah intensitas piksel) dan mereka berada pada skala yang sama.

Parameter penting dalam SVM kernel adalah parameter regularisasi C, pilihan kernel, dan parameter spesifik kernel. Meskipun kami terutama berfokus pada kernel RBF, pilihan lain tersedia di scikit-learn. Kernel RBF hanya memiliki satu parameter, gamma, yang merupakan kebalikan dari lebar kernel Gaussian. gamma dan C sama-sama mengontrol kompleksitas model, dengan nilai yang besar dalam keduanya menghasilkan model yang lebih kompleks.

Oleh karena itu, pengaturan yang baik untuk kedua parameter biasanya berkorelasi kuat, dan C dan gamma harus disesuaikan bersama.

Dokumen terkait