Algoritma SVR (Support Vector Regression) 24


Algoritma SVR (Support Vector Regression) adalah salah satu algoritma yang digunakan untuk pengambilan keputusan. Contoh yang dibahas kali ini adalah menentukan hasil jual tipe sepeda motor baru berdasarkan kelompok data yang sudah ada.
Algoritma ini dapat dikatakan sebagai perbaikan dari Regresi Linier / Analisis Regresi. Jika regresi linier menghasilkan sebuah fungsi dengan hasil linier / garis lurus, maka algoritma ini dapat menghasilkan sebuah fungsi dengan hasil yang bergelombang mengikuti jalur data yang terbentuk, sehingga prediksi yang didapatkan menjadi lebih akurat dibandingkan dengan regresi linier.



Diasumsikan ada 4 tipe motor yang sudah diketahui datanya, yaitu Motor A,B,C,D
Masing-masing tipe motor memiliki kriteria, yaitu harga, jarak tempuh per liter, cc, dan memiliki hasil jual dalam unit
Diasumsikan data dari 4 tipe motor tersebut adalah sebagai berikut:

Motor Harga Jarak tempuh per liter cc hasil jual
Motor A 10.000.000 35 110 20
Motor B 12.000.000 45 125 9
Motor C 11.000.000 40 150 17
Motor D 14.000.000 37.5 125 12

Contoh data awal adalah sebagai berikut:

Selanjutnya ada 4 buah motor lagi, yaitu E,F,G,H, yang baru akan diluncurkan, sehingga tidak diketahui hasil jualnya
Maka tentukan data-data ini nantinya diperkirakan memiliki hasil jual berapa unit
Diasumsikan data awalnya adalah sebagai berikut:

Motor Harga Jarak tempuh per liter cc
Motor E 13.000.000 45 125
Motor G 12.000.000 47 110
Motor F 10.500.000 43 110
Motor H 13.500.000 35 125

Contoh data yang baru adalah sebagai berikut:



Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan parameter c yang digunakan dalam perhitungan
c adalah parameter untuk menentukan seberapa besar deviasi dari parameter epsilon yang masih dapat ditoleransi
Semakin besar nilai parameter ini, maka semakin besar nilai tolerasi yang diperbolehkan
Diasumsikan dalam kasus ini, nilai c adalah 100

* Tentukan parameter epsilon yang digunakan dalam perhitungan
Parameter epsilon mengontrol lebar dari zona regresi yang digunakan dalam mempelajari data
Semakin besar nilai epsilon, maka estimasi regresi akan semakin datar (mendekati regresi linier)
Diasumsikan dalam kasus ini, nilai epsilon adalah 0.000001


Langkah-langkah penggunaan algoritma ini adalah

* Lakukan proses pembelajaran data menggunakan metode SVR (Support Vector Regression)
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 1 – 7)

Memasuki perhitungan pada fungsi SVR

1. Tentukan fungsi kernel yang digunakan
Diasumsikan dalam kasus ini akan digunakan fungsi kernel Spline, dengan rumus perhitungan seperti pada skrip dibawah ini

2. Lakukan perulangan pada setiap contoh data
Ambil semua kemungkinan pasangan data yang ada, termasuk pasangan dengan dirinya sendiri

3. Buat matriks Gram untuk digunakan sebagai contoh data yang akan dipelajari

4. Lakukan pembelajaran data menggunakan metode Quadratic Programming
Sebelum melakukan pembelajaran data, maka harus ditentukan dulu parameter yang digunakan dalam metode tersebut,
yaitu H, f, lb, ub, dan options

5. Hitung nilai alpha, yaitu beberapa data pertama yang diperoleh dari hasil pembelajaran sebelumnya

6. Hitung nilai bias yang dilambangkan dengan b

7. Simpan nilai alpha, bias, fungsi kernel, contoh data, dan fungsi untuk menghitung prediksi

* Gunakan fungsi ini untuk menghitung nilai output menggunakan data pembelajaran yang sudah ada

8. Lakukan perhitungan hasil contoh data menggunakan hasil pembelajaran yang sudah ada

9. Hitung rata-rata selisih dari hasil contoh data yang asli dengan hasil contoh data menggunakan perhitungan tersebut

10. Lakukan perhitungan prediksi pada data yang baru
Kemudian tambahkan nilai delta untuk mendapatkan jawaban akhir


Hasil akhir adalah:


Contoh modul / source code menggunakan Matlab dapat didownload disini:



Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.


Tinggalkan sebuah komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

24 pemikiran di “Algoritma SVR (Support Vector Regression)

  • Melita

    Selamat malam, kak saya sedang belajar algoritma svr untuk prediksi rating berita dari opini masyarakat, akan tetapi saya masih kesulitan dalam penerapan dan perhitungan manual, misal saya memiliki 4 parameter untuk menghasilkan nilai dari svrnya, dari tahap mapping 4 variabel itu dengan kernel trick, fungsi lagrange dengan slack variable, saya masih belum paham, sementara saya belajar dari kitabnya smola. Jika berkenan saya ingin meminta catatan atau referensi kakak saat belajar algoritma ini, tolong dikirim ke e-mail saya. Terima kasih 🙂

    • pip Penulis

      Selamat malam,

      Saya tidak memiliki referensi dari jurnal tertentu dalam contoh implementasi ini. Jika anda perhatikan baik-baik, maka algoritma ini bergantung pada toolbox matlab, sehingga tidak dapat diketahui proses apa saja yang terjadi pada saat algoritma inti tersebut berjalan.

      Hanya sebagai pembanding saja, dalam kasus ini parameter yang digunakan hanyalah 1 saja, yaitu parameter c, kriteria yang digunakan ada 4 (motor, harga, jarak tempuh per liter, cc), fungsi kernel yang digunakan adalah fungsi kernel Spline. Yang bisa anda sesuaikan hanyalah penggantian 4 kriteria sesuai kasus anda, dan nilai parameter c (apabila diperlukan). Untuk fungsi kernel Spline saat ini tidak bisa ditukar dengan fungsi lain seperti fungsi Lagrange.

    • pip Penulis

      Untuk mengetahui apakah kasus anda dapat diselesaikan dengan algoritma ini, silahkan coba jelaskan alur sistem dari kasus polusi udara tersebut.

      • Erni Halawa

        kasusnya: memprediksi nilai konsentrasi zat pencemar udara (polutan) denga parameter yang mempengaruhi suhu, kecepatan angin, curah hujan,kelembaban udara. kasusnya time series. apakah memungkinkan memprediksi nilai konsentrasi polutan dengan SVR??? terimkasih

        • pip Penulis

          Terima kasih atas penjelasannya.
          Berdasarkan deskripsi singkat tersebut, maka seharusnya cara penyelesaian yang digunakan adalah sistem regresi, sehingga algoritma ini cocok untuk menyelesaikan permasalahan tersebut.

    • pip Penulis

      Mohon maaf untuk saat ini saya juga masih belum menemukan referensi untuk melakukan perhitungan manual atas algoritma ini. Saya mempelajari skrip ini berdasarkan referensi skrip lainnya.

  • Sri Sagita

    objSVR = SVR(contohData,hasilContohData,c, epsilon);

    ini kok g bisa y mas? d matlab ny tulisanny jd Undefined function or variable ‘SVR’.

    mksh sblumnya

    • Sri Sagita

      f = hitungNilaiOutput(x)
      f = 0;
      jumlahPrediksi = size(x,1);
      for i=1:jumlahPrediksi
      sx(i).feature = x(i,:);
      end
      jumlahData = size(contohData,1);
      for i=1:jumlahData
      sy(i).feature = contohData(i,:);
      end
      for i=1:jumlahData
      f = f + svrobj.alpha(i)*fungsiKernel(sx(1),sy(i));
      end
      f = (f + b)/2;
      end
      end

      yg ini jg Undefined function or variable ‘x’. mas

      x ny drmn tuh

      • pip Penulis

        dalam fungsi tersebut, x adalah parameter yang diperlukan oleh fungsi hitungNilaiOutput. Fungsi ini tidak ditujukan untuk dipanggil secara langsung (karena akan terjadi kesalahan karena input parameter x tidak tersedia) melainkan akan dilakukan oleh sistem pada saat skrip main dijalankan.

    • pip Penulis

      Skrip tersebut akan memanggil file fungsi SVR yang terdapat file SVR.m. Jika anda meletakkan file tersebut dalam folder yang sama maka seharusnya file tersebut dapat langsung dikenali.

  • Arda Surya Editya

    Selamat Siang pak
    Pak kalau saya mau merubah fungsi kernel nya itu untuk mencari fungsi kernel lain bisa cari dimana ya contoh sepert polynomial dll.
    Saya sangat senang sekali jika bapak bisa menjawab komentar saya.

    • pip Penulis

      Dalam skrip ini jika anda ingin mengganti fungsi kernel maka dapat dilakukan pada variabel “fungsiKernel” pada file SVR.m . Fungsi kernel lain yang saya ketahui adalah fungsi Gaussian dimana rumus yang dipakai adalah
      fungsiKernel = @(a,b) prod(arrayfun(@(x,y) exp(-gamma * (x-y)^2),a.feature,b.feature));

      Saya tidak mengetahui kernel lain selain kernel ini

  • Asep Yuhana

    Selamat Siang, apakah punya cara-cara untuk perhitungan manualnya secara jelas? saya kurang mengerti alur perhitungannya karena menggunakan bahasa pemrograman. Klo ada bolehkah dikirim via email.

  • bejo

    saya sudah run diatas, koq hasilnya beda ya
    Hasil Perhitungan dengan metode SVR (Support Vector Regression)
    Motor , Harga , Jarak tempuh per liter, cc , prediksi hasil jual
    Motor E, 13000000 , 45 , 125, 15
    Motor F, 12000000 , 47 , 110, 15
    Motor G, 10500000 , 43 , 110, 15
    Motor H, 13500000 , 35 , 125, 15

    yaitu hasilnya 15 semuanya

    • pip Penulis

      Saya sudah melakukan uji ulang pada skrip diatas dan hasilnya masih tetap seperti yang tertulis pada hasil akhir. Jika anda tidak mengubah apapun tetapi mendapatkan hasil yang berbeda, hal tersebut mungkin dikarenakan perbedaan versi matlab yang saya dan anda gunakan.

      • bejo

        saya menggunakan Matlab R2018a,

        >> main
        Algoritma SVR (Support Vector Regression)
        Contoh: memperkirakan hasil jual tipe sepeda motor baru berdasarkan kelompok data yang sudah ada
        Diasumsikan ada 4 tipe motor yang sudah diketahui datanya, yaitu Motor A,B,C,D
        Masing-masing tipe motor memiliki kriteria, yaitu harga, jarak tempuh per liter, cc, dan memiliki hasil jual dalam unit
        Diasumsikan data dari 4 tipe motor tersebut adalah sebagai berikut:
        Motor , Harga , Jarak tempuh per liter, cc , hasil jual
        Motor A, 10.000.000, 35 , 110, 20
        Motor B, 12.000.000, 45 , 125, 9
        Motor C, 11.000.000, 40 , 150, 17
        Motor D, 14.000.000, 37.5 , 125, 12

        Selanjutnya ada 4 buah motor lagi, yaitu E,F,G,H, yang baru akan diluncurkan, sehingga tidak diketahui hasil jualnya
        Maka tentukan data-data ini nantinya diperkirakan memiliki hasil jual berapa unit
        Diasumsikan data awalnya adalah sebagai berikut:
        Motor , Harga , Jarak tempuh per liter, cc
        Motor E, 13.000.000, 45 , 125
        Motor G, 12.000.000, 47 , 110
        Motor F, 10.500.000, 43 , 110
        Motor H, 13.500.000, 35 , 125

        Hasil Perhitungan dengan metode SVR (Support Vector Regression)
        Motor , Harga , Jarak tempuh per liter, cc , prediksi hasil jual
        Motor E, 13000000 , 45 , 125, 15
        Motor F, 12000000 , 47 , 110, 15
        Motor G, 10500000 , 43 , 110, 15
        Motor H, 13500000 , 35 , 125, 15

        tetap sama hasilnya yaitu 15

        kalau boleh tahu, di situs ini menggunakan Matlab versi berapa ya?

        • pip Penulis

          Versi yang saya gunakan adalah versi R2015a. Mengingat saya tidak memiliki versi tersebut maka mohon maaf saya tidak dapat mengetahui dibagian manakah terjadi perbedaan cara perhitungan antar versi tersebut.

  • Maulani Halilah

    >> objSVR = SVR(contohData,hasilContohData,c, epsilon);
    ??? Undefined function or method ‘optimoptions’ for
    input arguments of type ‘char’.

    Error in ==> SVR at 28
    options =
    optimoptions(‘quadprog’,’Algorithm’,’interior-point-convex’,’Display’,’off’);
    >> itu aku errornya dimana ya mas?? kok gak bisa

    • pip Penulis

      Hal ini mungkin disebabkan karena library yang anda instal tidak lengkap sehingga fungsi “optimoptions” tidak ditemukan, atau versi matlab yang anda gunakan masih terlalu lama. Jika saya melihat penjelasan mengenai fungsi ini pada halaman website matlab, fungsi ini dikenalkan sejak versi R2013a sehingga anda akan mendapatkan error apabila menggunakan versi yang lebih lama dari versi tersebut.