support vector regression: cara kerja dan implementasinya

Support Vector Regression: Cara Kerja dan Implementasinya

Dalam dunia data science dan machine learning, Support Vector Regression (SVR) adalah teknik yang sangat berguna dalam pemodelan regresi.

Teknik ini menggabungkan konsep dari Support Vector Machine (SVM) ke dalam konteks regresi, yang memungkinkan kita untuk memprediksi nilai numerik atau kontinu, daripada label kategori.

Artikel ini akan membahas apa itu SVR, bagaimana bekerja, serta beberapa contoh penggunaannya dalam dunia nyata.

Konsep Dasar Support Vector Regression (SVR)

SVR adalah varian dari Support Vector Machine (SVM) yang awalnya digunakan untuk klasifikasi, tetapi telah dimodifikasi untuk digunakan dalam tugas regresi.

Tujuan utama dari SVR adalah untuk menemukan fungsi yang dapat memodelkan hubungan antara variabel input dan output dengan tingkat kesalahan sekecil mungkin.

Untuk mencapai tujuan ini, SVR memanfaatkan dua konsep utama: epsilon-insensitive loss function dan margin of tolerance.

Epsilon-Insensitive Loss Function:

Dalam SVR, kita memperkenalkan parameter ε (epsilon) yang menentukan sejauh mana perbedaan antara prediksi model dengan nilai sebenarnya diperbolehkan tanpa menghasilkan kesalahan.

Jika perbedaan ini kurang dari ε, maka tidak ada kesalahan yang dihasilkan. Namun, jika perbedaan lebih besar dari ε, maka kesalahan akan diterapkan ke model.

Margin of Tolerance:

Margin of tolerance menggambarkan rentang di mana data pelatihan diizinkan untuk berada. SVR mencoba untuk menarik garis regresi sedemikian rupa sehingga sebagian besar data pelatihan berada dalam margin of tolerance.

Oleh karena itu, garis regresi yang dihasilkan akan mencoba untuk memaksimalkan margin ini, dengan memperhitungkan ε sebagai toleransi untuk data yang berada di luar margin.

Cara Kerja Support Vector Regression (SVR)

Pemilihan Kernel:

Seperti SVM, SVR juga menggunakan kernel function untuk mengubah data input ke ruang fitur yang lebih tinggi. Kernel ini bisa linear, polinomial, radial basis function (RBF), atau kernel lainnya, tergantung pada jenis data yang digunakan.

Optimisasi Margin of Tolerance:

Tujuan utama SVR adalah untuk memaksimalkan margin of tolerance. Ini dilakukan dengan menemukan parameter-parameter model yang sesuai yang meminimalkan fungsi kerugian (loss function) dengan mempertimbangkan ε.

Prediksi:

Setelah model SVR ditemukan, itu dapat digunakan untuk memprediksi nilai output berdasarkan data input yang baru. Model akan mencoba untuk meminimalkan perbedaan antara prediksi dan nilai sebenarnya, sejauh ε memungkinkan.

Keuntungan dan Penggunaan Support Vector Regression (SVR)

Mengatasi Outliers:

SVR efektif dalam mengatasi outlier karena mengizinkan adanya data yang tidak memenuhi margin of tolerance, tetapi masih memberikan kontribusi pada model.

Fleksibilitas dalam Pemilihan Kernel:

Anda dapat memilih kernel yang sesuai dengan jenis data yang Anda miliki, membuatnya cocok untuk berbagai jenis masalah regresi.

Efektif dalam Data Terbatas:

SVR juga efektif dalam menghadapi data yang terbatas, seperti dalam kasus regresi dengan jumlah sampel yang relatif kecil.

SVR telah digunakan dalam berbagai aplikasi dunia nyata, termasuk prediksi harga saham, pemodelan cuaca, pengenalan suara, dan banyak lagi. Ini adalah teknik yang kuat yang dapat membantu kita membuat prediksi yang akurat dalam berbagai konteks regresi.

Implementasi SVR dengan Python

Berikut adalah contoh implementasi Support Vector Regression (SVR) menggunakan Python dengan library scikit-learn. Kita akan menggunakan dataset sederhana untuk ilustrasi. Pastikan Anda telah menginstal scikit-learn sebelum menjalankan kode berikut:

# Impor library yang diperlukan
import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split

# Buat dataset sederhana (contoh: dataset sinus)
np.random.seed(0)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel()

# Split dataset menjadi data pelatihan dan pengujian
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Inisialisasi model SVR
svr = SVR(kernel='rbf', C=100, gamma=0.1, epsilon=0.1)

# Latih model pada data pelatihan
svr.fit(X_train, y_train)

# Prediksi nilai dengan model yang sudah dilatih
y_pred = svr.predict(X_test)

# Plot hasil prediksi
plt.scatter(X_test, y_test, color='darkorange', label='Data')
plt.plot(X_test, y_pred, color='navy', lw=2, label='SVR')
plt.xlabel('Data')
plt.ylabel('Target')
plt.title('Support Vector Regression')
plt.legend()
plt.show()

Pada contoh di atas, kita menggunakan dataset sederhana yang berupa fungsi sinus. Anda dapat mengganti dataset ini dengan data yang sesuai dengan masalah regresi Anda. Kita menggunakan kernel radial basis function (RBF) sebagai kernel SVR, tetapi Anda dapat mengganti kernel sesuai kebutuhan.

Langkah-langkah utama dalam kode di atas adalah:

1. Import library yang diperlukan.

2. Buat dataset sederhana dan pisahkan menjadi data pelatihan dan pengujian.

3. Inisialisasi model SVR dengan kernel, parameter C (parameter regulasi), gamma (koefisien kernel), dan epsilon.

4. Latih model SVR pada data pelatihan.

5. Gunakan model yang sudah dilatih untuk membuat prediksi.

6. Plot hasil prediksi dan data asli untuk memvisualisasikan performa model.

Pastikan untuk menyesuaikan parameter SVR, seperti kernel, C, gamma, dan epsilon, sesuai dengan karakteristik masalah regresi Anda.

Kesimpulan

Support Vector Regression (SVR) adalah alat yang efektif dalam pemodelan regresi. Dengan memanfaatkan konsep-konsep dari Support Vector Machine (SVM), SVR memungkinkan kita untuk memprediksi nilai kontinu dengan akurasi tinggi, bahkan dalam situasi yang kompleks.

Dengan pemilihan kernel yang bijak dan pengaturan parameter yang sesuai, SVR dapat menjadi senjata andalan dalam toolbox data science Anda.

Leave a Comment

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

Scroll to Top