Support Vector Machine Pada Kelas Biner Untuk Penjurusan SMA Menggunakan Matlab
Table of Contents
Sebelum belajar teori-teori data mining, metode support vector machine (SVM) adalah metode yang cukup asing bagi saya. Namun, setelah mengenal lebih dekat, ternyata SVM adalah metode yang mudah dan juga berkelas. Oleh karena itu, saya coba untuk membahas SVM dan penerapannya pada Matlab agar teman-teman yang ingin mengenal SVM memiliki tembahan referensi belajar.
Support Vector Machine merupakan metode klasifikasi jenis terpandu (supervised) karena ketika proses pelatihan, dibutuhkan target pembelajaran tertentu. SVM merupakan algoritma yang bekerja menggunakan menggunakan pemetaan non-linear untuk mengubah data pelatihan asli ke dimensi yang lebih tinggi. Dalam hal ini, dimensi baru akan mencari hyperplane untuk memisahkan secara linear dan dengan pemetaan non-linear yang tepat ke dimensi yang cukup tinggi. Data dari dua kelas selalu dapat dipisahkan dengan hyperplane tersebut. Nah, SVM akan menemukan hyperplane ini menggunakan support vector dan margin.
Meskipun waktu pelatihan SVM tergolong lambat, namun metode ini sangat akurat. Keakuratannya disebabkan oleh kemampuannya untuk menangani model-model non-linear yang kompleks. SVM kurang rentan terhadap overfitting dibandingkan dengan metode lainnya. SVM sangat bermanfaat untuk prediksi dan klasifikasi. Contoh penerapannya adalah deteksi tulisan tangan, pengenalan obyek, identifikasi suara, dan lain sebagainya.
Secara garis besar, kasus data yang dapat ditangani oleh SVM terbagi menjadi dua pokok bahasan, yaitu kasus data yang terpisah secara linear dan kasus data yang tidak terpisah secara linear.
Saya menyarankan teman-teman membaca teori support vector machine pada referensi lain yang memang mumpuni dalam menjelaskan. Karena saya hanya menjelaskan sekelumit teori saja, maka lebih baik langsung saya pratikkan implementasinya pada Matlab.
Saya memiliki studi kasus berupa penerapan data mining, yaitu kasus penjurusan siswa SMA. Dalam praktiknya, metode SVM terbagi menjadi dua kasus besar, yaitu kasus kelas biner (dua kelas), maupun kasus kelas jamak (multiclass). Kali ini saya akan menjelaskan penerapan kasus penjurusan siswa SMA menggunakan metode SVM untuk dua kelas. Mengenai kasus kelas jamak, akan saya jabarkan pada posting terpisah.
Sebagaimana yang kita tahu, penjurusan SMA adalah penentuan bidang keminatan bagi siswa kelas X, apakah condong ke IPA, IPS atau Bahasa. Berarti secara umum, penjurusan SMA terbagi menjadi 3 kelas (IPA, IPS dan Bahasa). Namun jika kita menggunakan metode SVM kelas biner, maka bidang penjurusan akan kita pilah hanya menjadi dua kelas, yaitu kelas IPA dan kelas IPS saja.
Penentuan siswa lolos ke jurusan IPA atau IPS didasarkan pada rata-rata nilai yang didapatkan waktu kelas X, yaitu nilai IPA dan IPS. Berikut, data rata-rata nilai IPA dan IPS yang saya buat sebagai data sampel. Dalam implementasi nyata, saya harap teman-teman memakai data valid berupa data yang berjumlah besar (big data) agar menghasilkan aplikasi yang benar-benar akurat.
Pindahkan data excel diatas pada file notepad, pisahkan file notepad untuk data nilai dan data target. Masing-masing disimpan dalam ekstensi .dat agar dapat dikenali oleh matlab. Tempat penyimpanannya adalah directory tempat kita merancang program SVM untuk matlab. Berikut ini adalah file notepad untuk nilai.
Setelah itu buat file notepad untuk target. Target bernilai 0 apabila dinyatakan lolos ke jurusan IPA dan bernilai 1 apabila lolos ke jurusan IPS
Data klasisifikasi untuk nilai IPA dan IPS |
Data Target |
Langkah selanjutnya adalah buka Matlab teman-teman dan load data notepad tadi ke commad window matlab, seperti ini :
Langkah pamungkas kita selanjutnya adalah membuat persamaan Support Vector Machine yang telah disediakan oleh Matlab berupa fungsi dengan nama svmtrain. Fungsi ini dapat kita gunakan sesuai dengan keperluan kita. Yuhu,,,
Saya membuat variabel baru bernama App_SVM untuk menampung perhitungan fungsi svmtrain. fungsi svmtrain memiliki beberapa parameter, yakni training, itu file nilai dan target adalah file target. 'showplot',true adalah untuk menampilkan pemisah linear berupa garis lurus.
Jika tidak ada pesan kesalahan, maka muncul hasil plot grafik seperti berikut :
Load Data Nilai dan Target |
Saya membuat variabel baru bernama App_SVM untuk menampung perhitungan fungsi svmtrain. fungsi svmtrain memiliki beberapa parameter, yakni training, itu file nilai dan target adalah file target. 'showplot',true adalah untuk menampilkan pemisah linear berupa garis lurus.
Fungsi svmtrain pada Matlab |
SVM sukses kita bangun menggunakan matlab, selanjutnya akan kita uji coba kinerjanya. Saya buat sebuah variabel baru bernama penjurusan, untuk menampung 2 buah nilai, yaitu nilai IPA dan IPS yang berangka 9, harapannya sistem akan memutuskan bahwa hasil penjurusan adalah lolos ke jurusan IPA. Sesuai dengan contoh logika penjurusan pada data pelatihan dan targetnya.
Uji Coba SVM |
Ternyata hasil uji coba SVM sesuai dengan harapan. Menampilkan hasil berupa angka 0 yang bermakna IPA. Untuk pengembangan GUI akan saya jelaskan setelah ini. Sebelum itu, simpan dulu hasil implementasi SVM diatas menjadi sebuah file .mat, agar dapat kita panggil sewaktu-waktu.
semua proses sebelumnya, termasuk variabel dan proses training klasifikasi SVM akan tersimpan dengan nama prosesTraining.mat. Otomatis akan masuk dalam directory tempat penyimpanan program.
Sekarang saatnya utak-atik GUI. Buka editor GUI Matlab teman-teman, racik desain program sedemikian rupa sesuai dengan kebutuhan proses, input data dan output data. Kebutuhan input adalah input nilai IPA dan nilai IPS. Kebutuhan proses adalah button proses dan kebutuhan output adalah menampilkan hasil penjurusan.
Pada rancangan diatas, text field untuk input nilai IPA saya namakan ipa, untuk text field input IPS saya namakan ips, text field untuk output penurusan saya namakan dengan hasil. Lantas saya tulis source code berikut didalam fungsi button Hasil :
Saya kira kode-kode diatas mudah untuk dipahami karena algoritmanya sama persis seperti yang saya jelaskan diatas. Setelah itu, coba kita run programnya untuk pengujian, apakah sudah berjalan dengan semestinya atau belum.
Program sudah berjalan, tinggal kita masukkan input nilai IPA dan IPS, biar program yang memutuskan apakah siswa dengan nilai tersebut layak mendapatkan jurusan IPA maupun IPS.
Yup, GUI program telah berhasil sempurna hingga dapat memutuskan sesuai harapan menggunakan metode SVM untuk kelas biner. Jika teman-teman belum mengerti mengenai beberapa hal yang saya bahas disini, silakan ditanyakan ya...
Sebagai tambahan bahan belajar, saya uploadkan project yang telah saya kerjakan diatas melalui link download berikut :
Selamat mencoba, semoga jabaran saya bermanfaat bagi teman-teman. Sekian dan terima kasih
Salam Hangat
Referensi :
- Penerapan Data Mining dengan Matlab oleh Prabowo, Rahmadya dan Herlawati
- rahmadya.com
Pak saya mau tanya, saya membandingkan 2 jenis penyakit dengan melihat nilai 4 ekstraksi fitur citra penyakit. tetapi kenapa hasil klasifikasinya tiap fiturnya, jadi hasil keluarannya terdiri dari 4 output (sesuai jumlah fiturnya). gimana ya supaya outputnya hanya 1 (penyakit A/penyakit B).