Support Vector Machine
Ide dasar Support Vector Machine (SVM) adalah memaksimalkan batas hyperplane (maximal margin hyperplane), seperti yang diilustrasikan pada Gambar 2.1 (a) ada sejumlah pilihan hyperplane yang mungkin untuk set data, dan 2.1 (b) merupakan hyperplane dengan margin yang paling maksimal. Meskipun 2.1 (a) sebenarnya juga bisa menggunakan hyperplane sembarang, hyperplane dengan margin yang maksimal akan memberi generalisasi yang lebih baik pada metode klasifikasi.
Konsep klasifikasi dengan SVM dapat dijelaskan secara sederhana sebagai usaha untuk mencari hyperplane terbaik yang berfungsi sebagai pemisah dua buah kelas data pada ruang input (Nugroho, 2007). Gambar 2.1 memperlihatkan beberapa pola yang merupakan anggota dari dua buah kelas data: +1 dan -1. Data yang tergabung pada kelas -1 disimbolkan dengan bentuk lingkaran, sedangkan data pada kelas +1 disimbolkan dengan bentuk bujur sangkar.
Hyperplane (batas keputusan) pemisah terbaik antara kedua kelas dapat ditemukan dengan mengukur margin hyperplane tersebut dan mencari titik maksimalnya. Margin adalah jarak antara hyperplane tersebut dengan data terdekat dari masing-masing kelas. Data yang paling dekat ini disebut support vector. Garis solid pada Gambar 2.1 (b) sebelah kanan menunjukkan hyperplane terbaik, yaitu yang terletak tepat pada tengah-tengah kedua kelas, sedangkan data lingkaran dan bujur sangkar yang dilewati garis batas margin (garis putus-putus) adalah support vector. Usaha untuk mencari lokasi hyperplane ini merupakan inti dari proses pelatihan pada SVM.
Berikut ini merupakan contoh aplikasi pemrograman matlab untuk mengklasifikasi bentuk objek dalam suatu citra. Pada contoh ini, bentuk yang diklasifikasikan adalah bentuk lingkaran dan bentuk hati. Masing-masing bentuk tersebut kemudian diekstraksi cirinya berdasarkan parameter metric dan eccentricity. Metric merupakan nilai perbandingan antara luas dan keliling objek. Sedangkan eccentricity merupakan nilai perbandingan antara jarak foci ellips minor dengan foci ellips mayor suatu objek. (Materi mengenai ekstraksi ciri citra dapat dilihat pada halaman berikut: Ekstraksi Ciri). Langkah-langkah klasifikasi bentuk objek menggunakan algoritma Support Vector Machine yaitu:
1. Mempersiapkan data latih untuk pelatihan, pada proses ini digunakan 30 citra yang terdiri dari 15 citra dengan objek berbentuk lingkaran dan 15 citra dengan objek berbentuk hati.
2. Mempersiapkan data uji untuk pengujian, pada proses ini digunakan 10 citra yang terdiri dari 5 citra dengan objek berbentuk lingkaran dan 5 citra dengan objek berbentuk hati.
3. Mengekstraksi ciri bentuk pada citra data latih berdasarkan parameter metric dan eccentricity
clc;clear;close all; image_folder = 'Pattern Recognition\data latih'; filenames = dir(fullfile(image_folder, '*.gif')); total_images = numel(filenames); area = zeros(1,total_images); perimeter = zeros(1,total_images); metric = zeros(1,total_images); eccentricity = zeros(1,total_images); for n = 1:total_images full_name = fullfile(image_folder, filenames(n).name); our_images = logical(imread(full_name)); our_images = bwconvhull(our_images,'objects'); stats = regionprops(our_images,'Area','Perimeter','Eccentricity'); area(n) = stats.Area; perimeter(n) = stats.Perimeter; metric(n) = 4*pi*area(n)/(perimeter(n)^2); eccentricity(n) = stats.Eccentricity; trainset = [metric;eccentricity]'; end
4. Nilai metric dan eccentricity yang telah diekstrak kemudian digunakan sebagai data masukan dalam proses pelatihan SVM. Pada contoh ini, nilai metric digunakan sebagai sumbu-x, sedangkan nilai eccentricity digunakan sebagai sumbu-y. Kernel SVM yang digunakan adalah kernel linier.
% prepare class label for first run of svm class=cell(30,1); class(1:15,1)={'Circle'}; class(16:30,1)={'Heart'}; % perform run of svm figure, SVMModel = fitcsvm(trainset,class); sv = SVMModel.SupportVectors; gscatter(trainset(:,1),trainset(:,2),class) grid on hold on plot(sv(:,1),sv(:,2),'ko','MarkerSize',10) legend('circle','heart','Support Vector') hold off xlabel('Metric') ylabel('Eccentricity') save SVMModel.mat SVMModel
5. Sehingga hasil dari proses pelatihan adalah sebagai berikut
6. Setelah dilakukan proses pelatihan, maka diperoleh hyperplane grafik antara metric dan eccentricity. Pada grafik di atas, tampak bahwa hyperplane mampu untuk memisahkan dua kelas (lingkaran dan hati) dengan akurasi 100% (tidak ada data yang berada pada kelas yang salah). Hyperplane tersebut kemudian digunakan sebagai garis pemisah untuk mengklasifikasi pada proses pengujian. Pemrograman untuk proses pengujian yaitu:
clc;clear;close all; image_folder = 'Pattern Recognition\data uji'; filenames = dir(fullfile(image_folder, '*.gif')); total_images = numel(filenames); area = zeros(1,total_images); perimeter = zeros(1,total_images); metric = zeros(1,total_images); eccentricity = zeros(1,total_images); for n = 1:total_images full_name = fullfile(image_folder, filenames(n).name); our_images = logical(imread(full_name)); our_images = bwconvhull(our_images,'objects'); stats = regionprops(our_images,'Area','Perimeter','Eccentricity'); area(n) = stats.Area; perimeter(n) = stats.Perimeter; metric(n) = 4*pi*area(n)/(perimeter(n)^2); eccentricity(n) = stats.Eccentricity; testset = [metric;eccentricity]'; end load SVMModel Group = predict(SVMModel,testset)
7. Sehingga dihasilkan kelas keluaran berikut ini:
8. Kelas keluaran tersebut 100% sesuai dengan kelas keluaran pada data uji sebenarnya, sehingga proses pengenalan pola bentuk lingkaran dan hati menggunakan algoritma SVM menghasilkan akurasi yang sangat baik
File source code beserta citra pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code
Penerapan algoritma Support Vector Machine (SVM) untuk klasifikasi citra daun jeruk dapat dilihat pada video tutorial berikut ini:

salam pagi mas adi, apakah SVM yang mas adi buat bisa digunakan untuk klasifikasi lebih dari 2 kelas, misalkan untuk klasifikasi jenis-jenis penyakit tanaman berdasarkan warna daun.? terima kasih mas adi
selamat pagi mas muslim
untuk kelas klasifikasi bisa lebih dari dua kelas
tetapi untuk ciri masukan hanya bisa dengan dua masukan
jika ingin lebih dari dua ciri, bisa menggunakan metode multisvm
mas mimin, bikinin tutorial semtimen analisis twitter dong 😀
semoga saya bisa mbak 🙂
Terima kasih mas mimin 🙂 ditunggu ya mas mimin hehehe, karna sedikit sekali tutorial mengenai sentimen analisis menggunakan data twitter, yang pakai bahasa Indonesia bahkan belom ada saya temuin
assalamu’alaikum ,
untuk code multisvm itu gimana ya mas di matlab, mohon bantuannya mas, makasih 😀
mas adi, saya sudah berhasil menggunakan multisvm, bagaimana pengecekan akurasi menggunakan k-fold cross validation? ada contoh ndak mas, kemudian apakah ada batasan tertentu jumlah data training untuk klasifikasi di SVM. terima kasih mas Adi.
Apakah svm bisa digabungkan dengan pca ya mas adi?
fungsi svm pada matlab hanya dapat mengolah data dengan jumlah masukan sebanyak dua buah
pca dapat diaplikasikan untuk mereduksi jumlah masukan menjadi dua buah untuk kemudian diaplikasikan pada algoritma svm
siang mas adi
itu yg d atas kan atribut utk input svm nya ada 2 mas
klo atribut nya ada 7 apakah bisa menggunakan svm utk klasifikasi mas?
siang mas akmal
jika ingin menggunakan 7 atribut, bisa menggunakan algoritma multisvm yang bisa diunduh pada laman berikut http://www.mathworks.com/matlabcentral/fileexchange/39352-multi-class-svm
siang, apakah bisa sharing mengenai klasifikasi dengan multisvm
Assalamualaikum mas Adi,
mas, untuk setting toolbox SVM itu gimana ya?
saya jalanin program yg mas Adi buat tp error.
mungkin nggak karena toolbox svm?
ini pesan error nya mas:
Undefined function or variable ‘trainset’.
Error in pelatihan_svm (line 27)
SVMStruct = svmtrain(trainset,class,’Kernel_Function’,’linear’,…
koding tersebut dapat dijalankan minimal menggunakan matlab r2014b
Mau nanya dong, untuk gambar HSV di codingnya itu apanya yg diubah?
Saya punya gambar hasil segmentasi warna HSV terus saya mau klasifikasikan objek tersebut, bantu dong proses trainingnya gimana.
contoh untuk multisvm gmn? apa cukup nambah data training lain ?
multisvm merupakan algoritma dengan jumlah fitur masukan lebih dari dua dan jumlah kelas keluaran lebih dari dua
mas, saya mencoba programnya, tapi kenapa pas saya run pengujiansvm tidak ada output apa apa yah?
Koding tsb hanya dapat dijalankan menggunakan matlab minimal versi r2013a
matlab saya versi 2016. Cara menjalankan programnya gimana mas?
Hasil keluaran pada pengujian ada pada variabel yg bernama group
Mas Adi, saya mencoba koding program tersebut dengan data yang saya miliki, matlab saya versi 2015a, setiap menjalankan program pelatihan selalu muncul system error dan file svmstruct.mat-nya tidak berhasil dibuat (disimpan), jadi tidak bisa menjalankan pada file pengujian. itu kenapa ya mas? mohon bantuannya ya mas
Koding tsb dapat dijalankan minimal menggunakan matlab versi r2015b
perintah yg membedakan penggunaan svm pada versi matlabnya apa ya mas? bagian yg membuat error koding perform run of svm mas
perintah yang membedakan adalah svmtrain dan svmclassify dengan fitcsvm
‘Error while evaluating uicontrol Callback’, itu maksud error apa ya mas adi?
Koding tsb hanya dapat dijalankan minimal menggunakan matlab r2015b
Selamat pagi broo,
Saya lagi sementara bikin aplikasi pendeteksi objek,
kira2 kerangka teori pas apa ?
minta saranya..
salah satunya bisa menggunakan metode background subtraction
https://pemrogramanmatlab.com/?s=background+subtraction
selamat siang mas adi apakah ada contoh program tentang SVM yang berbentuk video? terima kasih sebelumnya
selamat siang abdul hafiz ichwan
mudah2an ke depan ada tutorial SVM dalam bentuk video
assalamualaikum, kalau dalam bentuk excel datanya, bagaimana caranya?
terima kasih sebelumnya
waalaikumsalam
data dari excel maupun dari ekstraksi ciri citra pada prinsipnya sama saja, perintah untuk membaca data dari file excel adalah xlsread
seperti yang ada pada materi di halaman berikut ini
https://pemrogramanmatlab.com/2017/07/26/jaringan-syaraf-tiruan-untuk-memprediksi-jumlah-penduduk/
saya mau bertanya lagi, saya punya data latih dalam bentuk excel dan type data yg saya gunakan double, tapi waktu saya Run data latih saya itu dia error,
Error using classreg.learning.FullClassificationRegressionModel.prepareDataCR (line 189)
X and Y do not have the same number of observations.
Error in ClassificationSVM.prepareData (line 624)
classreg.learning.FullClassificationRegressionModel.prepareDataCR(…
Error in classreg.learning.FitTemplate/fit (line 213)
this.PrepareData(X,Y,this.BaseFitObjectArgs{:});
Error in ClassificationSVM.fit (line 239)
this = fit(temp,X,Y);
Error in fitcsvm (line 278)
obj = ClassificationSVM.fit(X,Y,varargin{:});
Error in tryyyy (line 10)
SVMModel = fitcsvm(data,class);
itu kira2 kenapa?
Ukuran data nya bisa disesuaikan kembali
kalau untuk akurasinya bagaimana caranya dikasih tampil / dilihat?
Untuk akurasi bisa dilihat pada command window atau workspace
halo mas, apakah ada tutorial mengenai pemrosesan sinyal gelombang otak ya mas? kalo belum, bisa minta tolong bikin kan tutorial mengenai itu mas ya.
Mudah mudahan ke depan ada tutorial mengenai pemrosesan sinyal gelombang otak
Sore mas mau tanya, kira-kira untuk klasifikasi jenis buah (misal jenis buah jeruk bali, jeruk purut, dsb) cocok menggunakan metode apa ya mas? Apakah svm ini bisa digunakan untuk pengklasifikasian jenis buah buahan? Terima kasih mas
sore dira
untuk klasifikasi jenis buah jeruk bisa menggunakan analisis warna, tekstur, dan bentuk
slamat malam mas, untuk kode klasifikasi metode svm itu gmna ya mas. trimakasih.
selamat malam f38r1nd4
kode klasifikasi metode svm ada pada materi di atas
assalamualaikum, saya mau bertanya, bisa tidak kira2 file matlab dihosting, kalau bisa , ada tidak referensi tentang itu, makasih sebelumnya
Mas gimana caranya kalau pakai multisvm, kebetulan ciri fitur yg kupakai Ada 8.
mas melihat dari sebagian komentar mengenai eror koding svm diatas yang minimal matla versi 2015b.terus untuk koding svm seperti kasus diatas tapi untuk matlab versi 2014a itu bagaimana? mohon info dan penjelasannya trimakasih.
Bisa menginstal matlab minimal versi r2015b utk menjalankan program di atas
mas, bagaimana cara mmenampilkan hyperplanenya mas? soalnya waktu pogrammnya saya running cuma garis hyperplannya tidak tampil, saya pakai matlab 2016b. makasih sebelumnya mas
Pada materi di atas sudah terdapat source code untuk menampilkan hyperplane
malam mas, mau izin bertanya saya lagi mengerjakan tugas akhir kuliah disini tugas akhir saya bertema kan kebocoran pipa air, jadi disini mas saya menggunakan data tekanan pada pipa air untuk inputan svm, bagaimana untuk menentukan data uji dan data latih dan bagaimana cara mengimplemntasikan data tersebut ke svm mas. mohon bantuan nya terima kasih sebelumnya
Koding pada materi di atas bisa dicoba diimplementasikan
halo mas, bisa nga membuat identifikasi plate nomer mobil agar bisa men akses gerban secara otomatis…
halo aan tuule
semoga saya bisa membuat identifikasi plat nomor mobil agar bisa mengakses gerbang secara otomatis
Assalamualaikum mas
saya memiliki data 3 kategorik untuk variabel Y
dan 17 variabel X
dimana saya memiliki variabel umur.
Saya ingin bertanya apakah variabel umur perlu diganti menjadi data yang berbentuk kelas juga?
waalaikumsalam
variabel umur tidak perlu diganti menjadi data yang berbentuk kelas
terimakasih mas adi sudah menjawab
untuk 3 kelas apakah mas ada tutorial pengerjaannya menggunakan aplikasi Matlab atau program R?
soalnya saya masih binggung untuk pengerjaannya menggunakan 3 kelas pada variabel Y.
untuk lebih dari dua kelas bisa menggunakan algoritma multi svm
materinya bisa dilihat pada halaman berikut ini
https://pemrogramanmatlab.com/2018/10/30/identifikasi-jenis-bunga-menggunakan-ekstraksi-ciri-orde-satu-dan-algoritma-multisvm/
terimakasih mas atas bantuannya
bantuan mas sangat saya harapkan untuk penyelesaian penelitian saya.
maaf kalo saya merepotkan mas.
mas adi ijin bertanya apakah untuk ekstrasi ciri pada citra digital yang sudah di manipulasi dalam gambar apakah klasifikasi bentuk dengan svm…terima kasih
Bisa dicoba terlebih dahulu untuk klasifikasi bentuk dengan svm
Mas, kalau misalnya mau klasifikasi sinyal ECG pada aktivitas duduk dan berdiri berdasarkan features di time domain, bisa make coding di atas, nggak? Featuresnya disimpan di dalam file .txt.
Koding di atas bisa dicoba diimplementasikan untuk klasifikasi sinyal ECG pada aktivitas duduk dan berdiri berdasarkan features di time domain
Mas, boleh minta nomor Whatsapp atau e-mailnya, nggak? Saya sedang melakukan penelitian tugas akhir tetapi coding di bagian akhir (PLOT SVM-nya) bermasalah…
Mas Adi, mau tanya kalau untuk klasifikasi kematangan buah yg berdasar fitur warna dan tekstur apakah bisa menggunakan SVM? Atau harus menggunakan MultiSVM? Terima kasih 🙂
Pada prinsipnya jika jumlah input sama dengan 2 dan jumlah output juga sama dengan 2 maka bisa menggunakan algoritma svm
Tetapi jika jumlah input maupun output lebih dari 2 maka bisa menggunakan algoritma multi svm
Terima kasih mas Adi atas penjelasannya… Jadi misal output klasifikasi nya ada 3 (matang,tidak matang,busuk) jadi termasuk multi svm ya? Terus kalau one against one dan one against all itu termasuk multi svm juga ya mas? Terima kasih 🙂
Iya betul
Baik sama sama
Mau tanya mas caa menjalankan program yang benar bagaimana?
Adakah step by stepnya dari menyimpan file dalam folder,dan program pertama yang perlu dibuat itu yang mana dan di simpan dengan nama apa.
Mohon maaf mas masih tahap belajar.
Bisa mempelajari dasar dasar pemrograman matlab
Cara menampilakan hyperplanennya itu ada di coding bagian mana, ya?
Mas boleh tanya tahapan/langkah2 dan program untuk prediksi energi dg metode svm mas? Dan apa2 saja yg perlu diperhatikan dan disiapkan datanya mas?
bisa dipelajari lebih lanjut teori mengenai tahapan/langkah2 dan program untuk prediksi energi dg metode svm dan apa2 saja yg perlu diperhatikan dan disiapkan datanya
Malam mas, saya ingin bertanya terkait error di line code ‘SVMModel = fitcsvm(trainset,class);’ ini kenapa ya mas?
source code lengkap beserta data sdh ada di dalam CD
sehingga bisa langsung dirunning di matlab tanpa error
mau bertanya dong kak, untuk metode SVM bisa tidak menggunakan dataset citra ?
Pada contoh di atas dataset yang digunakan adalah citra
Halo mas mau tanya, Kalo saya pakai 2 metode KNN untuk seleksi fitur dan SVM untuk klasifikasi. punya saya ektraksi berdasarkan teksture dengan GLCM,nah itu ada 4 fitur energy contrast homogen dan correlation, lalu saya hitung dengan KNN. Nanti waktu hitung dengan SVM yang menjadi sumbu X dan Y ambil fitur yang mana yah mas? Energy, contrast homogenity dan correlation mas? Mohon ilmunya mas? Terimakasih mas. Sehat selalu
Algoritma KNN dan SVM sama sama merupakan algoritma klasifikasi, bisa dipilih salah satu
Input kedua algoritma tersebut bisa lebih dari 2 fitur
Assalamu’alaikum mas, saya mau tanya.
Saya menggunakan algoritma svm untuk citra daun jeruk. Jenis daun jeruk yng saya pakai 4 jenis.
Rumus algoritmanya apa ya mas?
Waalaikumsalam
Bisa dipelajari teori mengenai algoritma Multi Class Support Vector Machine
Pingback: Rendysaputra_Tugas_011170046