Support Vector Regression (SVR) adalah jenis algoritma regresi yang menggunakan Support Vector Machines (SVM) untuk melakukan analisis regresi. Berbeda dengan algoritma regresi tradisional, yang bertujuan untuk meminimalkan kesalahan antara nilai prediksi dan nilai aktual, SVR bertujuan untuk memasang “tabung” di sekitar data sedemikian rupa sehingga sebagian besar titik data berada di dalam tabung tersebut. Tujuan dari SVR adalah mencari fungsi yang mempunyai margin maksimum dari tabung.

Dalam SVR, data masukan diubah menjadi ruang berdimensi lebih tinggi, di mana model regresi linier diterapkan. SVM kemudian menemukan garis yang paling cocok untuk data yang diubah, yang sesuai dengan kecocokan non-linier di ruang data asli.

Menerapkan SVR dengan Python

Untuk mengimplementasikan SVR dengan Python, kita dapat menggunakan kelas SVR dari modul sklearn.svm di scikit-learn, yang merupakan pustaka pembelajaran mesin Python yang populer. Berikut ini contoh kode untuk mengimplementasikan SVR dengan Python:

from sklearn.svm import SVR
import numpy as np 

# Generate some sample data
X = np.sort(5 * np.random.rand(100, 1), axis=0)
y = np.sin(X).ravel()

# Create an SVR object and fit the model to the data
clf = SVR(kernel='rbf', C=1e3, gamma=0.1)
clf.fit(X, y)

# Make some predictions with the trained model
y_pred = clf.predict(X)

# Print the mean squared error of the predictions
mse = np.mean((y_pred - y) ** 2)
print(f"Mean squared error: {mse:.2f}")

Dalam contoh ini, kami menghasilkan beberapa data sampel dengan memilih 100 titik di sepanjang kurva sinus secara acak. Kami kemudian membuat objek SVR dengan kernel RBF dan beberapa hyperparameter C dan gamma. Kami menyesuaikan model dengan data sampel dan membuat beberapa prediksi dengan model terlatih. Terakhir, kami menghitung rata-rata kesalahan kuadrat antara nilai prediksi dan nilai sebenarnya.

Perhatikan bahwa hyperparameter C dan gamma masing-masing mengontrol regularisasi dan non-linearitas model SVR. Nilai-nilai ini dapat disesuaikan untuk mengoptimalkan performa model pada kumpulan data tertentu. Selain itu, menyediakan banyak opsi lain untuk mengonfigurasi dan menyempurnakan model SVR.

Menerapkan SVR di R

Di R, kita dapat mengimplementasikan SVR menggunakan paket e1071, yang menyediakan fungsi svm untuk memasang mesin vektor pendukung. Berikut contoh kode untuk mengimplementasikan SVR di R:

library(e1071)

# Generate some sample data
set.seed(1)
x <- sort(5 * runif(100))
y <- sin(x)

# Fit an SVR model to the data
model <- svm(x, y, kernel = "radial", gamma = 0.1, cost = 1000)

# Make some predictions with the trained model
y_pred <- predict(model, x)

# Print the mean squared error of the predictions
mse <- mean((y_pred - y) ^ 2)
cat(sprintf("Mean squared error: %.2f\n", mse))

Dalam contoh ini, kami menghasilkan beberapa data sampel dengan memilih 100 titik di sepanjang kurva sinus secara acak. Kami kemudian menyesuaikan model SVR ke data menggunakan fungsi svm dari paket e1071. Kami menggunakan kernel fungsi basis radial (RBF) dan menentukan beberapa hyperparameter gamma dan biaya. Kami membuat beberapa prediksi dengan model terlatih dan menghitung rata-rata kesalahan kuadrat antara nilai prediksi dan nilai sebenarnya.

Perhatikan bahwa gamma hyperparameter dan biaya masing-masing mengontrol non-linearitas dan regularisasi model SVR. Nilai-nilai ini dapat disesuaikan untuk mengoptimalkan performa model pada kumpulan data tertentu. Selain itu, paket scikit-learn (Python) dan e1071 (R) menyediakan banyak opsi lain untuk mengonfigurasi dan menyempurnakan model SVM.

Matematika di balik SVR

Perhitungan di balik Support Vector Regression (SVR) didasarkan pada prinsip yang sama seperti Support Vector Machines (SVM), dengan beberapa modifikasi untuk menangani tugas regresi. Berikut ini ikhtisar singkat matematika di balik SVR:

  • Dengan adanya sekumpulan data pelatihan, SVR pertama-tama mengubah data masukan menjadi ruang fitur berdimensi tinggi menggunakan fungsi kernel. Fungsi kernel menghitung kesamaan antara dua titik data di ruang asli dan memetakannya ke ruang berdimensi lebih tinggi sehingga keduanya dapat lebih mudah dipisahkan oleh bidang hiper linier.
  • Tujuan SVR adalah menemukan hyperplane di ruang fitur yang memisahkan data pelatihan secara maksimal sambil mempertahankan margin di sekitarnya. Hal ini dilakukan dengan memecahkan masalah optimasi yang melibatkan minimalisasi jarak antara hyperplane dan data pelatihan sekaligus memaksimalkan margin.
  • Dalam SVR, margin didefinisikan sebagai tabung di sekitar hyperplane, bukan margin antara dua hyperplane paralel seperti pada SVM. Lebar tabung dikontrol oleh dua parameter, ε (epsilon) dan C. ε mendefinisikan lebar tabung dan C mengontrol trade-off antara ukuran margin dan jumlah data pelatihan yang diperbolehkan melanggarnya .
  • Masalah optimasi dalam SVR biasanya dirumuskan sebagai masalah pemrograman kuadratik, yang dapat diselesaikan dengan menggunakan teknik optimasi numerik.
  • Setelah hyperplane ditemukan, SVR menggunakannya untuk membuat prediksi titik data baru dengan menghitung jaraknya ke hyperplane di ruang fitur. Jarak tersebut diubah kembali ke ruang aslinya menggunakan fungsi kernel untuk mendapatkan keluaran yang diprediksi.

Secara keseluruhan, matematika di balik SVR melibatkan pencarian hyperplane yang memaksimalkan margin di sekitar data pelatihan sambil mempertahankan tabung di sekitar hyperplane. Hal ini dilakukan dengan mentransformasikan data ke ruang fitur berdimensi tinggi, memecahkan masalah optimasi untuk menemukan hyperplane, dan menggunakan hyperplane untuk membuat prediksi titik data baru.

Kelebihan SVR

Support Vector Regression (SVR) memiliki beberapa keunggulan dibandingkan model regresi lainnya:

  • Non-linier: SVR dapat memodelkan hubungan non-linier antara variabel masukan dan keluaran, sedangkan model regresi linier hanya dapat memodelkan hubungan linier.
  • Ketahanan terhadap outlier: SVR kurang sensitif terhadap outlier dalam data masukan dibandingkan model regresi lainnya. Hal ini dikarenakan proses optimasi pada SVR hanya mempertimbangkan titik data yang berada di dekat batas keputusan, bukan seluruh titik data.
  • Fleksibilitas: SVR memungkinkan penggunaan fungsi kernel yang berbeda, yang dapat digunakan untuk memodelkan berbagai jenis hubungan non-linier antara variabel masukan dan keluaran.
  • Regularisasi: SVR menggabungkan istilah regularisasi dalam fungsi tujuan, yang membantu mencegah overfitting dan meningkatkan performa generalisasi model.
  • Penggunaan memori yang efisien: SVR hanya menggunakan sebagian dari data pelatihan (vektor pendukung) untuk membangun batasan keputusan. Hal ini menghasilkan penggunaan memori yang lebih efisien, yang khususnya berguna saat menangani kumpulan data besar.

Secara keseluruhan, SVR adalah model regresi yang kuat dan fleksibel yang dapat menangani berbagai tugas regresi. Kemampuannya untuk memodelkan hubungan non-linier, ketahanannya terhadap outlier, dan penggunaan memori yang efisien menjadikannya pilihan populer untuk banyak aplikasi pembelajaran mesin.

Komentar diterima!