Pengantar

Support Vector Regression (SVR) adalah adaptasi dari algoritma Support Vector Machine (SVM) untuk regresi.
Berbeda dari regresi linear biasa yang berusaha meminimalkan error antara prediksi dan target, SVR berusaha menyesuaikan model sehingga semua data berada dalam toleransi error tertentu (disebut ( \epsilon )-tube) sambil menjaga margin maksimal.

Formulasi Matematis

Diberikan dataset \( { (x_i, y_i) }_{i=1}^n \), tujuan SVR adalah mencari fungsi:

\[
f(x) = w^T x + b
\]

dengan tujuan:

  • Semua prediksi \( f(x_i) \) berada dalam jarak \( \epsilon \) dari nilai aktual \( y_i \).
  • Menjaga agar \( w \) sekecil mungkin (menghindari overfitting).

Fungsi Loss (( \epsilon )-Insensitive Loss)

Loss function yang digunakan:

\[
L_\epsilon (y, f(x)) =
\begin{cases}
0, & \text{jika } |y – f(x)| \leq \epsilon \
|y – f(x)| – \epsilon, & \text{lainnya}
\end{cases}
\]

Artinya, error di bawah \( \epsilon \) diabaikan.

Optimasi

Persoalan optimasi primal:

Minimalkan:

\[
\frac{1}{2} |w|^2 + C \sum_{i=1}^n (\xi_i + \xi_i^*)
\]

dengan syarat:

\[
\begin{aligned}
y_i – w^T x_i – b &\leq \epsilon + \xi_i \
w^T x_i + b – y_i &\leq \epsilon + \xi_i^* \
\xi_i, \xi_i^* &\geq 0
\end{aligned}
\]

di mana:

  • \( \xi_i, \xi_i^* \) adalah slack variables untuk pelanggaran batas ( \epsilon ).
  • \( C \) adalah parameter regularisasi untuk trade-off antara model sederhana dan toleransi error.

Kernel Trick

Untuk masalah non-linear, SVR dapat menggunakan fungsi kernel \( K(x_i, x_j) \) untuk memetakan input ke ruang berdimensi lebih tinggi:

Contoh kernel umum:

  • Linear: \( K(x_i, x_j) = x_i^T x_j \)
  • Polynomial: \( K(x_i, x_j) = (\gamma x_i^T x_j + r)^d \)
  • RBF (Gaussian): \( K(x_i, x_j) = \exp(-\gamma |x_i – x_j|^2) \)

Parameter Penting SVR

  • \( C \): Kontrol penalti terhadap error.
  • \( \epsilon \): Lebar zona bebas error.
  • \( \gamma \) (untuk kernel RBF): Kontrol pengaruh satu data point.

Contoh Latihan

Contoh 1: SVR Linear

Diberikan data:

xy
12
22.8
33.5
45
55.1

Dengan \( \epsilon = 0.2 \), gambarkan kira-kira posisi \( \epsilon \)-tube yang mencakup data.

Hint:

  • Cari regresi linear sederhana \( f(x) = w^T x + b \).
  • Pastikan semua data maksimal deviasi \( 0.2 \).
  • Jika ada pelanggaran, tambahkan slack variable \( \xi_i \).

Penugasan

Penugasan 1: Implementasi SVR Linear

Buat program Python sederhana menggunakan sklearn.svm.SVR untuk fitting data berikut:

xy
0.51.4
1.01.9
1.52.5
2.03.0
2.53.7

Dengan ketentuan:

  • Gunakan kernel linear (kernel='linear').
  • Set parameter \( \epsilon = 0.1 \) dan \( C = 1 \).
  • Plot hasil regresi dan \( \epsilon \)-tube.

Penugasan 2: Eksperimen Parameter

Ubah-ubah nilai \( \epsilon \) dan \( C \) pada model di Penugasan 1.

Jawab:

  • Bagaimana pengaruh perubahan \( \epsilon \) terhadap fit model?
  • Bagaimana pengaruh perubahan \( C \) terhadap jumlah data yang melanggar \( \epsilon \)?

Penugasan 3: SVR dengan Dataset Open Source

Gunakan dataset California Housing dari sklearn.datasets untuk membangun model Support Vector Regression (SVR).

Langkah-langkah:

  1. Load dataset menggunakan fetch_california_housing.
  2. Pilih satu fitur saja, misalnya MedInc (Median Income).
  3. Lakukan split data menjadi data training dan testing (80:20).
  4. Fit model SVR dengan:
    • Kernel RBF (kernel='rbf')
    • Kernel Polynomial
  5. Plot hasil prediksi versus data aktual pada data testing.

TUTORIAL PYTHON

Sumber Data:

Dataset ini merupakan data publik dari “1990 California Census”.

Pertanyaan untuk dijawab:

  • Bagaimana performa SVR terhadap data ini?
  • Coba ubah nilai \( C \) dan \( \gamma \), apa pengaruhnya terhadap hasil regresi?
  • Apa perbedaan Regresi Linier dengan model SVR ini berdasarkan pengalaman anda?

Referensi

  • Vapnik, V. (1995). The Nature of Statistical Learning Theory.
  • Smola, A., & Schölkopf, B. (2004). A tutorial on support vector regression.

Dokumen dibuat tanggal 27 April 2025

Leave a Reply 0

Your email address will not be published. Required fields are marked *