Membuat Aplikasi Sederhana Berbasis Support Vector Machine (SVM)

Berikut ini kita akan mencoba membagi kelas IPA, IPS, dan Bahasa terhadap satu kelompok kelas. Istilah yang digunakan untuk lebih dari dua kelas adalah MULTICLASS. Untuk contoh kita buat data IPA, IPS, dan Bahasa dengan data sedikit saja:

Berikutnya kita membuat tiga garis pemisah y1, y2, dan y3 yang akan memisahkan data berdasarkan kriteria seperti gambar di bawah ini:

Pertama kita buat y1:

Berikutnya kita membuat pemisah IPA dan Bahasa, y2:

Terakhir kita membuat pemisah IPS dan Bahasa, y3:

Berikutnya persamaan garis y1, y2, dan y3 dijadikan dasar patokan menentukan jurusan seorang siswa, misalnya IPA= 75, IPS= 85, dan Bahasa= 90]. Kita gunakan y1 untuk menguji apakah IPA atau IPS. Simpan data persamaan garis dalam bentuk file, misalnya namanya y, ketik save y di Command Window.

Karena hasil pengujian tahap pertama masuk kategori IPS, maka pengujian berikutnya dengan y3 untuk menentukan apakah dia IPS atau Bahasa. Perhatikan gambar diagram pohon sebelumnya, dimana jika diperoleh uji pertama = 1, maka digunakan uji ketiga antara IPS dan Bahasa.

Dan hasil akhir diperoleh 2 yang artinya, siswa tesebut masuk kategori kelas bahasa berdasarkan enam data sebelumnya. Bagaimana membuat aplikasi terapannya? Rancang GUI seperti berikut ini:

Gunakan kode berikut ini:

  • load y
  • uji=[handles.ipa handles.ips handles.bahasa]
  • uji1=svmclassify(y1,uji(:,1:2))

 

  • if uji1==0
  • uji2=svmclassify(y2,[uji(:,1) uji(:,3)])
  • if uji2==0
    • msgbox(‘Kelas IPA’)
  • else
    • msgbox(‘Kelas IPS’)
  • end
  • else
  • uji3=svmclassify(y3,uji(:,2:3))
  • if uji3==1
    • msgbox(‘Kelas IPS’)
  • else
    • msgbox(‘Kelas Bahasa’)
  • end
  • end

Masukan data seperti data uji sebelumnya, hasilnya harus sama.

 

 

Iklan

51 thoughts on “Membuat Aplikasi Sederhana Berbasis Support Vector Machine (SVM)

  1. Pak mau nanya nih. itu maksudnya data1=(:,1,2); -> apakah untuk train data IPA dan IPS? trus untuk target1=[0;0;1;1;1;1]; -> itu maksudnya gmn kok harus 0 kemudian 1 sebnyak 4 pak? apa aturannya sperti itu? terimakasih. mohon penjelasannya?

    • jumlah target harus sama dengan data. 0 dan 1 angka bebas pembeda antara ipa dan ips, bisa juga 1 / -1, atau angka lain

    • idealnya jumlah yg ipa dan ips sama, setidaknya ada yang menwakilik ipa dan ips. ibarat belajar, untuk membedakan ipa dan ips, kita harus punya sampel ipa dan ips, kalo ipa semua atau ips semua ya ga bisa, gimana membedakannya (garis pemisah)?

  2. ouh..saya mengerti pak. jadi bisa saja ya kalo gini target1=[0;0;0;0;1;1]; terserah yg pnting ada perwakilan dari kelas IPA dan IPS?
    saya lagi TA buat identifikasi nilai nominal dan keaslian uang kertas rupiah pak. untuk ekstraksi fiturnya udah dapet nilai entropy, eccentricty dll pake regionprops. saya juga udah nyoba pake wavelet dan udah dpet nilai aproksimasi, diagonal, horzntal dan vrtikalnya. trus untuk trainingnya pake svm dimatlab kayak gmn ya pak? masih bingung. mohon bantuannya.

  3. permisi pak rahmadya…saya mau tanya itukan nilai ipa/ipsnya cuma ada 1 poin aja datanya, misalkan saya mau buat ipa/ips saya mau buat kriteria nilainya (2 poin) misalkan terdiri teori dan praktikum bisa ga pak??trus gimana dengan targetnya??trims

    • Svm nyaman di 2 pemisah, variabel banyak ok aja. Nah kalo 4 pemisah sy biasanya buat 3 garis svmstruct 3 buah, seperti pohon keputusan

  4. pak saya minta tolong bantuannya untuk jst menggunakan Support vector machines,,,saya awalnya menggunakan FFT Dan kohonen,,,ooiya judul skripsi saya tentang Mode Ektraksi Ciri Suara Wanita Sopran dan Alto Dilihat Dari Power Frekuensinya.
    sblm nya FFT itu saya untuk menentukan Nilai cirinya dan mencari nilai frekuensinya dan kohonen untuk jst nya,,,tapi dosen penguji saya meminta saya mengganti kohonen dengan svm untuk jst nya,,saya mnta bantuan bapak untuk codingan svm nya pak untuk sinyal prossesing untuk menentukan jst nya
    tolong kalau bapak baca email ke saya ya pak saya buta dengan svm
    kresnapradipta@yahoo.com dan ini nomer hp saya 081280184906
    sebelumnya saya ucapkan trimakasih

  5. oh gitu ya pak…saya mau tanya lagi pak…untuk mengatasi permasalahan lebih dari 2 kelas (multikelas) bisa menggunakan metode satu lawan satu atau metode satu lawan semua..apa bapak punya tutorial algoritma cara ngodingnya di matlab untuk kedua metode tersebut?soalnya saya sudah baca di bukunya budi santoso “pemanfaatan data mining” itu tidak menggunakan tool box matlab seperti svmtrain dan svmclassify seperti diartikel bapak diatas.dan saya sudah search di mathworks codingnya sangat sulit saya fahami seperti pemula seperti saya..trims pak…

  6. Assalamu Alaikum Pak Rahmadya….
    saya mau tanya ttg SVM, sya mau buat proposal tesis ttg mutasi jabatan struktural menggunakan data mining klasifikasi pakai fuzzy svm, sya baru baca ttl libsvm yg bapak ksi sbg rujukan di koment n ada tertulis seperti ini pada bagian When to use LIBLINEAR but not LIBSVM ? \
    Warning:While LIBLINEAR’s default solver is very fast for document classification, it may be slow in other situations. See Appendix C of our SVM guide about using other solvers in LIBLINEAR.
    Warning:If you are a beginner and your data sets are not large, you should consider LIBSVM first.
    ….. yg ingin sya tanyakan adlah :,
    1. Kriteria data di katakan besar yg seperti apa?
    2. klasifikasi dokumen yg dimaksdu adl text/bacaab bukan data angka/tabel?
    terima kasih.

    • 1. Kriteria data di katakan besar yg seperti apa?
      saya saat ini sedang mengolah text dengan matlab, data yang besar sekitar 12 juta record, atau kalau dalam format csv sekitar hampir 1 gigabyte.
      2. klasifikasi dokumen yg dimaksdu adl text/bacaab bukan data angka/tabel?
      data bisa dari csv, excell, atau dari tulisan juga bisa (jadi satu vekor baris). memang libsvm sering digunakan untuk text mining, formatnya seperti pohon. saya sendiri masih mempelajarinya, karena selama ini saya baru mencoba data berupa baris dan kolom saja (structured).

  7. maaf pak rahmadya…
    sya coba ketik data1 tapi di baca error di command windowx matlab. ini pemberitahuannya
    >> data1=data(:,1,2);
    ??? Index exceeds matrix dimensions.
    kira2 dimana letak kesalahanx ya?

    • kayaknya harus buka help di matlab tentang mengolah matriks. data(:,1:2) berarti yang dipakai seluruh baris (simbol : pertama) dengan kolom satu dan dua saja (simbol 1:2). bukan 1,2.

      • maaf mengganggu lagi pak….
        saya sdh coba utk jlankan progx sampe di GUI ada pesan seperti ini setiap tekan button klasifikasi :
        ??? Reference to non-existent field ‘ipa’.

        Error in ==> untitled>pushbutton1_Callback at 151
        uji=[handles.ipa handles.ips handles.bahasa];

        Error in ==> gui_mainfcn at 96
        feval(varargin{:});

        Error in ==> untitled at 42
        gui_mainfcn(gui_State, varargin{:});

        Error in ==> guidemfile>@(hObject,eventdata)untitled(‘pushbutton1_Callback’,hObject,eventdata,guidata(hObject))

        ??? Error while evaluating uicontrol Callback

      • Maaf pak menggangu lagi…
        programx sdh running tpi yg dia baca hasilx hanya 1 kelas sja, (IPS) berapa pun nilai yg di ujikan….. mhon penjelasanx..
        terima kasih

      • itulah fungsinya testing. sepertinya garis pemisah (default name nya svmstruct) ga berfungsi, coba dengan nilai yg ekstrim IPA, apakah masih tetap IPS?

  8. masih ttp sma pak…. berapa pun nilai sya masukkan. klo misalx tag text/label sya ganti malah hsilx ipa semua pdhal utk aplikasi pemprograman lain setahuku tag untuk label tdk berpengaruh…. jlas sya yg slah, mungkin ada listing yg slah simpan. tpi klo testingx di command window jwbanx benar, testing di GUI yg slah.

    • SVM seperti JST cenderung memaksa. jika tidak tahu batas kelas, cobalah terlebih dahulu dengan clustering (tanpa label/target) sebagai patokan awal. kan repot kalo di sekolah guru IPA “pelit”, nilai 6 saja udah jago banget, bisa-bisa IPS semua tuh sekolah jurusannya

  9. permisi, mau nanya. kan terdapat perintah load y (yang artinya mengambil data y). yang ingin saya tanyakan data ‘Y’ nya dari mana pak? terima kasih…

    • Tadi kan membuat garis pemisah y1, y2, y3 .. disimpan save y dengan nama y. Jadi di program gui harus dipanggil lagi load y dgn maksud mengambil variabel y1,y2,y3 yg akan digunakan untuk klasifikasi. Harus dipastikan di current directory ada y.mat setelah di save y

  10. permisi pak saya mau tanya untuk multiclass SVM untuk karakter alfabet yang ada 26 karakter, apakah penggunaan svm akan efektif? kira-kira apakah metode one against all cocok? berarti akan ada 26 class kan pak? untuk inputan svm sendiri itu apa ya pak? biner atau vektor? terima kasih

    • saya dulu liat di youtube sekarang dicari kok ga ada lagi ya. di demonya dia bisa nerka bahkan saat proses penulisan dilakukan, misalnya ketika ditarik garis ke bawah dia langsung menerka angka satu, ketika ditarik diari atas ke kiri, berubah lagi menerka angka 7 dst. saya ga tau metodenya, tapi di matlab sepertinya untuk yg multiclass harus donlot, karena hanya tersedia dual class (svmclassify) yang kalo multiclass dibandingkan satu persatu (seperti pohon biner). searching aja m-file untuk multiclass

  11. mohon maaf pak,. klo saya soba ketik
    y1=svmtrain(data1,target1)
    tapi alah keluar error
    Undefined function ‘svmtrain’ for input arguments of type ‘double’.
    mohon penjelasannya,..

    • di matlab tidak ada function svmtrain.m itu, cara gampangnya install lagi aja yg terbaru. atau copy svmtrain dkk dari matlab temen

  12. Sangat bermanfaat sekali, bagaimana kalau yang di train ada 10 dokumen berupa file txt, dan akan di klasifikasi menjadi 3 bagian, apakah bisa menggunakan fungsi yang sama?

    • saya lihat di google sudah ada yg share multiclass. tapi kalo pake yang dua kelas bisa juga. misal kelas a,b,c. jika a dan b diuji hasilnya kelas a, maka a dan jika kelas b maka uji lagi dengan kelas c, masuk kelas b atau kelas c (tree).

  13. Pak… saya ada tugas untuk memprediksi konsentrasi suatu zat pencemar udara, dipengaruhi oleh beberapa parameter spt kecepatana angin, arah angin dan temperatur. apakah bisa dikerjakan dengan metode SVM ??? bagaimana langkah2 nya pak….??? mohon bantuannya karena masih pemula dan baru belajar SVM. terimkasih banyak

  14. Pak..mohon petunjuk…
    >> uji=[75 85 90]

    uji =

    75 85 90

    >> uji1=svmclassify(y1,uji(:,1:2))
    Error using svmclassify (line 64)
    The number of columns in TEST and training data must be equal.

    dimana letak kesalahannya yach PAk???

    MKsh

  15. pak…mohon bantuannya
    >> uji=[75 85 90]

    uji =

    75 85 90

    >> uji1=svmclassify(y1,uji(:,1:2))
    Error using svmclassify (line 64)
    The number of columns in TEST and training data must be equal.

    dimana letak kesalahannya yach PAk?

    MKsh

  16. pak mohon bantuannya, saya ingin klasifikasi fase plasmodium, ada 4 kelas yaitu Non_Fase,tropozoite, schizont, gametosit. data berdasarkan pengolahan citra. bagaimana pemodelan SVMnya pak?

  17. kalau dengan menyeleksi siswa yang ikut lomba cerdas cermat, jumlah siswa 10, mata pelajaran yang dilombakan ada 5 (fisika,kimia,biologi,matematika,akuntansi), setiap siswa wajib mengikuti 2 lomba (misal fisika dan kimia), datasetnya berupa nilai 10 siswa terhadap 5 pelajaran, bagaimana cara mendapatkan lomba apa saja yg diikuti tiap siswa?

    • mata pelajaran merupakan variabel SVM. berikutnya ada klasifikasinya krn svm bertipe klasifikasi (berlabel/target) bukan clustering. harus mendefinisikan label terlebih dahulu (pintar, kurang pintar, eksak, sosial, dsb). jika sudah, gunakan tree saja untuk klasifikasi, kecuali punya script multiclas SVM.

  18. Pak saya lagi buat aplikasi forecasting. dan stiap dijalankan lewat M-File program running. Tpi ketika dijalankan dengan meng-klik file figurenya, dan kita isikan data, programnnya error. dan ada tulisan seperti dibawah :

    ??? Reference to non-existent field ‘edit4′.

    Error in ==> forecasting>pushbutton1_Callback at 179
    set(handles.edit4,’String’,XXA);

    Error in ==> gui_mainfcn at 96
    feval(varargin{:});

    Error in ==> forecasting at 42
    gui_mainfcn(gui_State, varargin{:});

    Error in ==>
    guidemfile>@(hObject,eventdata)forecasting(‘pushbutton1_Callback’,hObject,eventdata,guidata(hObject))

    ??? Error while evaluating uicontrol Callback
    Kira salah di mana ya pak..?

    • Pertama nyoba matlab pasti kagok sama mainan objek. Pelajari handles di GUI sample. Waktu new GUI pilih UI control, liat bgmn menangani handles object

  19. ass. pak rahmad saya mau tanya pak saya membuat program forecasting, ketika saya jalankan lewat m-file program saya running, namun ketika saya jalankan lewat .fig nya running namun hasil prediksinya kosong dan muncul comand seperti ini:
    ??? Reference to non-existent field ‘edit4′.

    Error in ==> forecasting>pushbutton1_Callback at 159
    set(handles.edit4,’String’,XXA);

    Error in ==> gui_mainfcn at 96
    feval(varargin{:});

    Error in ==> forecasting at 42
    gui_mainfcn(gui_State,varargin{:}),;

    Error in ==>
    guidemfile>@(hObject,eventdata)forecasting(‘pushbutton1_Callback’,hObject,eventdata,guidata(hObject))

    ??? Error while evaluating uicontrol Callback

    kira2 kesalahanya dmn ya pak,, mohon bimbingan dengan sangat…
    terimaksih sebelumnya untuk waktu bapak.

  20. pak saya mau menanyakan karena skripsi saya memerlukan svm persis seperti diatas kemudian dicombine dengan metode edge detection nah permasalahan saya tinggal svm ini agar bsa melakukan klasifikasi osteo saya…saya bisa minta projek ini tidak pak untuk saya ambil source code complex nya buat analisa dan pembelajaran..jika bpk berkenan membantu saya ini email saya.. ridho.ansor61@gmail.com terimakasih pak

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s