Anda di halaman 1dari 11

Praktik Pertemuan 5

Support Vector Machine Classifier

Contoh kernel Radial Basis Function (RBF) dan kode Python:


RBF adalah kernel default yang digunakan dalam algoritme klasifikasi SVM sklearn
dan dapat didefinisikan dengan rumus berikut:

dimana gamma dapat diatur secara manual dan harus >0. Nilai default untuk gamma
dalam algoritme klasifikasi SVM sklearn adalah:

Keterangan:

||x - x'||² adalah jarak Euclidean kuadrat antara dua vektor fitur
(2 titik).

Gamma adalah skalar yang menentukan seberapa besar pengaruh yang


dimiliki satu contoh (titik) pelatihan.

Jadi, dengan pengaturan di atas, kita dapat mengontrol pengaruh titik individu pada
algoritma secara keseluruhan. Semakin besar gamma, semakin dekat titik lain untuk
mempengaruhi model. Kita akan melihat dampak dari perubahan nilai gamma dalam contoh
Python di bawah ini.

Setup:
Kita akan menggunakan data dan pustaka berikut:
 Data permainan catur dari Kaggle yang dapat diunduh pada link berikut:
https://www.kaggle.com/datasnaek/chess. Anda juga dapat mengunduhnya pada
Elena dengan nama file games.csv
 Library Scikit-learn untuk membagi data menjadi sampel train-test, membuat model
klasifikasi SVM, dan evaluasi model
 Plotly untuk visualisasi data
 Pandas dan Numpy untuk manipulasi data

Catatan: jika pustaka-pustaka tersebut belum tersedia dalam pustaka Python Anda, gunakan
perintah pip install namapustaka kemudian run untuk melakukan instalasi.

Misal: pip install plotly lalu klik run

Selanjutnya, impor semua pustaka yang dibutuhkan:

Kemudian kita gunakan data permainan catur dari Kaggle, yang dapat Anda unduh melalui
tautan ini: https://www.kaggle.com/datasnaek/chess

Data tersebut memiliki atribut-atribut sebagai berikut:

 Game ID;
 Rated (T/F);
 Start Time;
 End Time;
 Number of Turns;
 Game Status;
 Winner;
 Time Increment;
 White Player ID;
 White Player Rating;
 Black Player ID;
 Black Player Rating;
 All Moves in Standard Chess Notation;
 Opening Eco (Standardised Code for any given opening);
 Opening Name;
 Opening Ply (Number of moves in the opening phase)

Setelah Anda menyimpan data di folder Anda, gunakan kode di bawah ini:

Output:

Sekarang, mari buat beberapa fungsi untuk digunakan kembali saat membuat model
yang berbeda dan merencanakan hasilnya.
Fungsi pertama ini akan membagi data menjadi sampel latih dan uji, menyesuaikan
model, memprediksi hasil pada set pengujian, dan menghasilkan metrik evaluasi kinerja
model.

Fungsi berikut akan menggambarkan grafik pencar 3D Plotly dengan data pengujian
dan permukaan prediksi model.
Buat model dengan nilai default untuk C dan Gamma
Mari kita buat model SVM menggunakan kolom 'rating_difference' dan 'turning'
sebagai variabel independen (atribut / prediktor) dan flag 'white_win' sebagai target kita.

Karena kita sudah menggunakan fungsi 'fitting' yang didefinisikan sebelumnya,


kodenya akan lebih pendek:
Fungsi akan mencetak metrik evaluasi model berikut:

Kita dapat melihat bahwa performa model pada data pengujian mirip dengan data
pelatihan, yang memberikan kepastian bahwa model dapat digeneralisasi dengan baik
menggunakan hyperparameter default.

Sekarang mari kita visualisasikan prediksi hanya dengan memanggil fungsi Plot_3D:
Perhatikan, titik hitam di atas adalah kelas aktual = 1 (putih menang), dan yang di
bawah adalah kelas aktual = 0 (putih tidak menang). Sementara itu, permukaan adalah
probabilitas kemenangan putih yang dihasilkan oleh model.

Meskipun ada variasi lokal dalam probabilitas, batas keputusan terletak di sekitar x
= 0 (yaitu, perbedaan peringkat = 0) karena di sinilah probabilitas melintasi batas p = 0,5.

Model SVM 2 - Gamma = 0,1


Sekarang mari kita lihat apa yang terjadi jika kita menetapkan nilai gamma yang
relatif tinggi.
Kita dapat melihat bahwa peningkatan gamma telah menghasilkan performa model
yang lebih baik pada data pelatihan tetapi performa yang lebih buruk pada data pengujian.
Grafik di bawah membantu kita melihat dengan tepat mengapa demikian.
Bukannya memiliki permukaan prediksi yang mulus seperti sebelumnya, sekarang
kita memiliki permukaan prediksi yang sangat "tajam". Untuk memahami mengapa ini
terjadi, kita perlu mempelajari fungsi kernel lebih dekat.

Saat kita memilih gamma tinggi, kita memberitahukan kepada fungsi bahwa titik
dekat lebih penting untuk prediksi daripada titik yang lebih jauh. Karenanya, kita
mendapatkan "lonjakan" karena prediksi sangat bergantung pada titik individu dari contoh
pelatihan daripada apa yang ada di sekitarnya.

Di sisi lain, pengurangan gamma memberi tahu fungsi bahwa bukan hanya titik
individu tetapi juga titik di sekitarnya juga penting saat membuat prediksi. Untuk
memverifikasi ini, mari kita lihat contoh lain dengan nilai gamma yang relatif rendah.
Model SVM 3— Gamma = 0,000001
Mari kita jalankan kembali fungsinya:

Seperti yang diharapkan, pengurangan gamma membuat model lebih kuat dengan
peningkatan performa model pada data pengujian (akurasi = 0,66). Grafik di bawah
mengilustrasikan seberapa mulus permukaan prediksi setelah memberikan pengaruh yang
lebih besar ke titik-titik yang letaknya lebih jauh.

Anda mungkin juga menyukai