Support Vector Machine (SVM)

1. Pendahuluan

Support Vector Machine (SVM) merupakan salah satu algoritma machine learning terawasi (supervised learning) yang paling andal dan banyak digunakan, khususnya untuk menyelesaikan masalah klasifikasi dan regresi. SVM secara matematis dirancang untuk menemukan hyperplane atau bidang pemisah optimal yang memaksimalkan margin antar kelas, sehingga memungkinkan model melakukan prediksi terhadap data baru dengan akurasi yang tinggi.

Salah satu keunggulan utama SVM adalah kemampuannya dalam menangani data berdimensi tinggi, seperti data citra, teks, maupun genomik. Algoritma ini juga fleksibel, karena dapat diterapkan baik pada klasifikasi biner maupun multi-kelas. Bahkan ketika data tidak dapat dipisahkan secara linier, SVM tetap dapat memisahkan kelas dengan efektif melalui pendekatan kernel trick, yakni dengan memetakan data ke ruang berdimensi lebih tinggi agar batas pemisah optimal dapat ditemukan.

Popularitas SVM tidak hanya didorong oleh kinerjanya yang konsisten di berbagai bidang, tetapi juga oleh fondasi teoritis yang kuat serta formulasi matematis yang elegan. Artikel ini akan mengulas SVM secara komprehensif—mulai dari konsep dasar, sejarah, hingga penerapannya di dunia nyata—dengan gaya penulisan yang human-friendly, sehingga dapat diakses oleh pembaca dari berbagai latar belakang, baik akademik maupun praktisi.

2. Sejarah Singkat Perkembangan SVM

Support Vector Machine pertama kali diperkenalkan oleh Vladimir Vapnik dan timnya pada awal 1990-an sebagai bagian dari pengembangan teori statistical learning. Salah satu publikasi penting yang menandai lahirnya algoritma ini adalah makalah berjudul “Support Vector Method for Function Approximation, Regression Estimation, and Signal Processing” yang diterbitkan pada tahun 1995.

Awalnya, SVM dikembangkan untuk menyelesaikan masalah klasifikasi linier. Namun, seiring waktu, algoritma ini mengalami kemajuan signifikan, terutama setelah diperkenalkannya konsep kernel trick—sebuah metode yang memungkinkan SVM melakukan klasifikasi pada data nonlinier secara efisien dengan memproyeksikan data ke ruang fitur berdimensi lebih tinggi.

3. Konsep Dasar Support Vector Machine (SVM)

Support Vector Machine (SVM) merupakan algoritma pembelajaran mesin terawasi (supervised learning) yang dirancang untuk menangani permasalahan klasifikasi maupun regresi. Dikembangkan oleh Vapnik dan Cortes pada tahun 1995, inti dari pendekatan SVM terletak pada pencarian hyperplane optimal, yaitu bidang pemisah yang secara efektif memisahkan dua kelas data dengan margin maksimum (maximum margin).

Margin ini mengacu pada jarak antara hyperplane dengan titik data terdekat dari masing-masing kelas, yang dikenal sebagai support vectors. Semakin besar margin yang dapat dicapai, semakin baik kemampuan model dalam melakukan generalisasi terhadap data baru yang belum pernah ditemui sebelumnya.

4. Tujuan Utama

Tujuan utama dari SVM adalah untuk menemukan hyperplane terbaik yang tidak hanya dapat memisahkan dua kelas secara tepat, tetapi juga memaksimalkan jarak antar kelas. Pendekatan ini secara teoritis dan empiris terbukti efektif dalam mengurangi risiko overfitting serta meningkatkan akurasi prediksi, terutama saat model dihadapkan pada data uji yang bersifat kompleks atau tidak terstruktur.

5. Komponen Kunci dalam SVM

Support Vector Machine (SVM) dibangun dari sejumlah konsep fundamental yang bekerja secara sinergis untuk menghasilkan model klasifikasi atau regresi yang kuat. Komponen-komponen utama tersebut dijelaskan sebagai berikut:

  • Hyperplane

    Hyperplane adalah garis atau bidang keputusan yang digunakan untuk memisahkan dua kelas data. Dalam ruang dua dimensi, hyperplane berbentuk garis lurus; sementara dalam dimensi yang lebih tinggi, bentuknya dapat berupa bidang atau bahkan manifold. Hyperplane optimal adalah yang memaksimalkan margin pemisahan antara kelas.

  • Margin

    Margin adalah jarak antara hyperplane dengan titik data terdekat dari masing-masing kelas. SVM berusaha memaksimalkan margin ini agar pemisahan antar kelas menjadi lebih stabil dan tahan terhadap gangguan seperti noise atau outlier.

  • Support Vectors

    Support vectors adalah titik-titik data yang berada paling dekat dengan hyperplane. Titik-titik inilah yang paling berpengaruh dalam menentukan posisi dan orientasi hyperplane. Meskipun data pelatihan dapat berjumlah banyak, hanya support vectors yang benar-benar menentukan struktur model akhir.

  • Kernel

    Dalam kasus data yang tidak dapat dipisahkan secara linier di ruang aslinya, SVM memanfaatkan pendekatan kernel trick untuk memetakan data ke ruang berdimensi lebih tinggi, di mana pemisahan linier menjadi mungkin. Beberapa fungsi kernel yang umum digunakan antara lain:

    • Linear kernel: untuk data yang dapat dipisahkan secara linier
    • Polynomial kernel: untuk relasi nonlinier yang kompleks
    • Radial Basis Function (RBF) kernel: sangat efektif untuk kasus nonlinier dan banyak digunakan dalam praktik
  • Hard Margin vs Soft Margin

    • Hard Margin digunakan saat data dapat dipisahkan secara sempurna tanpa kesalahan klasifikasi. Ini cocok untuk data yang bersih dan terstruktur baik.
    • Soft Margin digunakan dalam kondisi realistis ketika terdapat noise atau overlap antar kelas. Dengan memperbolehkan beberapa pelanggaran terhadap margin, pendekatan ini menjaga keseimbangan antara kompleksitas model dan kemampuan generalisasi.
  • Parameter C

    Parameter C mengontrol kompromi antara memaksimalkan margin dan meminimalkan kesalahan klasifikasi. Nilai C yang besar cenderung menghasilkan hyperplane yang berusaha meminimalkan kesalahan sekecil mungkin, tetapi berisiko overfitting. Sebaliknya, nilai C yang kecil memberikan toleransi terhadap kesalahan, memungkinkan margin yang lebih besar dan generalisasi yang lebih baik.

  • Hinge Loss

    Hinge loss adalah fungsi kerugian khas yang digunakan dalam SVM. Fungsi ini hanya menghukum prediksi yang salah atau terlalu dekat dengan margin, menjadikan SVM efisien dalam mengatasi data kompleks dengan klasifikasi yang tajam dan selektif.

Visualisasi: Margin dan Support Vectors

Untuk memberikan pemahaman lebih lanjut, berikut adalah visualisasi interaktif yang menunjukkan hyperplane, margin, dan support vectors pada data dua dimensi yang dapat dipisahkan secara linier:

library(e1071)
## Warning: package 'e1071' was built under R version 4.4.2
# Simulasi data 2 kelas yang dapat dipisahkan secara linier
set.seed(260626)
x1 <- matrix(rnorm(20*2), ncol=2)
x2 <- matrix(rnorm(20*2)+3, ncol=2)
x <- rbind(x1, x2)
y <- as.factor(c(rep(1,20), rep(2,20)))
data_svm <- data.frame(x=x, y=y)

# Fit SVM model linier
model_lin <- svm(y ~ ., data=data_svm, kernel="linear", cost=1, scale=FALSE)

# Visualisasi dengan support vector
plot(model_lin, data_svm, main="SVM Linear: Margin & Support Vectors")

Gambar ini memperlihatkan batas pemisah (hyperplane), dua margin, serta titik-titik support vector yang berada paling dekat dengan hyperplane. Visualisasi ini membantu menjelaskan bagaimana SVM bekerja dalam ruang fitur dua dimensi dan bagaimana margin serta support vectors memainkan peran penting dalam konstruksi model.

6. Fungsi Kernel dalam SVM

Fungsi kernel merupakan komponen krusial dalam algoritma SVM, terutama dalam menangani data yang tidak dapat dipisahkan secara linier. Fungsi ini memungkinkan SVM untuk membentuk hyperplane pemisah di ruang fitur berdimensi tinggi tanpa perlu secara eksplisit menghitung transformasi tersebut—teknik ini dikenal sebagai kernel trick. Melalui pendekatan ini, SVM dapat mengatasi berbagai pola non-linier secara efisien dan efektif.

Berikut adalah beberapa jenis kernel yang umum digunakan dalam praktik:

  • Linear Kernel

    Digunakan ketika data dapat dipisahkan secara linier. Kernel ini sederhana dan cepat, serta cocok untuk kasus dengan banyak fitur namun relasi antar fitur relatif linier.

  • Polynomial Kernel

    Cocok untuk data yang memiliki hubungan non-linier. Kernel ini memungkinkan pemisahan kelas berdasarkan kombinasi pangkat dari fitur-fitur asli, yang berguna dalam mengungkap pola interaksi antar fitur.

  • Radial Basis Function (RBF) Kernel

    Merupakan kernel paling populer yang sangat efektif untuk data berdimensi tinggi dan tidak linier. RBF kernel bekerja dengan mengukur kesamaan antar titik data berdasarkan jarak Euclidean, dan mampu menghasilkan pemisahan yang fleksibel dan kompleks.

  • Sigmoid Kernel

    Kernel ini menyerupai fungsi aktivasi dalam jaringan saraf dan kadang digunakan dalam arsitektur tertentu. Meskipun tidak sepopuler RBF, kernel ini berguna dalam konteks khusus, terutama saat meniru perilaku model neural network.

Dengan memilih kernel yang sesuai, pengguna SVM dapat meningkatkan kinerja model secara signifikan. Pemilihan kernel biasanya disesuaikan dengan karakteristik data dan tujuan analisis.

7. Jenis-Jenis Support Vector Machine (SVM)

Support Vector Machine memiliki berbagai varian yang dirancang untuk menangani beragam jenis data dan kebutuhan analisis. Secara umum, SVM terbagi menjadi dua kelompok utama: SVM Linier dan SVM Nonlinier, dengan beberapa pengembangan lanjutannya.

7.1. SVM Linier

Digunakan ketika data dapat dipisahkan secara linier. Model ini membangun sebuah hyperplane berdasarkan persamaan berikut:

w · x + b = 0

Dengan keterangan:

  • w = vektor bobot,
  • x = fitur input,
  • b = bias/intersep.

SVM linier tergolong cepat dan efisien, serta cocok diterapkan pada dataset yang sederhana dan tidak terlalu kompleks.

7.1.1. Hard Margin SVM

  • Diasumsikan bahwa semua data dapat dipisahkan secara sempurna tanpa kesalahan.

  • Margin dihitung dengan memaksimalkan rumus:

    γ = a / ||w||, dengan batas keputusan: (w · xj + b) yj ≥ a

  • Cocok untuk data bersih tanpa noise.

7.1.2. Soft Margin SVM

  • Dirancang untuk menangani data yang mengandung overlap atau noise.

  • Memperkenalkan slack variable ξ dan parameter kontrol C.

    • C besar → fokus meminimalkan kesalahan klasifikasi (margin sempit).
    • C kecil → memberikan toleransi lebih terhadap kesalahan (margin lebih lebar).
  • Menawarkan kompromi antara kompleksitas model dan tingkat kesalahan.

7.2. SVM Nonlinier

Untuk kasus di mana data tidak dapat dipisahkan secara linier, SVM menggunakan fungsi kernel untuk memetakan data ke ruang berdimensi lebih tinggi, sehingga memungkinkan pemisahan linier di ruang tersebut (Schölkopf & Smola, 2002).

7.2.1. SVM dengan Kernel RBF

  • Merupakan jenis kernel nonlinier paling populer.
  • Cocok untuk pemisahan data yang kompleks, berdimensi tinggi, dan tidak teratur.
  • Kernel RBF bekerja berdasarkan kedekatan antar titik data dalam ruang fitur.

7.2.2. One-Class SVM

  • Digunakan untuk deteksi anomali.
  • Model hanya dilatih menggunakan satu kelas (normal) dan bertugas mengenali data yang menyimpang dari pola tersebut (anomali).
  • Cocok untuk aplikasi keamanan, pengawasan sistem, dan deteksi penipuan.

7.2.3. Multi-Class SVM

  • Memperluas SVM ke kasus klasifikasi dengan lebih dari dua kelas.

  • Umumnya menggunakan pendekatan:

    • One-vs-One (OvO) – membuat model untuk setiap pasangan kelas.
    • One-vs-All (OvA) – membuat model untuk setiap kelas terhadap semua kelas lainnya.

7.2.4. Support Vector Regression (SVR)

  • Merupakan adaptasi SVM untuk kasus regresi.
  • Memprediksi nilai kontinu dengan memperhitungkan batas toleransi kesalahan (ε-insensitive loss).
  • Ideal untuk pemodelan fungsi atau prediksi nilai kuantitatif.

7.2.5. Semi-Supervised SVM (S3VM)

  • Dirancang untuk situasi di mana sebagian besar data tidak memiliki label.
  • Mengombinasikan data berlabel dan tidak berlabel dalam proses pelatihan untuk meningkatkan akurasi klasifikasi.
  • Sangat berguna dalam domain seperti bioinformatika, pemrosesan teks, dan eksplorasi data.

Visualisasi SVM Nonlinier dengan Kernel RBF

# Dataset XOR-like (nonlinier)
set.seed(260626)
x <- matrix(rnorm(200), ncol=2)
y <- xor(x[,1] > 0, x[,2] > 0)
y <- as.factor(ifelse(y, "A", "B"))
data_xor <- data.frame(x=x, y=y)

# SVM dengan kernel radial
library(e1071)
svm_rbf <- svm(y ~ ., data=data_xor, kernel="radial", gamma=1)
plot(svm_rbf, data_xor, main="SVM RBF: Data Non-Linier")

8. Kernel Trick: Menangani Data Nonlinier Secara Efisien

Kernel Trick adalah teknik penting dalam SVM yang memungkinkan pemodelan data nonlinier tanpa perlu memproyeksikan data secara eksplisit ke ruang berdimensi tinggi. Alih-alih melakukan transformasi fitur secara langsung, kernel trick menghitung produk dalam (dot product) dari fitur yang telah dipetakan menggunakan fungsi kernel:

K(xi, xj) = φ(xi)T φ(xj)

Dengan pendekatan ini, SVM dapat menangani kompleksitas data secara efisien tanpa beban komputasi tambahan dari transformasi eksplisit.

8.1. Jenis-Jenis Fungsi Kernel

Berikut beberapa fungsi kernel yang umum digunakan dalam SVM:

  • Linear: 𝐾(x, y) = xᵀy Cocok untuk data yang dapat dipisahkan secara linier.

  • Polynomial: 𝐾(x, y) = (xᵀy + c)d Mampu menangkap hubungan nonlinier dengan derajat tertentu (degree d).

  • RBF (Radial Basis Function): 𝐾(x, y) = exp(−γ‖x − y‖²) Sangat fleksibel dan umum digunakan untuk data dengan distribusi kompleks.

  • Sigmoid: 𝐾(x, y) = tanh(κxᵀy + θ) Menyerupai fungsi aktivasi dalam jaringan saraf.

Pemilihan fungsi kernel yang tepat bergantung pada karakteristik data dan tujuan analisis.

# Linear SVM
svm_linear <- svm(y ~ ., data=data_xor, kernel="linear")

# Plot hasil
p1 <- plot(svm_linear, data_xor, main="SVM Linear (Kurang Optimal)")

p2 <- plot(svm_rbf, data_xor, main="SVM RBF (Lebih Akurat untuk Data Nonlinier)")

9. Kelebihan dan Kekurangan SVM

Kelebihan:

  • Cocok untuk data berdimensi tinggi seperti teks atau citra.
  • Efektif untuk data nonlinier melalui penggunaan fungsi kernel.
  • Mengurangi risiko overfitting, terutama dengan margin optimal dan regularisasi.
  • Mampu menangani ketidakseimbangan kelas melalui penyesuaian parameter penalti.
  • Kinerja stabil dan akurat di berbagai domain aplikasi seperti bioinformatika, visi komputer, dan keuangan.

Kekurangan:

  • Kompleksitas komputasi tinggi untuk dataset berskala besar.
  • Tuning parameter sensitif, seperti C, gamma, dan pilihan kernel.
  • Tidak mendukung data dengan missing values secara langsung.
  • Kurang efisien untuk pembelajaran online atau real-time.
  • Sensitif terhadap outlier, terutama pada margin sempit.

10. Perbandingan SVM dengan Algoritma Lain

Kriteria SVM Naive Bayes Regresi Logistik Decision Tree Neural Network
Ketahanan terhadap overfitting Tinggi Rendah Sedang Rendah Tergantung arsitektur
Interpretabilitas Sedang Tinggi Tinggi Tinggi Rendah
Kebutuhan jumlah data Sedang Rendah Rendah Rendah Tinggi
Kemampuan memodelkan nonlinier Tinggi (via kernel) Rendah Rendah Sedang Tinggi
Kecepatan pelatihan Sedang hingga lambat Sangat cepat Cepat Cepat Lambat
Akurasi pada data kompleks Tinggi Rendah Sedang Sedang Tinggi

SVM direkomendasikan dalam situasi berikut:

  • Data memiliki dimensi tinggi, seperti dokumen teks atau gambar.
  • Struktur data bersifat nonlinier dan kompleks.
  • Diperlukan margin klasifikasi yang stabil dan robust.

11. Penggunaan SVM dalam Berbagai Bidang

Support Vector Machine (SVM) merupakan salah satu algoritma yang terbukti andal dan serbaguna dalam menyelesaikan berbagai persoalan di dunia nyata. Tidak hanya unggul dalam tugas klasifikasi, SVM juga dapat diaplikasikan pada regresi, deteksi anomali, hingga segmentasi data secara tidak langsung. Kemampuannya dalam menangani data berdimensi tinggi serta struktur nonlinier melalui pendekatan kernel menjadikannya pilihan utama dalam berbagai aplikasi industri maupun penelitian.

11.1. Klasifikasi Teks dan Bahasa

SVM banyak digunakan dalam bidang Natural Language Processing (NLP), terutama pada tugas-tugas klasifikasi berbasis teks, seperti:

  • Analisis Sentimen: Mengidentifikasi opini atau emosi dari ulasan produk, media sosial, maupun berita untuk menentukan apakah suatu pernyataan bersifat positif, negatif, atau netral.
  • Deteksi Spam: Menyaring email spam dari kotak masuk pengguna secara efisien dan akurat.
  • Pengenalan Topik: Mengklasifikasikan dokumen ke dalam topik tertentu secara otomatis, yang banyak diterapkan dalam sistem rekomendasi dan pengelompokan konten berita.

11.2. Klasifikasi dan Pengolahan Citra Digital

Dalam bidang computer vision, SVM memainkan peran penting dalam berbagai aplikasi, antara lain:

  • Deteksi Objek: Mengidentifikasi keberadaan objek dalam gambar atau video, digunakan dalam sistem pengawasan dan kendaraan otonom.
  • Content-Based Image Retrieval (CBIR): Menyediakan pencarian gambar berdasarkan konten visual seperti bentuk, tekstur, atau warna.
  • Keamanan dan Forensik Digital: Mengidentifikasi manipulasi visual, pemalsuan gambar, atau keaslian dokumen digital.
  • Klasifikasi Citra Medis dan Satelit: Mendeteksi pola dari citra MRI, CT-scan, atau satelit untuk tujuan diagnosis atau analisis spasial.

11.3. Bioinformatika dan Kedokteran

Di bidang biomedis dan bioinformatika, SVM memberikan kontribusi besar dalam analisis data biomolekuler yang kompleks:

  • Prediksi Ekspresi Gen dan Klasifikasi Protein: Mengelompokkan data genetik serta menentukan fungsi biologis dari sekuens DNA dan protein.
  • Deteksi Penyakit dan Kanker: Menganalisis pencitraan medis, data genomik, dan biomarker untuk deteksi dini dan akurat berbagai penyakit.
  • Klasifikasi Tipe Sel dan Prediksi Obat Baru: Mendukung pengembangan terapi presisi berbasis karakteristik biologis individu.

11.4. Sistem Informasi Geografis (GIS) dan Geosains

SVM juga berperan penting dalam pemodelan spasial dan geosains, seperti:

  • Prediksi Risiko Likuifaksi: Menggunakan data geoteknik dan geofisika untuk menilai potensi likuifaksi di wilayah rawan bencana.
  • Klasifikasi Struktur Geologis: Menyusun model bawah permukaan dari data seismik atau resistivitas tanah.
  • Pemetaan Zona Rawan Bencana: Mengidentifikasi area yang memiliki risiko tinggi terhadap gempa bumi, tanah longsor, atau banjir.

11.5. Regresi dan Prediksi Kuantitatif

Meskipun lebih dikenal dalam klasifikasi, SVM juga mendukung regresi melalui pendekatan Support Vector Regression (SVR), antara lain:

  • Prediksi Harga Properti: Mengestimasi nilai properti berdasarkan lokasi, ukuran, fasilitas, dan kondisi lingkungan.
  • Estimasi Permintaan Pasar: Meramalkan tren permintaan konsumen dengan mengandalkan data historis dan faktor-faktor ekonomi eksternal.

11.6. Deteksi Anomali dan Keamanan Siber

SVM efektif dalam mendeteksi pola tidak wajar pada data, menjadikannya penting dalam konteks keamanan:

  • Deteksi Penipuan Kartu Kredit: Mengidentifikasi aktivitas transaksi yang menyimpang dari kebiasaan pengguna.
  • Pemantauan Lalu Lintas Jaringan: Mendeteksi serangan siber, intrusi, atau aktivitas mencurigakan dalam sistem informasi.

11.7. Segmentasi dan Pengelompokan Data (Tidak Langsung)

Walau bukan algoritma klastering murni, pendekatan berbasis SVM dapat mendukung segmentasi data dalam konteks tertentu, seperti:

  • Segmentasi Pelanggan: Mengelompokkan konsumen berdasarkan pola perilaku atau preferensi pembelian.
  • Klasifikasi Semi-Terpandu (Semi-Supervised Learning): Menggabungkan data berlabel dan tidak berlabel dalam proses pelatihan untuk meningkatkan efisiensi pembelajaran.

12. Aplikasi SVM pada Data ‘iris’

Support Vector Machine (SVM) merupakan metode klasifikasi populer dalam kelompok soft modeling. Meskipun teori matematis di balik SVM relatif kompleks, pembahasan kali ini akan difokuskan pada penerapan praktisnya menggunakan bahasa pemrograman R. Tujuan utama bagian ini adalah mendemonstrasikan proses klasifikasi menggunakan algoritma SVM dengan berbagai kernel, serta membandingkan performa model linear dan non-linear pada data Iris yang sudah tersedia di dalam paket datasets.

12.1. Import Library dan Dataset

library(tidyverse)
library(e1071)      # Untuk model SVM
library(caret)      # Untuk evaluasi model
library(patchwork)  # Untuk menggabungkan visualisasi
library(reshape2)   # Untuk manipulasi data
# Memuat dataset Iris
data(iris)
df <- iris
head(df)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

Dataset Iris berisi 150 observasi bunga dengan 4 fitur numerik (panjang dan lebar sepal serta petal) dan satu kolom target Species. Data ini banyak digunakan untuk klasifikasi multikelas.

12.2. Eksplorasi Data

Eksplorasi awal terhadap dataset dilakukan melalui statistik deskriptif, pemeriksaan distribusi kelas, serta visualisasi hubungan antar fitur. Hasil dari fungsi summary(df) memberikan gambaran umum mengenai sebaran masing-masing variabel numerik dalam dataset.

# Statistik deskriptif dan distribusi label
summary(df)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
table(df$Species)
## 
##     setosa versicolor  virginica 
##         50         50         50

Berdasarkan hasil tersebut, variabel Sepal.Length memiliki rentang nilai dari 4.3 hingga 7.9, dengan nilai median 5.8 dan rata-rata 5.843. Variabel Sepal.Width memiliki median 3.0 dan rata-rata 3.057, sedangkan Petal.Length menunjukkan median 4.35 dan rata-rata 3.758. Fitur Petal.Width memiliki nilai median 1.3 dan rata-rata 1.199. Keempat fitur ini menunjukkan variasi yang cukup mencolok, yang berpotensi signifikan dalam membedakan antar kelas bunga.

Distribusi label kelas pada variabel Species diperiksa menggunakan fungsi table(df$Species), yang menunjukkan bahwa dataset terdiri dari tiga kelas: setosa, versicolor, dan virginica, masing-masing sebanyak 50 observasi. Hal ini mengindikasikan bahwa dataset bersifat seimbang (balanced), yang menguntungkan dalam proses pelatihan model klasifikasi karena tidak terdapat dominasi kelas tertentu yang dapat menyebabkan bias.

# Visualisasi hubungan antar fitur
pairs(df[1:4], col = df$Species, pch = 19, main = "Pairwise Plot antar Fitur")

Selanjutnya, hubungan antar fitur divisualisasikan melalui fungsi pairs(), yang menghasilkan pairwise scatter plot antar empat fitur numerik utama. Warna titik-titik pada plot disesuaikan dengan kelas pada variabel Species, yaitu:

  • Hitam untuk setosa,
  • Merah muda untuk versicolor,
  • Hijau untuk virginica.

Dari visualisasi ini, terlihat bahwa fitur Petal.Length dan Petal.Width memberikan pemisahan kelas yang paling jelas, terutama dalam membedakan spesies setosa dari dua spesies lainnya. Kelompok setosa membentuk klaster yang terpisah secara jelas dalam ruang fitur tersebut, sementara versicolor dan virginica masih menunjukkan tumpang tindih (overlap) pada beberapa kombinasi fitur, meskipun dalam tingkat yang lebih rendah. Sebaliknya, fitur Sepal.Length dan Sepal.Width menunjukkan pola pemisahan yang kurang kuat, dengan banyaknya titik dari ketiga kelas yang saling bertumpuk di area yang sama.

Temuan ini memberikan indikasi awal bahwa fitur petal lebih informatif dibandingkan fitur sepal dalam proses klasifikasi spesies bunga iris. Hal ini akan menjadi pertimbangan penting dalam pemilihan fitur dan pembentukan model machine learning selanjutnya.

12.3. Persiapan Data

set.seed(260626)
trainIndex <- createDataPartition(df$Species, p = 0.8, list = FALSE)
trainData <- df[trainIndex, ]
testData <- df[-trainIndex, ]

Dataset dibagi menjadi 80% data latih dan 20% data uji secara stratifikasi berdasarkan kelas Species. Ini memastikan distribusi kelas tetap seimbang di kedua subset.

12.4. Model SVM Linear

# Pelatihan model SVM linear
svm_linear <- svm(Species ~ ., data = trainData, kernel = "linear", cost = 1)
summary(svm_linear)
## 
## Call:
## svm(formula = Species ~ ., data = trainData, kernel = "linear", cost = 1)
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  linear 
##        cost:  1 
## 
## Number of Support Vectors:  25
## 
##  ( 2 12 11 )
## 
## 
## Number of Classes:  3 
## 
## Levels: 
##  setosa versicolor virginica
# Prediksi dan evaluasi
pred_linear <- predict(svm_linear, newdata = testData)
cm_linear <- confusionMatrix(pred_linear, testData$Species)
cm_linear
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         10          0         0
##   versicolor      0          9         1
##   virginica       0          1         9
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9333          
##                  95% CI : (0.7793, 0.9918)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : 8.747e-12       
##                                           
##                   Kappa : 0.9             
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            0.9000           0.9000
## Specificity                 1.0000            0.9500           0.9500
## Pos Pred Value              1.0000            0.9000           0.9000
## Neg Pred Value              1.0000            0.9500           0.9500
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3000           0.3000
## Detection Prevalence        0.3333            0.3333           0.3333
## Balanced Accuracy           1.0000            0.9250           0.9250

Model dilatih menggunakan formula Species ~ ., yang menyatakan bahwa keempat fitur numerik (Sepal.Length, Sepal.Width, Petal.Length, dan Petal.Width) digunakan untuk memprediksi kelas target Species. Nilai parameter cost = 1 digunakan untuk mengontrol trade-off antara maximizing the margin dan minimizing classification error. Parameter ini menentukan seberapa besar penalti yang diberikan terhadap kesalahan klasifikasi; nilai cost = 1 dianggap sebagai pilihan yang cukup konservatif untuk menghindari overfitting pada data latih yang terbatas.

Ringkasan Model

Output dari fungsi summary(svm_linear) menunjukkan beberapa informasi penting:

  • Jenis SVM: C-classification, yang cocok untuk masalah klasifikasi multi-kelas.
  • Kernel: Linear, yang digunakan untuk membentuk hyperplane linier.
  • Jumlah Support Vector: 25 buah, yang terdiri dari 2 untuk kelas setosa, 12 untuk versicolor, dan 11 untuk virginica.

Jumlah support vector mencerminkan observasi yang paling “kritis” dalam membentuk batas keputusan (decision boundary). Dalam hal ini, kelas setosa sangat mudah dipisahkan dari dua kelas lainnya, terlihat dari hanya dua support vector yang diperlukan, sedangkan versicolor dan virginica memerlukan lebih banyak support vector, yang menunjukkan bahwa batas antar keduanya lebih kompleks dan memerlukan penyesuaian margin yang lebih hati-hati.

Evaluasi Model

Model dievaluasi menggunakan data uji, dengan hasil prediksi dibandingkan terhadap label sebenarnya melalui confusion matrix:

Reference / Prediction Setosa Versicolor Virginica
Setosa 10 0 0
Versicolor 0 9 1
Virginica 0 1 9

Dari confusion matrix tersebut, dapat disimpulkan bahwa:

  • Semua observasi kelas setosa diklasifikasikan dengan benar (akurasi 100%).
  • Untuk versicolor, terdapat satu observasi yang keliru diklasifikasikan sebagai virginica.
  • Demikian pula, satu observasi dari virginica diklasifikasikan salah sebagai versicolor.

Statistik Evaluasi

Beberapa metrik penting yang diperoleh dari evaluasi model adalah sebagai berikut:

  • Akurasi keseluruhan: 93.33%, dengan interval kepercayaan 95% sebesar (0.7793, 0.9918).
  • Kappa coefficient: 0.9, menunjukkan tingkat kesepakatan yang sangat tinggi antara prediksi model dan nilai aktual di luar keberuntungan acak.
  • Balanced Accuracy: Mencapai 100% untuk setosa, dan 92.5% untuk versicolor maupun virginica, menunjukkan performa model yang baik dan cukup seimbang antar kelas.
  • Sensitivity dan Specificity: Nilai sensitivitas (true positive rate) dan spesifisitas (true negative rate) tinggi untuk seluruh kelas, mengindikasikan kemampuan model dalam mendeteksi kelas yang sebenarnya dengan baik sekaligus meminimalkan kesalahan dalam mengenali kelas lain.

Interpretasi dan Implikasi

Hasil ini memperlihatkan bahwa model SVM dengan kernel linear mampu mengklasifikasikan data iris dengan sangat baik, terutama pada kelas setosa yang secara visual dan statistik memang sangat terpisah dari dua kelas lainnya. Meskipun terdapat sedikit tumpang tindih antara versicolor dan virginica, model tetap mampu menjaga performa prediktif dengan tingkat akurasi yang tinggi dan kesalahan yang sangat rendah.

Secara keseluruhan, SVM linear terbukti menjadi model yang efisien dan akurat untuk dataset ini. Namun, untuk memperdalam analisis, pengujian menggunakan kernel non-linear (seperti radial basis function) juga dapat dipertimbangkan pada bagian selanjutnya untuk melihat apakah akurasi model dapat ditingkatkan, khususnya pada observasi yang sulit dipisahkan secara linier.

12.5. Model SVM Non-Linear (RBF Kernel)

Dalam analisis ini, model SVM dilatih menggunakan kernel radial, dengan parameter cost = 1 dan gamma = 0.5. Parameter cost mengontrol trade-off antara margin maksimum dan kesalahan klasifikasi, sedangkan gamma menentukan seberapa jauh pengaruh sebuah titik data terhadap pembentukan hyperplane.

# Pelatihan model SVM dengan kernel RBF
svm_rbf <- svm(Species ~ ., data = trainData, kernel = "radial", cost = 1, gamma = 0.5)
summary(svm_rbf)
## 
## Call:
## svm(formula = Species ~ ., data = trainData, kernel = "radial", cost = 1, 
##     gamma = 0.5)
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  radial 
##        cost:  1 
## 
## Number of Support Vectors:  50
## 
##  ( 12 18 20 )
## 
## 
## Number of Classes:  3 
## 
## Levels: 
##  setosa versicolor virginica

Hasil dari fungsi summary() menunjukkan bahwa model membentuk total 50 support vectors, yang tersebar di ketiga kelas sebagai berikut: 12 untuk setosa, 18 untuk versicolor, dan 20 untuk virginica. Jumlah support vector yang lebih besar dibandingkan dengan SVM linear (25 support vector) mengindikasikan bahwa model RBF menyerap lebih banyak informasi dari data pelatihan untuk membentuk hyperplane yang kompleks.

# Prediksi dan evaluasi
pred_rbf <- predict(svm_rbf, newdata = testData)
cm_rbf <- confusionMatrix(pred_rbf, testData$Species)
cm_rbf
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         10          0         0
##   versicolor      0         10         2
##   virginica       0          0         8
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9333          
##                  95% CI : (0.7793, 0.9918)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : 8.747e-12       
##                                           
##                   Kappa : 0.9             
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           0.8000
## Specificity                 1.0000            0.9000           1.0000
## Pos Pred Value              1.0000            0.8333           1.0000
## Neg Pred Value              1.0000            1.0000           0.9091
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.2667
## Detection Prevalence        0.3333            0.4000           0.2667
## Balanced Accuracy           1.0000            0.9500           0.9000

Evaluasi performa model ditunjukkan melalui confusion matrix berikut:

Prediction setosa versicolor virginica
setosa 10 0 0
versicolor 0 10 2
virginica 0 0 8

Akurasi keseluruhan model mencapai 93.33%, dengan nilai Kappa = 0.9, menandakan tingkat kesepakatan yang sangat tinggi antara hasil prediksi dan nilai aktual. Statistik by class menunjukkan bahwa:

  • Setosa diklasifikasikan dengan sempurna (Sensitivity dan Specificity = 1.00).
  • Versicolor memiliki Sensitivity sebesar 1.00 dan Specificity 0.90, namun terjadi sedikit over-prediction ke kelas virginica (Pos Pred Value = 0.83).
  • Virginica sedikit under-detected dengan Sensitivity sebesar 0.80, namun Specificity tetap tinggi (1.00).

Secara umum, nilai Balanced Accuracy untuk ketiga kelas berkisar antara 0.90 hingga 1.00, yang menunjukkan bahwa model mampu mengenali masing-masing kelas dengan baik meskipun terdapat beberapa minor error dalam membedakan versicolor dan virginica. Hal ini umum terjadi mengingat kemiripan morfologis antara kedua spesies tersebut dalam dataset Iris.

Interpretasi Hasil

Penggunaan kernel RBF memberikan fleksibilitas model untuk memetakan data ke ruang berdimensi tinggi, sehingga dapat menangkap struktur kompleks antar fitur yang tidak linier. Meskipun menghasilkan akurasi yang sama dengan model linear dalam kasus ini (93.33%), RBF menunjukkan fit yang lebih dalam terhadap data, ditunjukkan oleh jumlah support vector yang lebih besar dan pemisahan antar kelas yang lebih eksplisit, khususnya pada kelas versicolor.

Namun, keunggulan ini datang dengan peningkatan kompleksitas model. Oleh karena itu, pemilihan kernel sebaiknya mempertimbangkan trade-off antara interpretabilitas dan fleksibilitas, serta dilakukan melalui pendekatan eksploratif seperti cross-validation dan tuning hyperparameter (misalnya dengan grid search).

Kesimpulan Sementara

Model SVM dengan kernel RBF terbukti mampu menghasilkan performa klasifikasi yang sangat baik pada dataset Iris. Keunggulannya terletak pada kemampuannya dalam menangani non-linearitas data, sehingga cocok diterapkan pada kasus-kasus nyata yang kompleks, seperti klasifikasi gambar, pengenalan pola suara, atau data genomik. Namun, evaluasi lanjutan terhadap tuning parameter cost dan gamma masih dapat meningkatkan akurasi dan generalisasi model lebih lanjut.

12.6. Perbandingan Metrik Evaluasi

Setelah melatih dan mengevaluasi dua model Support Vector Machine (SVM), yaitu SVM Linear dan SVM Non-Linear dengan kernel Radial Basis Function (RBF), tahap selanjutnya adalah membandingkan performa keduanya secara kuantitatif menggunakan berbagai metrik evaluasi: Accuracy, Precision, Recall, dan F1-Score.

Untuk masing-masing model, metrik dihitung per kelas (setosa, versicolor, virginica) agar memberikan gambaran yang lebih detail tentang kemampuan klasifikasi terhadap masing-masing jenis spesies bunga iris. Nilai accuracy menunjukkan proporsi keseluruhan prediksi yang benar, sementara precision dan recall memberikan wawasan tentang ketepatan dan kelengkapan klasifikasi untuk tiap kelas. F1-Score sebagai harmonisasi antara precision dan recall, sangat bermanfaat dalam kondisi data tidak seimbang atau ketika kesalahan klasifikasi memiliki konsekuensi berbeda.

Berikut adalah perbandingan lengkapnya:

# Akurasi masing-masing model
acc_linear <- cm_linear$overall["Accuracy"]
acc_rbf <- cm_rbf$overall["Accuracy"]

# Precision, Recall, dan F1-score
prec_linear <- cm_linear$byClass[,"Precision"]
recall_linear <- cm_linear$byClass[,"Recall"]
f1_linear <- 2 * (prec_linear * recall_linear) / (prec_linear + recall_linear)

prec_rbf <- cm_rbf$byClass[,"Precision"]
recall_rbf <- cm_rbf$byClass[,"Recall"]
f1_rbf <- 2 * (prec_rbf * recall_rbf) / (prec_rbf + recall_rbf)

# Membuat dataframe untuk membandingkan metrik
comparison_df <- data.frame(
  Model = rep(c("SVM Linear", "SVM RBF"), each = 3),
  Class = rep(levels(testData$Species), times = 2),
  Accuracy = rep(c(acc_linear, acc_rbf), each = 3),
  Precision = c(prec_linear, prec_rbf),
  Recall = c(recall_linear, recall_rbf),
  F1_Score = c(f1_linear, f1_rbf)
)

knitr::kable(comparison_df, caption = "Perbandingan Metrik Evaluasi Tiap Model")
Perbandingan Metrik Evaluasi Tiap Model
Model Class Accuracy Precision Recall F1_Score
SVM Linear setosa 0.9333333 1.0000000 1.0 1.0000000
SVM Linear versicolor 0.9333333 0.9000000 0.9 0.9000000
SVM Linear virginica 0.9333333 0.9000000 0.9 0.9000000
SVM RBF setosa 0.9333333 1.0000000 1.0 1.0000000
SVM RBF versicolor 0.9333333 0.8333333 1.0 0.9090909
SVM RBF virginica 0.9333333 1.0000000 0.8 0.8888889

Tabel di atas menampilkan bahwa keduanya mencapai tingkat akurasi keseluruhan sebesar 93.33%, yang mencerminkan kinerja yang sangat baik pada dataset uji. Namun, ketika dievaluasi lebih dalam, terdapat perbedaan signifikan dalam perilaku masing-masing model terhadap kelas-kelas tertentu.

Model SVM Linear menunjukkan performa yang konsisten di semua kelas dengan nilai precision, recall, dan F1-score yang sama rata, menandakan bahwa model ini bekerja sangat baik ketika batas antar kelas bersifat linear dan jelas. Hal ini konsisten dengan karakteristik linear SVM yang optimal untuk pemisahan linier antar kelas.

Sementara itu, model SVM RBF, yang didesain untuk menangkap batas-batas non-linear, memberikan keunggulan tersendiri dalam mendeteksi kompleksitas kelas. Misalnya, untuk kelas versicolor, recall mencapai 1.0 meskipun precision sedikit lebih rendah (0.833), yang menunjukkan bahwa model ini sangat sensitif dalam mengenali seluruh anggota kelas tersebut. Di sisi lain, kelas virginica memiliki recall yang lebih rendah (0.8), meskipun precision-nya sempurna (1.0), yang mengindikasikan bahwa model cenderung konservatif dalam menetapkan prediksi virginica, namun akurat ketika melakukannya.

Perbedaan ini menyoroti kekuatan dari kernel RBF yang mampu memodelkan hubungan kompleks antar fitur, meskipun terkadang mengorbankan keseragaman dalam metrik antar kelas. Dalam konteks aplikasi nyata, pemilihan model terbaik sangat tergantung pada tujuan klasifikasi: apakah lebih penting meminimalkan kesalahan tipe I (false positive) atau tipe II (false negative), serta seberapa kompleks pola data yang hendak dipelajari.

Kesimpulan

Secara umum, SVM Linear lebih cocok untuk data dengan batas pemisah yang bersifat linier dan cukup jelas. Sebaliknya, SVM RBF memberikan fleksibilitas lebih tinggi untuk menangkap pola-pola non-linear dalam data, meskipun performanya bisa sedikit bervariasi antar kelas. Oleh karena itu, pemilihan kernel sebaiknya mempertimbangkan baik sifat distribusi data maupun prioritas metrik performa yang relevan dengan tujuan analisis.

12.7. Visualisasi Performa Model

# Transformasi ke format long untuk visualisasi
comparison_long <- melt(comparison_df, id.vars = c("Model", "Class"))

# Visualisasi metrik performa
ggplot(comparison_long, aes(x = Class, y = value, fill = Model)) +
  geom_bar(stat = "identity", position = "dodge") +
  facet_wrap(~variable, scales = "free_y") +
  labs(title = "Perbandingan Metrik Evaluasi SVM Linear vs RBF",
       y = "Nilai", x = "Kelas") +
  theme_minimal(base_size = 13) +
  scale_fill_manual(values = c("#00BFC4", "#F8766D"))

Visualisasi di atas menyajikan perbandingan metrik evaluasi antara dua jenis kernel Support Vector Machine (SVM), yaitu SVM Linear dan SVM dengan kernel Radial Basis Function (RBF), terhadap tiga kelas dalam dataset: setosa, versicolor, dan virginica. Metrik evaluasi yang ditampilkan meliputi Accuracy, Precision, Recall, dan F1-Score, yang masing-masing diplot secara terpisah menggunakan pendekatan faceting.

Secara umum, baik SVM Linear maupun SVM RBF menunjukkan performa yang sangat tinggi pada kelas setosa di seluruh metrik, yang mengindikasikan bahwa kelas ini paling mudah untuk dipisahkan oleh kedua model. Hal ini terlihat dari nilai evaluasi yang mendekati 1 pada seluruh metrik.

Namun, perbedaan performa mulai terlihat pada kelas versicolor dan virginica. Untuk metrik Recall, SVM RBF memberikan performa lebih tinggi pada kelas versicolor dibandingkan SVM Linear. Hal ini mengindikasikan bahwa model RBF lebih sensitif dalam mengidentifikasi anggota kelas versicolor, meskipun trade-off-nya adalah sedikit penurunan Precision dibandingkan SVM Linear. Sebaliknya, pada kelas virginica, model SVM Linear menunjukkan Recall yang sedikit lebih tinggi, tetapi Precision dan F1-Score dari kedua model relatif sebanding.

Metrik F1-Score, yang merupakan harmonisasi antara Precision dan Recall, menunjukkan bahwa SVM RBF unggul pada kelas versicolor, sementara perbedaan antar model untuk kelas virginica relatif kecil. Untuk metrik Accuracy, kedua model menunjukkan performa yang hampir identik pada seluruh kelas, yang mengindikasikan bahwa secara umum akurasi klasifikasi keduanya tinggi.

Secara keseluruhan, SVM RBF cenderung memberikan performa yang lebih baik dan konsisten terutama pada kelas yang lebih sulit diklasifikasikan seperti versicolor, yang ditandai dengan nilai Recall dan F1-Score yang relatif lebih tinggi dibandingkan SVM Linear. Hal ini menunjukkan keunggulan kernel RBF dalam menangkap pola non-linear pada data, yang tidak bisa ditangani secara optimal oleh kernel linear.

Dengan demikian, apabila kompleksitas dan waktu pelatihan bukan menjadi kendala utama, SVM RBF dapat dijadikan pilihan utama untuk mencapai hasil klasifikasi yang lebih akurat dan seimbang antar kelas, khususnya pada data dengan struktur non-linear.

12.8. Visualisasi Decision Boundary (2D)

Untuk memberikan pemahaman visual terhadap cara kerja Support Vector Machine (SVM) dalam mengklasifikasikan data, dilakukan visualisasi decision boundary menggunakan dua fitur dari dataset Iris, yaitu Sepal.Length dan Sepal.Width. Kedua fitur ini dipilih karena keduanya bersifat numerik dan memungkinkan divisualisasikan dalam ruang dua dimensi (2D).

# Menggunakan dua fitur untuk visualisasi 2D
df2 <- df %>% select(Sepal.Length, Sepal.Width, Species)

# Model SVM Linear dan RBF pada 2D
svm_linear_2d <- svm(Species ~ ., data = df2, kernel = "linear", cost = 1)
svm_rbf_2d <- svm(Species ~ ., data = df2, kernel = "radial", cost = 1, gamma = 0.5)

# Visualisasi decision boundary
par(mfrow = c(1, 2))
plot(svm_linear_2d, df2, main = "Decision Boundary - SVM Linear")

plot(svm_rbf_2d, df2, main = "Decision Boundary - SVM RBF")

Gambar Atas: Decision Boundary – SVM Linear

  • Garis batas klasifikasi (decision boundary) yang dihasilkan berbentuk linier dan membagi ruang fitur menjadi tiga area kelas (setosa, versicolor, virginica) berdasarkan dua fitur yang digunakan.
  • Model ini bekerja cukup baik dalam memisahkan kelas setosa, yang memang secara alami lebih terpisah dari dua kelas lainnya dalam ruang sepal.
  • Namun, terdapat beberapa overlap antar kelas versicolor dan virginica, yang menyebabkan model linear mengalami kesalahan klasifikasi di area tersebut. Hal ini ditunjukkan oleh titik-titik yang berada di area kelas yang salah.

Gambar Bawah: Decision Boundary – SVM RBF

  • Decision boundary yang dihasilkan oleh kernel RBF memiliki bentuk yang lebih fleksibel dan non-linier, mengikuti distribusi data secara lebih adaptif.
  • Model ini mampu menyesuaikan diri terhadap pola yang kompleks dan tumpang tindih antar kelas, seperti antara versicolor dan virginica, dengan membentuk batas yang melengkung mengikuti kontur distribusi data.
  • Dengan pendekatan ini, akurasi klasifikasi meningkat, karena model dapat memisahkan kelas-kelas yang tidak linier secara lebih efektif.

Analisis Perbandingan:

Aspek SVM Linear SVM RBF
Bentuk boundary Garis lurus Lengkung/fleksibel
Kemampuan memisah kelas Baik untuk data yang terpisah linier Lebih baik untuk data yang tumpang tindih
Kompleksitas model Lebih sederhana dan cepat Lebih kompleks dan memerlukan tuning
Overfitting Risiko overfitting rendah Risiko overfitting lebih tinggi jika tidak dituning dengan baik

Kesimpulan:

Visualisasi ini menegaskan pentingnya pemilihan kernel yang sesuai dalam algoritma SVM. Untuk data yang dapat dipisahkan secara linier, kernel linear cukup efisien. Namun, untuk kasus nyata yang lebih kompleks dengan pola distribusi non-linier, kernel RBF memberikan hasil klasifikasi yang lebih akurat karena fleksibilitasnya dalam membentuk decision boundary.

12.9. Tuning Parameter C dan Gamma

Dalam algoritma Support Vector Machine (SVM) dengan kernel non-linear seperti Radial Basis Function (RBF), pemilihan parameter cost (C) dan gamma (γ) sangat mempengaruhi kinerja model. Parameter cost mengontrol trade-off antara margin yang lebar dan kesalahan klasifikasi pada data latih, sedangkan gamma menentukan seberapa jauh pengaruh dari satu titik data terhadap titik lainnya. Oleh karena itu, proses tuning parameter merupakan tahap penting dalam optimasi model.

Prosedur Tuning

Pada eksperimen ini, dilakukan tuning parameter dengan menggunakan fungsi tune() dari paket e1071. Rentang nilai parameter yang dieksplorasi adalah:

  • cost ∈ {0.1, 1, 10}
  • gamma ∈ {0.1, 0.5, 1}

Model divalidasi menggunakan 10-fold cross-validation untuk memastikan generalisasi model terhadap data yang tidak terlihat. Prosedur ini secara sistematis mengevaluasi seluruh kombinasi parameter untuk mencari kombinasi dengan error cross-validation terendah.

set.seed(260626)
# Tuning parameter cost dan gamma
tuned <- tune(svm, Species ~ ., data = trainData,
              kernel = "radial",
              ranges = list(cost = c(0.1, 1, 10),
                            gamma = c(0.1, 0.5, 1)))
summary(tuned)
## 
## Parameter tuning of 'svm':
## 
## - sampling method: 10-fold cross validation 
## 
## - best parameters:
##  cost gamma
##     1   0.5
## 
## - best performance: 0.025 
## 
## - Detailed performance results:
##   cost gamma      error dispersion
## 1  0.1   0.1 0.12500000 0.10577463
## 2  1.0   0.1 0.03333333 0.05826716
## 3 10.0   0.1 0.05000000 0.05826716
## 4  0.1   0.5 0.10833333 0.10430546
## 5  1.0   0.5 0.02500000 0.05624571
## 6 10.0   0.5 0.05000000 0.07027284
## 7  0.1   1.0 0.05000000 0.07027284
## 8  1.0   1.0 0.05000000 0.07027284
## 9 10.0   1.0 0.05833333 0.08827916
# Model terbaik hasil tuning
best_model <- tuned$best.model

Hasil Tuning dan Interpretasi

Hasil tuning menunjukkan bahwa kombinasi parameter terbaik adalah:

  • Cost = 1
  • Gamma = 0.5

Dengan nilai cross-validation error sebesar 0.025, artinya hanya 2.5% dari observasi pada data latih yang diklasifikasikan salah selama proses validasi. Ini merupakan kinerja yang sangat baik mengingat kompleksitas dataset Iris yang relatif rendah namun tetap mengandung beberapa overlap antar kelas.

Tabel hasil lengkap tuning:

Cost Gamma Error Rate Dispersi
0.1 0.1 0.125 0.106
1.0 0.1 0.033 0.058
10.0 0.1 0.050 0.058
0.1 0.5 0.108 0.104
1.0 0.5 0.025 0.056
10.0 0.5 0.050 0.070
0.1 1.0 0.050 0.070
1.0 1.0 0.050 0.070
10.0 1.0 0.058 0.088

Dari tabel di atas, dapat disimpulkan bahwa pemilihan nilai cost yang terlalu rendah (misal 0.1) menyebabkan error yang lebih tinggi karena model terlalu permisif terhadap kesalahan klasifikasi. Sebaliknya, cost yang terlalu besar (misal 10) tidak memberikan perbaikan berarti dan bahkan bisa menyebabkan overfitting.

Evaluasi Model Terbaik terhadap Data Uji

Setelah kombinasi parameter optimal ditemukan, model SVM terbaik kemudian dievaluasi terhadap data uji:

# Evaluasi model terbaik
pred_best <- predict(best_model, newdata = testData)
confusionMatrix(pred_best, testData$Species)
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         10          0         0
##   versicolor      0         10         2
##   virginica       0          0         8
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9333          
##                  95% CI : (0.7793, 0.9918)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : 8.747e-12       
##                                           
##                   Kappa : 0.9             
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           0.8000
## Specificity                 1.0000            0.9000           1.0000
## Pos Pred Value              1.0000            0.8333           1.0000
## Neg Pred Value              1.0000            1.0000           0.9091
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.2667
## Detection Prevalence        0.3333            0.4000           0.2667
## Balanced Accuracy           1.0000            0.9500           0.9000

Hasil evaluasi ditunjukkan oleh confusion matrix berikut:

Prediction  Reference Setosa Versicolor Virginica
Setosa 10 0 0
Versicolor 0 10 2
Virginica 0 0 8

Statistik Evaluasi

  • Accuracy: 93.33%

  • 95% CI (Confidence Interval): (77.93%, 99.18%)

  • Kappa: 0.90 → menunjukkan tingkat kesepakatan sangat tinggi antara prediksi model dan label sebenarnya.

  • Class-wise Sensitivity dan Specificity:

    • Setosa: Sensitivitas 1.0 dan spesifisitas 1.0 (klasifikasi sempurna).
    • Versicolor: Sensitivitas 1.0 namun PPV sedikit menurun akibat dua prediksi salah sebagai virginica.
    • Virginica: Sensitivitas 0.8 menandakan bahwa sebagian data virginica masih sulit dibedakan dari versicolor.

Analisis dan Implikasi

Dari hasil evaluasi, model SVM yang telah dituning menunjukkan peningkatan akurasi klasifikasi secara signifikan dibanding model sebelum tuning. Dengan meminimalkan error melalui kombinasi parameter cost dan gamma yang optimal, model menjadi lebih sensitif terhadap perbedaan kelas dan mampu menangkap kompleksitas pola distribusi data.

Tuning parameter juga memperjelas bahwa meskipun SVM RBF bersifat non-linear dan powerful, kinerjanya sangat bergantung pada pemilihan parameter. Pemilihan parameter yang tidak tepat tidak hanya menurunkan performa model, tetapi juga bisa menyebabkan overfitting atau underfitting.

12.10. Analisis dan Interpretasi Hasil Evaluasi Model SVM

Setelah dilakukan pemodelan menggunakan Support Vector Machine (SVM) pada dataset Iris, bagian ini menyajikan analisis dan interpretasi menyeluruh terhadap hasil evaluasi model yang telah dibangun.

12.10.1. Evaluasi Awal: Perbandingan SVM Linear dan SVM RBF

Berdasarkan tabel Perbandingan Metrik Evaluasi Tiap Model, baik model SVM Linear maupun SVM dengan kernel RBF menunjukkan akurasi keseluruhan sebesar 93,33%. Ini mencerminkan performa klasifikasi yang sangat baik terhadap data Iris. Namun, jika ditelusuri lebih dalam berdasarkan metrik per kelas, masing-masing model menunjukkan kekuatan dan kelemahan yang berbeda.

a. Kelas Setosa

Pada kedua model, kelas Setosa berhasil diklasifikasikan secara sempurna:

  • Precision = 1.0
  • Recall = 1.0
  • F1-Score = 1.0

Hasil ini menunjukkan bahwa kelas Setosa memiliki pola fitur yang sangat khas dan mudah dibedakan dari dua kelas lainnya, sehingga tidak terjadi kesalahan klasifikasi.

b. Kelas Versicolor
  • SVM Linear: Precision dan recall masing-masing sebesar 0.90, menghasilkan F1-Score sebesar 0.90.
  • SVM RBF: Recall meningkat ke 1.0, namun precision menurun ke 0.8333, sehingga F1-Score menjadi 0.909.

Meskipun akurasi total sama, model SVM RBF menunjukkan kecenderungan lebih sensitif terhadap kelas Versicolor (tidak melewatkan sampel), namun memiliki trade-off dalam bentuk menurunnya spesifisitas, karena sebagian prediksi Versicolor ternyata salah klasifikasi.

c. Kelas Virginica
  • SVM Linear: Precision dan recall masing-masing 0.90, F1-Score 0.90.
  • SVM RBF: Precision meningkat menjadi 1.0, namun recall turun menjadi 0.8, dengan F1-Score sebesar 0.8889.

Hal ini menunjukkan bahwa SVM RBF lebih konservatif dalam mengklasifikasikan kelas Virginica — hanya memberikan prediksi jika yakin benar, namun berisiko melewatkan sejumlah sampel yang seharusnya masuk ke kelas tersebut (recall rendah).

12.10.2. Tuning Hyperparameter pada SVM RBF

Proses tuning dilakukan terhadap parameter cost dan gamma menggunakan skema 10-fold cross-validation. Hasil tuning menunjukkan:

  • Parameter Terbaik: cost = 1, gamma = 0.5
  • Performansi Terbaik (CV Error): 0.025 → setara dengan akurasi 97.5%

Kombinasi ini terbukti optimal untuk menjaga keseimbangan antara kompleksitas model dan generalisasi. Nilai gamma yang moderat (0.5) memungkinkan model menangkap pola non-linier tanpa terlalu overfit terhadap noise. Sementara itu, nilai cost = 1 memberikan margin keputusan yang cukup luas dengan toleransi terhadap kesalahan minor.

12.10.3. Evaluasi Model Terbaik (SVM RBF Tuned) pada Data Uji

Setelah proses tuning, model SVM RBF terbaik diuji pada data uji. Hasil evaluasi sebagai berikut:

  • Akurasi: 93.33%
  • Kappa: 0.9 → mengindikasikan tingkat kesesuaian yang sangat tinggi antara prediksi dan nilai aktual.
  • Confidence Interval (95%): (77.93%, 99.18%) → menunjukkan kepercayaan yang tinggi terhadap kemampuan generalisasi model.
Confusion Matrix:
Prediksi Setosa Versicolor Virginica
Setosa 10 0 0
Versicolor 0 10 2
Virginica 0 0 8

Model mampu mengklasifikasikan Setosa dengan sempurna, sedangkan terjadi kesalahan minor pada Virginica, di mana dua sampel Virginica diklasifikasikan sebagai Versicolor. Hal ini menunjukkan bahwa terdapat area tumpang tindih dalam ruang fitur antara kedua kelas tersebut, yang menjadi tantangan tersendiri dalam klasifikasi berbasis margin.

12.10.4. Statistik Evaluasi per Kelas

a. Kelas Setosa
  • Balanced Accuracy = 1.0, menunjukkan performa klasifikasi yang sempurna tanpa kesalahan, mencerminkan karakteristik kelas Setosa yang sangat mudah dibedakan dari kelas lainnya.
b. Kelas Versicolor
  • Sensitivity = 1.0 – seluruh sampel Versicolor berhasil dikenali dengan benar.
  • Specificity = 0.90 – hanya 10% dari Virginica yang salah diklasifikasikan sebagai Versicolor.
  • Balanced Accuracy = 0.95 – menandakan performa yang sangat baik dalam mendeteksi dan membedakan kelas Versicolor dari kelas lainnya.
c. Kelas Virginica
  • Sensitivity = 0.80 – masih terdapat sejumlah sampel Virginica yang gagal dikenali oleh model.
  • Precision = 1.0 – prediksi terhadap Virginica sangat tepat, tanpa kesalahan klasifikasi positif palsu.
  • Balanced Accuracy = 0.90 – kinerja masih tergolong sangat baik, meskipun terdapat ruang untuk peningkatan, khususnya dalam mendeteksi semua sampel dengan benar.

13. Kesimpulan dan Rekomendasi

  1. SVM Linear menunjukkan performa yang stabil di seluruh kelas, terutama ketika data memiliki pola linier. Model ini cocok digunakan sebagai baseline yang kuat.

  2. SVM RBF yang telah dituning memberikan kinerja lebih unggul secara keseluruhan, berkat kemampuannya menangkap pola non-linear pada data. Hal ini tercermin dari hasil evaluasi dan akurasi tinggi setelah tuning.

  3. Tuning hyperparameter (cost dan gamma) terbukti krusial dalam meningkatkan performa model SVM RBF. Tanpa tuning yang tepat, model berisiko mengalami underfitting atau overfitting.

  4. Meskipun hasil model sudah baik, masih terdapat sedikit kesalahan dalam membedakan antara Versicolor dan Virginica. Oleh karena itu, disarankan untuk:

    • Melakukan feature engineering guna menambahkan fitur yang lebih informatif.
    • Menerapkan metode reduksi dimensi seperti PCA atau t-SNE untuk eksplorasi dan pemisahan visual antar kelas.
    • Mencoba pendekatan ensemble, seperti Voting Classifier, untuk menggabungkan kekuatan dari SVM Linear dan SVM RBF, sehingga memperoleh prediksi yang lebih stabil dan akurat.

Support Vector Regression (SVR)

1. Pendahuluan: Menjawab Tantangan Regresi dalam Era Data Kompleks

Support Vector Regression (SVR) merupakan pendekatan regresi dalam ranah machine learning yang dikembangkan dari prinsip-prinsip dasar Support Vector Machine (SVM). Metode ini dirancang untuk menangani prediksi variabel kontinu dengan cara yang lebih fleksibel dan toleran terhadap noise, terutama pada data yang kompleks dan tidak selalu mengikuti pola linear. Berbeda dari metode regresi konvensional yang fokus pada minimisasi total kesalahan prediksi (seperti mean squared error), SVR memperkenalkan mekanisme batas toleransi melalui konsep yang dikenal sebagai ε-tube (epsilon-tube). Pendekatan ini menjadikan SVR sangat efektif dalam menghindari overfitting, dengan cara membiarkan sejumlah kecil kesalahan kecil tidak dikenai penalti, selama masih berada dalam batas toleransi yang wajar.

2. Memahami Konsep Epsilon-Tube: Margin Toleransi dalam Regresi

Salah satu elemen paling khas dalam SVR adalah penggunaan epsilon-tube, yaitu sebuah zona toleransi yang membentuk “selubung” di sekitar fungsi prediksi. Zona ini secara visual dapat dibayangkan sebagai sebuah terowongan dengan lebar tertentu (±ε) yang mengelilingi garis regresi. Di dalam zona ini, kesalahan prediksi dianggap dapat diterima dan tidak dikenakan penalti. Dengan kata lain, epsilon-tube adalah margin fleksibel yang memungkinkan model tetap sederhana dan robust meskipun tidak 100% akurat terhadap semua titik data.

3. Tujuan Utama SVR: Regresi yang Lebih Tahan Generalisasi

Alih-alih memaksakan prediksi yang presisi pada setiap titik data, SVR bertujuan untuk menemukan fungsi regresi dalam bentuk:

\[ f(x) = \mathbf{w}^\top \mathbf{x} + b \]

yang meminimalkan kompleksitas model (yakni norma dari vektor bobot \(\| \mathbf{w} \|\)) sembari menjaga sebagian besar prediksi tetap berada dalam epsilon-tube. Tujuan utamanya adalah:

  • Menciptakan model yang sederhana namun mampu menggeneralisasi dengan baik terhadap data baru.
  • Tidak memberikan penalti terhadap prediksi yang berada dalam rentang toleransi kesalahan ±ε.
  • Mengontrol penalti hanya untuk kesalahan yang berada di luar margin epsilon melalui epsilon-insensitive loss function, sehingga menghindari sensitivitas berlebihan terhadap outlier kecil.

4. Visualisasi Intuitif: Memahami SVR secara Geometris

Untuk memberikan intuisi yang lebih kuat, bayangkan sebuah “terowongan” atau “tube” yang membentang sepanjang garis prediksi. Ciri-cirinya adalah sebagai berikut:

  • Lebar terowongan ditentukan oleh parameter ε, yaitu ±ε dari garis regresi.
  • Titik-titik data yang berada di dalam terowongan dianggap cukup dekat dengan prediksi model, sehingga tidak dikenai penalti.
  • Sebaliknya, titik-titik yang berada di luar terowongan akan dikenai penalti sesuai dengan seberapa jauh jaraknya dari margin luar, dan ini ditangani dengan fungsi kerugian yang disebut epsilon-insensitive loss.
  • Konsep ini juga memberikan makna baru pada “support vectors”, yaitu titik-titik yang terletak di batas luar atau bahkan di luar epsilon-tube, karena mereka menjadi penentu bentuk akhir dari model regresi.

Dengan pendekatan ini, SVR menjadi solusi regresi yang tidak hanya memperhatikan akurasi, tetapi juga ketahanan model terhadap overfitting, serta kesederhanaan struktur fungsi prediksinya.

5. Mengapa SVR Menggunakan Epsilon-Tube? Menyeimbangkan Ketepatan dan Ketangguhan Model

Support Vector Regression (SVR) merupakan pengembangan dari algoritma Support Vector Machine (SVM) yang diadaptasi untuk menyelesaikan permasalahan regresi atau prediksi nilai kontinu. Salah satu keunggulan utama SVR terletak pada penerapan epsilon-tube (ε-tube), yaitu zona toleransi yang secara eksplisit dirancang untuk mengendalikan kompleksitas model dan meningkatkan kemampuannya dalam menghadapi data nyata yang penuh dengan variasi tak terduga.

Konsep epsilon-tube bukan sekadar fitur tambahan, melainkan strategi inti yang memungkinkan SVR menyeimbangkan antara ketepatan prediksi dan ketangguhan terhadap gangguan (robustness).

5.1. Mengurangi Risiko Overfitting dengan Margin Toleransi

Pada pendekatan regresi tradisional—seperti regresi linier—tujuan utamanya adalah meminimalkan keseluruhan kesalahan prediksi, termasuk kesalahan terkecil sekalipun. Meskipun strategi ini dapat menghasilkan model yang sangat akurat terhadap data pelatihan, ia juga berisiko menangkap noise atau outlier sebagai pola yang sah. Fenomena ini dikenal sebagai overfitting.

SVR mengadopsi filosofi yang berbeda: ia memperkenalkan parameter toleransi ε (epsilon), yang menentukan seberapa besar deviasi antara prediksi dan nilai aktual yang masih dianggap “tidak bermasalah”. Dengan kata lain, kesalahan kecil yang masih berada dalam jangkauan ±ε tidak dihitung sebagai kesalahan yang perlu diperbaiki.

Contoh Kasus: Misalnya, jika nilai aktual suatu data adalah 10 dan model memprediksi 10.3, maka selisih 0.3 masih dianggap dapat diterima selama ε ≥ 0.3. Tidak ada penalti atau upaya penyesuaian berlebihan yang dilakukan terhadap model.

Implikasi:

  • Model menjadi lebih stabil dan tidak terlalu sensitif terhadap fluktuasi kecil.
  • Hasil prediksi cenderung lebih general dan memiliki kinerja yang lebih baik saat diuji pada data baru (unseen data).
  • Model menghindari overfitting tanpa harus mengorbankan ketepatan secara keseluruhan.

5.2. Menoleransi Noise secara Adaptif dan Rasional

Dalam praktik nyata, hampir semua data mengandung noise—yakni gangguan acak atau kesalahan pengukuran yang tidak mencerminkan pola sejati dalam fenomena yang diamati. Metode regresi yang terlalu “perfeksionis” berisiko terganggu oleh noise ini, yang justru dapat merusak performa prediktif model secara umum.

SVR menangani hal ini dengan cara yang lebih rasional: selama kesalahan prediksi masih berada dalam margin epsilon, maka model tidak akan menanggapinya sebagai kesalahan yang perlu dikoreksi. Ini berarti bahwa SVR secara eksplisit mengakui dan mengabaikan kesalahan kecil yang bisa saja muncul karena keterbatasan instrumen, faktor eksternal, atau fluktuasi acak.

Contoh Aplikatif: Pada pengukuran suhu udara harian, deviasi sebesar ±0.2°C dari nilai sebenarnya bisa terjadi akibat sensitivitas alat ukur. SVR memahami hal ini dan tidak memaksa model untuk menyesuaikan diri terhadap setiap fluktuasi kecil seperti itu.

Manfaat:

  • SVR menjadi lebih tahan terhadap noise, sehingga cocok digunakan pada data dunia nyata yang tidak selalu “bersih”.
  • Model fokus pada pola utama atau tren global, bukan pada detail kecil yang tidak konsisten.

Dengan demikian, penggunaan epsilon-tube pada SVR bukan hanya strategi teknis, tetapi juga filosofi desain model yang lebih bijak: tidak semua kesalahan perlu dikoreksi, dan tidak semua deviasi berarti kesalahan. Pendekatan ini menghasilkan model yang lebih kuat, lebih fleksibel, dan lebih siap menghadapi kompleksitas data dunia nyata.

5.3. Fokus Hanya pada Titik Penting: Konsep Support Vectors dalam SVR

Salah satu fitur paling menarik dari Support Vector Regression (SVR) adalah efisiensinya dalam memilih titik-titik data yang benar-benar berpengaruh, yang dikenal dengan istilah support vectors. Tidak seperti regresi konvensional yang mempertimbangkan semua data untuk menyesuaikan model, SVR hanya bergantung pada sejumlah kecil titik yang berada di luar margin toleransi (ε-tube).

Secara intuitif, titik-titik yang memiliki kesalahan prediksi lebih besar dari ε akan memengaruhi struktur model secara langsung. Titik-titik inilah yang memaksa model “belajar” dan menyesuaikan diri. Sementara itu, titik-titik yang berada di dalam ε-tube dianggap sudah cukup baik, sehingga tidak memberikan kontribusi terhadap pembaruan parameter model.

Analogi sederhana: Bayangkan SVR seperti seorang guru yang hanya memberikan perhatian kepada siswa yang tertinggal terlalu jauh dari nilai minimum kelulusan (di luar margin ε), bukan kepada seluruh kelas.

Konsekuensi positif dari pendekatan ini:

  • Model menjadi lebih ringkas, karena hanya sebagian kecil data digunakan untuk pembelajaran.
  • Waktu komputasi lebih cepat, terutama saat prediksi karena hanya perlu memperhatikan support vectors.
  • Model fokus pada pola global tanpa terganggu oleh deviasi kecil atau noise lokal.

5.4. Memahami Posisi Data Terhadap Epsilon-Tube: Siapa yang Dianggap Penting?

Posisi suatu titik data terhadap ε-tube sangat menentukan apakah titik tersebut akan dianggap sebagai support vector atau tidak. Dalam kerangka SVR, setiap observasi dapat diklasifikasikan ke dalam tiga kategori berikut:

1. Di Dalam Tube:

  |yᵢ - f(xᵢ)| < ε

  • Titik data tidak dikenai penalti.
  • Tidak berkontribusi dalam optimisasi fungsi objektif.
  • Bukan support vector.

2. Tepat di Tepi Tube:

  |yᵢ - f(xᵢ)| = ε

  • Titik berada tepat di batas toleransi.
  • Termasuk support vector karena menyentuh margin.
  • Titik-titik seperti ini bersifat kritis dalam mendefinisikan bentuk tube.

3. Di Luar Tube:

  |yᵢ - f(xᵢ)| > ε

  • Kesalahan prediksi cukup besar → dikenai penalti oleh fungsi epsilon-insensitive loss.
  • Termasuk support vector.
  • Titik-titik inilah yang paling memengaruhi parameter akhir model SVR.

Visualisasi Konsep SVR dan Epsilon-Tube

Berikut adalah contoh implementasi visual SVR dengan ε-tube menggunakan ggplot2 dan gridExtra:

library(ggplot2)
library(gridExtra)
## Warning: package 'gridExtra' was built under R version 4.4.3
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
set.seed(260626)

# Data simulasi
x <- seq(0, 10, length.out = 20)
y <- 0.8 * x + rnorm(20, 0, 1)

df <- data.frame(x = x, y = y)
model_ols <- lm(y ~ x, data = df)
df$y_pred <- predict(model_ols)

# Model SVR disederhanakan dengan regresi linear sebagai ilustrasi
model_svr <- lm(y ~ x, data = df)
df$y_svr <- predict(model_svr)
epsilon <- 1

# Tube untuk SVR
tube_df <- data.frame(
  x = df$x,
  y_min = df$y_svr - epsilon,
  y_max = df$y_svr + epsilon
)

# Plot OLS
p1 <- ggplot(df, aes(x, y)) +
  geom_point() +
  geom_abline(intercept = coef(model_ols)[1], slope = coef(model_ols)[2], linetype = "dotted") +
  geom_segment(aes(xend = x, yend = y_pred), color = "darkgreen", linetype = "dashed") +
  labs(title = "Ordinary Least Squares", y = "Y", x = "X") +
  theme_bw()

# Plot SVR
p2 <- ggplot(df, aes(x, y)) +
  geom_point() +
  geom_ribbon(data = tube_df, aes(ymin = y_min, ymax = y_max), fill = "yellow", alpha = 0.4) +
  geom_line(aes(y = y_svr), linetype = "dotted") +
  geom_hline(yintercept = df$y_svr[1] + epsilon, linetype = "dashed", color = "gray") +
  geom_hline(yintercept = df$y_svr[1] - epsilon, linetype = "dashed", color = "gray") +
  labs(title = expression(paste(epsilon, "-Insensitive Tube")), y = "Y", x = "X") +
  theme_bw()

# Gabungkan dua plot
grid.arrange(p1, p2, ncol = 2)

Interpretasi Visualisasi:

  • Panel kiri (OLS): Semua titik dihitung dalam proses minimisasi kesalahan.
  • Panel kanan (SVR): Hanya titik yang berada di luar tube yang memengaruhi model secara signifikan.

Kesimpulan: Pendekatan Cerdas SVR terhadap Data

Dengan memperkenalkan margin toleransi kesalahan (ε-tube), SVR menyusun model regresi yang:

  • Tahan terhadap noise kecil, sehingga cocok untuk data dunia nyata yang tidak sempurna.
  • Terhindar dari overfitting, dengan hanya memperhatikan deviasi yang benar-benar bermakna.
  • Fokus pada titik data penting (support vectors), membuat model lebih sederhana dan efisien.

Dengan kombinasi prinsip-prinsip ini, SVR memberikan keseimbangan antara fleksibilitas dan ketegasan dalam proses pembelajaran, serta menghasilkan model yang andal, interpretatif, dan generalisable.

5.5. Margin vs Tube: Apa Perbedaannya?

Dalam konteks Support Vector Regression (SVR), sering kali muncul dua istilah yang tampak mirip namun memiliki makna dan fungsi yang berbeda: margin dan tube. Memahami perbedaan keduanya penting untuk benar-benar menguasai intuisi di balik kerja SVR.

Margin pada Support Vector Machine (SVM)

Pada klasifikasi dengan Support Vector Machine (SVM), margin merujuk pada jarak antara dua hyperplane pemisah kelas—yakni batas atas dan bawah—yang menjepit decision boundary. Tujuan dari SVM adalah memaksimalkan margin, karena semakin besar margin, semakin besar pula generalisasi model terhadap data tak terlihat (unseen data).

Tube pada Support Vector Regression (SVR)

Sementara itu, dalam Support Vector Regression, istilah yang lebih tepat adalah epsilon-insensitive tube atau cukup disebut ε-tube. Tube ini merupakan zona toleransi di sekitar fungsi regresi (fungsi prediksi) di mana kesalahan hingga sebesar ε tidak dianggap sebagai pelanggaran atau penalti. Artinya, selama prediksi jatuh di dalam ε-tube, maka SVR tidak menghitungnya sebagai kesalahan.

Perbandingan Intuitif: Margin vs Tube

Aspek SVM (Margin) SVR (Tube)
Tujuan utama Memisahkan kelas secara maksimal Mengaproksimasi fungsi target dengan toleransi error
Struktur Dua hyperplane sejajar (margin) Dua batas horizontal sejajar fungsi regresi (tube)
Peran data di luar Kontribusi terhadap fungsi biaya (loss) Kontribusi terhadap fungsi biaya (loss)
Peran data di dalam Tidak berpengaruh terhadap model Tidak dihitung sebagai kesalahan
Istilah umum digunakan Margin maximization Epsilon-insensitive loss

Kesimpulan

Walaupun secara geometrik margin dan tube sama-sama melibatkan jarak dari fungsi pusat (baik garis klasifikasi maupun regresi), fungsinya berbeda. Margin dalam SVM adalah upaya untuk menghindari ambiguitas dalam klasifikasi, sedangkan tube dalam SVR adalah bentuk toleransi terhadap noise atau kesalahan kecil. Tube memungkinkan SVR untuk fokus hanya pada data yang benar-benar menyimpang dari tren umum, sehingga lebih robust terhadap fluktuasi kecil dan noise.

5.6. Menjembatani Bias-Variance melalui Parameter Epsilon

Dalam machine learning, setiap model menghadapi dilema klasik: bias vs variance trade-off. Parameter epsilon (ε) dalam SVR memainkan peran penting dalam menyeimbangkan dua aspek ini.

Rekap Singkat: Bias dan Variance

  • Bias adalah kesalahan sistematik yang terjadi ketika model terlalu sederhana untuk menangkap kompleksitas pola dalam data (underfitting).
  • Variance adalah sensitivitas model terhadap fluktuasi kecil dalam data pelatihan, biasanya muncul pada model yang terlalu kompleks (overfitting).

Peran Epsilon dalam SVR

Epsilon (ε) dalam SVR adalah ambang batas toleransi kesalahan. Ia mendefinisikan seberapa besar kesalahan prediksi yang masih dapat diterima tanpa dikenakan penalti.

Pengaruh Nilai Epsilon:
  • Epsilon Kecil (ε → 0):

    • Tube menyempit.
    • Hampir semua titik data akan jatuh di luar tube.
    • Lebih banyak support vectors → model lebih kompleks.
    • Variansi tinggi, bias rendah.
  • Epsilon Besar (ε → besar):

    • Tube melebar.
    • Lebih banyak titik data yang diabaikan karena dianggap masih dalam toleransi.
    • Lebih sedikit support vectors → model lebih sederhana.
    • Bias tinggi, variansi rendah.

Visualisasi Intuitif:

ε kecil  →  model mengikuti data dengan ketat →  overfitting (variance ↑)
ε besar  →  model menghaluskan fluktuasi kecil →  underfitting (bias ↑)

Tuning Epsilon: Menemukan Titik Tengah

Pemilihan nilai ε sangat menentukan kualitas generalisasi model SVR. Oleh karena itu, perlu dilakukan:

  • Validasi silang (cross-validation) untuk menguji berbagai nilai ε.
  • Analisis error (MAPE, RMSE, SMAPE) untuk mengevaluasi pengaruh ε terhadap performa model.

Dalam praktiknya, pemilihan nilai ε sering dilakukan bersamaan dengan parameter lain seperti C (penalti kesalahan) dan kernel.

Kesimpulan

Parameter epsilon dalam SVR bukan sekadar angka toleransi; ia adalah mekanisme kontrol yang sangat efektif untuk menjembatani konflik antara bias dan variansi. Dengan mengatur seberapa banyak kesalahan yang dapat diterima, epsilon membantu kita menyusun model yang cukup fleksibel untuk menangkap pola, tetapi juga cukup kaku untuk tidak terlalu memanjakan noise.

6. Support Vectors: Pilar Utama dalam SVR

Dalam Support Vector Regression (SVR), support vectors adalah titik-titik data yang secara langsung memengaruhi pembentukan model regresi. Mereka bukan sekadar data observasi, melainkan representasi dari kasus-kasus kritis di mana model harus “belajar” karena kesalahannya signifikan terhadap tujuan optimasi.

Ciri-Ciri Support Vectors dalam SVR

Support vectors dalam konteks SVR dapat dikenali melalui karakteristik berikut:

  • Berada tepat di batas atau di luar ε-tube: Titik-titik ini memiliki selisih prediksi terhadap nilai aktual lebih besar dari nilai toleransi ε, atau menyentuh batas toleransi (|𝑦ᵢ − f(xᵢ)| ≥ ε).
  • Aktif dalam solusi dual problem: Dalam formulasi dual SVR, support vectors adalah data dengan nilai Lagrange multiplier αᵢ ≠ 0 atau α*ᵢ ≠ 0.
  • Menentukan parameter model: Hanya support vectors yang berkontribusi dalam penentuan parameter akhir fungsi regresi (𝑤 dan 𝑏).

Mengapa Titik di Dalam Tube “Diabaikan”?

Salah satu keunikan SVR adalah penggunaan ε-insensitive loss, di mana hanya kesalahan di luar ε yang dikenai penalti. Artinya:

Jika sebuah prediksi masih berada dalam jarak toleransi ε terhadap nilai sebenarnya, maka:

\[ |yᵢ - f(xᵢ)| \leq \epsilon \]

…maka titik tersebut tidak dihitung sebagai kesalahan.

Implikasi dari “Diabaikan”:

  • Tidak masuk dalam fungsi loss saat proses pelatihan model.
  • Tidak memengaruhi parameter model, karena tidak berkontribusi dalam optimasi.
  • Dalam solusi dual, nilai αᵢ dan α*ᵢ = 0 → bukan support vector.

Contoh Konkret

Misalkan model regresi SVR adalah:

\[ f(x) = x + 1 \]

Dan ε = 0.1. Maka:

  • Titik (2, 3.05)

    • Prediksi = 3 → Error = 0.05
    • Karena |3.05 − 3| = 0.05 < 0.1 → berada di dalam tube
    • Tidak dihukum → Tidak masuk dalam optimasi → Bukan support vector
  • Titik (2, 3.5)

    • Error = 0.5 → Melebihi ε → Di luar tube
    • Dikenai penalti → Berperan dalam menentukan w dan b → Support vector

Kesimpulan

Titik-titik di luar ε-tube — baik yang menyentuh batas atau benar-benar melampaui — adalah inti dari pembelajaran SVR. Mereka adalah satu-satunya titik yang “diperhatikan” oleh model karena memuat informasi penting tentang pelanggaran terhadap toleransi prediksi. Dengan mengabaikan kesalahan kecil dan hanya memperhitungkan penyimpangan besar, SVR menjadi model yang lebih tahan terhadap noise dan lebih fokus dalam mengenali pola sebenarnya dalam data.

7. Dasar Matematis SVR: Bangun Logika, Bukan Hanya Model

Support Vector Regression bukan sekadar model prediktif, tetapi juga merupakan pendekatan matematis yang elegan dalam menangani masalah regresi dengan mempertimbangkan ketidaksempurnaan data.

Tujuan Utama SVR

SVR berusaha membangun fungsi regresi linier:

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

…dengan tiga tujuan utama yang saling mengimbangi:

  1. Kesederhanaan model:

    • Mencapai solusi dengan norma w sekecil mungkin (‖w‖²), demi menghindari kompleksitas berlebih (regularisasi).
  2. Toleransi terhadap kesalahan kecil:

    • Kesalahan dalam rentang ±ε dianggap tidak signifikan dan tidak dikenai penalti. Ini ditangani melalui ε-insensitive loss function:

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

  3. Penalti terhadap kesalahan besar:

    • Jika prediksi menyimpang lebih dari ε, SVR memberikan penalti proporsional terhadap besarnya pelanggaran. Inilah yang menjaga model tetap akurat untuk data penting yang “keluar dari batas toleransi”.

Formulasi Optimasi SVR (Primal Form)

SVR menyelesaikan permasalahan berikut:

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

Dengan kendala:

\[ \begin{cases} 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{cases} \]

Di sini:

  • ξᵢ dan ξ*ᵢ adalah slack variables (besarnya pelanggaran dari ε).
  • C adalah parameter regularisasi → mengontrol seberapa besar penalti untuk pelanggaran di luar tube.

Kesimpulan: SVR = Logika + Toleransi + Struktur

SVR bukan hanya model regresi biasa. Ia menciptakan keseimbangan yang kuat antara:

  • Struktur matematis yang ketat (melalui optimasi dan regularisasi),
  • Kemampuan untuk mentoleransi noise kecil (ε-insensitive loss),
  • Fokus pada data penting (support vectors),
  • Dan fleksibilitas dalam menangani data nonlinier (melalui kernel trick).

Dengan memahami dasar matematisnya, kita tidak hanya tahu cara menggunakan SVR — tetapi juga mengapa dan kapan SVR menjadi pilihan terbaik dalam regresi dunia nyata.

7.1. Komponen Kunci dalam Formula SVR: Antara Kesederhanaan dan Ketelitian

Support Vector Regression (SVR) merupakan ekstensi dari Support Vector Machine (SVM) untuk kasus regresi. Pendekatannya unik karena tidak hanya berfokus pada minimisasi kesalahan prediksi, melainkan juga mempertimbangkan toleransi kesalahan dan kompleksitas model. Ada tiga pilar utama yang membentuk formulasi SVR: regularisasi, margin toleransi (ε), dan penalti terhadap pelanggaran.

1. Regularisasi: Menjaga Kesederhanaan Model

SVR memodelkan fungsi regresi linear dalam bentuk:

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

Tujuan utama dari SVR adalah menghasilkan model yang sederhana dan general, yakni model yang tidak terlalu sensitif terhadap fluktuasi data pelatihan yang mungkin mengandung noise.

Konsep kesederhanaan dalam SVR diukur melalui norma vektor bobot \(||\mathbf{w}||\). Semakin kecil nilai \(||\mathbf{w}||\), semakin datar (smooth) garis regresi yang dihasilkan. Hal ini mencegah model melakukan overfitting, yaitu belajar terlalu detail terhadap data pelatihan sehingga kehilangan kemampuan generalisasi.

Regularisasi ini secara matematis diformulasikan dalam fungsi objektif sebagai:

\[ \min \frac{1}{2} ||\mathbf{w}||^2 \]

Regularisasi berperan penting dalam:

  • Menghindari kompleksitas model yang berlebihan
  • Menstabilkan model terhadap noise data
  • Meningkatkan kemampuan prediksi pada data yang belum terlihat sebelumnya

2. Loss Function dengan Toleransi Kesalahan: Konsep ϵ-Tube

Tidak seperti regresi linear biasa yang menghukum semua kesalahan secara langsung, SVR menggunakan pendekatan ε-insensitive loss, yang hanya memberikan penalti terhadap kesalahan yang melebihi margin toleransi \(\epsilon\).

Jika prediksi model berada dalam jarak \(\epsilon\) dari nilai aktual (yakni: \(|y_i - f(x_i)| \leq \epsilon\)), maka kesalahan tersebut diabaikan. Ini berarti SVR mentoleransi kesalahan kecil yang dianggap tidak signifikan, memberikan ruang bagi model untuk menghindari overfitting terhadap fluktuasi kecil.

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

3. Penalti terhadap Pelanggaran Margin (Slack Variables)

Ketika kesalahan prediksi melampaui batas toleransi \(\epsilon\), SVR akan mengenakan penalti linier. Untuk mengakomodasi pelanggaran ini, diperkenalkan variabel slack \(\xi_i\) dan \(\xi^*_i\), yang merepresentasikan jarak pelanggaran terhadap batas tube.

Penalti secara matematis dimasukkan ke dalam fungsi objektif sebagai:

\[ C \sum_{i=1}^n (\xi_i + \xi^*_i) \]

  • \(\xi_i\): pelanggaran positif (prediksi terlalu rendah)
  • \(\xi^*_i\): pelanggaran negatif (prediksi terlalu tinggi)
  • \(C\): parameter regulasi yang mengontrol tingkat toleransi terhadap pelanggaran

Interpretasi parameter C:

  • Nilai C besar → model menghukum pelanggaran dengan lebih keras → cenderung overfitting
  • Nilai C kecil → model lebih toleran terhadap pelanggaran kecil → lebih fleksibel dan general

Formulasi Lengkap SVR (Primal Form)

\[ \min_{\mathbf{w}, b, \xi, \xi^*} \frac{1}{2} ||\mathbf{w}||^2 + C \sum_{i=1}^{n} (\xi_i + \xi^*_i) \]

Dengan syarat:

\[ \begin{aligned} y_i - (\mathbf{w}^T x_i + b) &\leq \epsilon + \xi_i \\ (\mathbf{w}^T x_i + b) - y_i &\leq \epsilon + \xi^*_i \\ \xi_i, \xi^*_i &\geq 0 \end{aligned} \]

Perbandingan Konsep Regularisasi dan Penalti dalam SVR

Aspek Regularisasi (\(\frac{1}{2} \|\mathbf{w}\|^2\)) Penalti (\(C \sum_{i=1}^{n} (\xi_i + \xi_i^*)\))
Tujuan Mengendalikan kompleksitas model untuk mencegah overfitting Mengontrol pelanggaran terhadap margin toleransi \(\varepsilon\)
Efek Menyederhanakan fungsi prediksi dengan bobot kecil Memastikan deviasi terhadap margin dihukum secara proporsional
Peran dalam Model Berfungsi sebagai batas regularisasi dalam fungsi objektif Menambahkan penalti pada kesalahan yang melebihi margin \(\varepsilon\)
Parameter Kontrol Tidak langsung dikontrol (implisit melalui kernel/struktur) Dikendalikan oleh parameter \(C\) untuk menyeimbangkan fleksibilitas dan kesalahan

Simulasi Pengaruh Nilai C dalam SVR

library(e1071)
library(ggplot2)
set.seed(260626)

# Data simulasi
x <- seq(0, 10, length.out = 100)
y <- 0.5 * x + 2 + rnorm(100, sd = 0.3)
df <- data.frame(x = x, y = y)

# Model SVR dengan C kecil
model_smallC <- svm(y ~ x, data = df, type = "eps-regression", cost = 0.1, epsilon = 0.2)
df$pred_smallC <- predict(model_smallC, df)

# Model SVR dengan C besar
model_largeC <- svm(y ~ x, data = df, type = "eps-regression", cost = 100, epsilon = 0.2)
df$pred_largeC <- predict(model_largeC, df)

# Visualisasi hasil
ggplot(df, aes(x = x)) +
  geom_point(aes(y = y), color = "gray60", alpha = 0.6) +
  geom_line(aes(y = pred_smallC), color = "blue", linewidth = 1.2, linetype = "dashed") +
  geom_line(aes(y = pred_largeC), color = "red", linewidth = 1.2) +
  labs(title = "Pengaruh Nilai C dalam SVR",
       subtitle = "Garis Merah: C besar (lebih kaku) | Garis Biru Putus-putus: C kecil (lebih fleksibel)",
       y = "y", x = "x") +
  theme_bw()

Interpretasi Visualisasi

  • Model dengan C kecil (biru putus-putus): Lebih fleksibel, toleran terhadap kesalahan kecil, dan cenderung tidak memaksakan diri untuk mengikuti outlier atau fluktuasi ekstrem.

  • Model dengan C besar (garis merah): Lebih kaku dan agresif dalam memperbaiki kesalahan prediksi di luar ϵ-tube, bahkan jika itu berarti menghasilkan model yang lebih kompleks dan berisiko overfitting.

Kesimpulan

Support Vector Regression memadukan kekuatan regularisasi, toleransi kesalahan, dan kontrol penalti untuk membangun model regresi yang tidak hanya akurat terhadap data pelatihan, tetapi juga mampu beradaptasi secara bijak terhadap noise dan menggeneralisasi dengan baik pada data baru. Kombinasi ini menjadikan SVR sebagai pilihan yang kuat dalam regresi berbasis margin dan kernel.

8. Formulasi Fungsi Objektif SVR: Tujuan dari Optimisasi

Dalam konteks regresi menggunakan Support Vector Regression (SVR), kita diberikan sekumpulan data pelatihan berupa pasangan \((\mathbf{x}_i, y_i)\), untuk \(i = 1, \dots, n\). Tujuan utama adalah membangun sebuah fungsi regresi linear:

\[ f(\mathbf{x}) = \mathbf{w}^\top \mathbf{x} + b \]

yang tidak hanya mampu melakukan prediksi \(y_i\) sedekat mungkin, tetapi juga mempertahankan kompleksitas model seminimal mungkin.

Konsep Epsilon-Tube dan Slack Variables

SVR mengadopsi pendekatan ε-insensitive loss, di mana kesalahan prediksi yang berada dalam batas toleransi \(\epsilon\) tidak dikenakan penalti. Untuk kasus di mana kesalahan prediksi melebihi margin tersebut, kita memperkenalkan dua jenis variabel kelonggaran (slack variables) yaitu \(\xi_i\) dan \(\xi_i^*\). Kedua variabel ini mengukur seberapa jauh titik data menyimpang dari batas toleransi tersebut, baik di atas maupun di bawah garis regresi.

Dengan demikian, fungsi objektif SVR (soft margin ε-insensitive) diformulasikan sebagai berikut:

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

dengan kendala:

\[ \begin{cases} y_i - \mathbf{w}^\top \mathbf{x}_i - b \leq \epsilon + \xi_i \\ \mathbf{w}^\top \mathbf{x}_i + b - y_i \leq \epsilon + \xi_i^* \\ \xi_i, \xi_i^* \geq 0 \end{cases} \]

Interpretasi:

  • \(\frac{1}{2}\|\mathbf{w}\|^2\): Komponen regularisasi yang bertujuan untuk menjaga model tetap sederhana dan menghindari overfitting.
  • \(C\): Parameter trade-off yang mengatur keseimbangan antara kompleksitas model dan toleransi terhadap pelanggaran margin ε.
  • \(\xi_i, \xi_i^*\): Mengukur seberapa besar pelanggaran data terhadap margin ε (kesalahan besar).

Melalui formulasi ini, SVR berusaha mencari model yang halus namun tetap robust, dengan tidak terlalu sensitif terhadap fluktuasi kecil pada data pelatihan.

9. Pendekatan Lagrangian: Penyelesaian dengan Metode Klasik

Untuk menyelesaikan masalah optimisasi terikat yang dijelaskan sebelumnya, digunakan pendekatan Lagrangian, yaitu teknik umum dalam optimisasi terikat yang memungkinkan kita mengubah masalah dengan kendala menjadi bentuk tanpa kendala melalui penambahan Lagrange multipliers.

Pengenalan Lagrange Multipliers

Setiap kendala dalam fungsi objektif akan dikaitkan dengan Lagrange multiplier sebagai berikut:

Kendala Lagrange Multiplier
\(y_i - (\mathbf{w}^\top \mathbf{x}_i + b) \leq \epsilon + \xi_i\) \(\alpha_i \geq 0\)
\((\mathbf{w}^\top \mathbf{x}_i + b) - y_i \leq \epsilon + \xi_i^*\) \(\alpha_i^* \geq 0\)
\(\xi_i \geq 0\) \(\eta_i \geq 0\)
\(\xi_i^* \geq 0\) \(\eta_i^* \geq 0\)

Lagrange multipliers ini bertindak sebagai “hukuman” terhadap pelanggaran kendala dan memungkinkan kita menerapkan Karush-Kuhn-Tucker (KKT) conditions, yaitu kondisi optimalitas yang sangat penting dalam teori optimisasi konveks.

Bentuk Fungsi Lagrangian

Dengan menggabungkan fungsi objektif dan kendala melalui Lagrange multipliers, kita mendapatkan bentuk fungsi Lagrangian sebagai berikut:

\[ \begin{aligned} L(\mathbf{w}, b, \xi, \xi^*, \alpha, \alpha^*, \eta, \eta^*) =\ & \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^{n} (\xi_i + \xi_i^*) \\ & - \sum_{i=1}^{n} \alpha_i (\epsilon + \xi_i - y_i + \mathbf{w}^\top \mathbf{x}_i + b) \\ & - \sum_{i=1}^{n} \alpha_i^* (\epsilon + \xi_i^* + y_i - \mathbf{w}^\top \mathbf{x}_i - b) \\ & - \sum_{i=1}^{n} \eta_i \xi_i - \sum_{i=1}^{n} \eta_i^* \xi_i^* \end{aligned} \]

Komponen Penting:

  • \(\frac{1}{2} \|\mathbf{w}\|^2\): Menjaga model tetap sederhana (regularisasi).
  • \(C \sum (\xi_i + \xi_i^*)\): Penalti terhadap pelanggaran margin ε.
  • Term-term lainnya merupakan penggabungan kendala yang memastikan semua syarat optimalitas dipenuhi.

Catatan:

Pendekatan ini adalah titik awal untuk melakukan transformasi ke dual formulation, yang membuka jalan bagi penggunaan kernel dalam SVR. Dengan kata lain, Lagrangian tidak hanya menyederhanakan masalah optimisasi, tetapi juga memungkinkan SVR untuk menangani hubungan non-linear antara fitur dan target melalui teknik kernel trick — bagian yang sangat penting dalam aplikasi praktis SVR untuk data dunia nyata.

10. Transformasi Primal ke Dual: Di Sini “Magic” Terjadi

10.1. Struktur Primal dan Dual dalam SVR

Support Vector Regression (SVR) tidak hanya bertujuan membentuk fungsi regresi yang akurat, tetapi juga menyusun formulasi matematis yang efisien secara komputasional. Dalam SVR, kita memulai dengan formulasi primal dan kemudian mengubahnya ke bentuk dual melalui pendekatan Lagrangian. Proses ini krusial karena memungkinkan penggunaan teknik kernel dan efisiensi numerik.

Mengapa Formulasi Dual Diperlukan?

Masalah regresi dalam SVR melibatkan tiga aspek utama:

  1. Minimisasi kompleksitas model melalui regularisasi norma \(\|\mathbf{w}\|^2\),
  2. Toleransi terhadap kesalahan kecil dalam batas \(\epsilon\) (ε-insensitive loss),
  3. Penalti terhadap kesalahan besar, diakomodasi melalui slack variables \(\xi_i\) dan \(\xi_i^*\).

Untuk menyelesaikan masalah ini secara sistematik dan efisien, kita menempuh dua tahap formulasi:

Formulasi Primal: Titik Awal Pemodelan

Formulasi primal adalah bentuk awal dari masalah optimisasi SVR, yang mencakup variabel langsung seperti:

  • \(\mathbf{w}\): bobot regresi,
  • \(b\): bias,
  • \(\xi_i, \xi_i^*\): variabel slack yang mencerminkan pelanggaran margin \(\epsilon\).

Tujuan utama dari formulasi ini adalah:

  • Menyusun fungsi objektif yang mencerminkan trade-off antara kesederhanaan model dan kesalahan prediksi,
  • Menetapkan batas toleransi melalui kendala berbasis \(\epsilon\).

Namun, menyelesaikan formulasi primal secara langsung sering kali tidak efisien, terutama ketika data memiliki dimensi tinggi.

Formulasi Dual: Jalan Menuju Efisiensi dan Kernelisasi

Melalui teknik Lagrangian, kita mengubah formulasi primal menjadi bentuk dual dengan mengganti variabel primal (\(\mathbf{w}, \xi_i, \xi_i^*\)) menjadi variabel dual (\(\alpha_i, \alpha_i^*\)).

Keuntungan utama dari formulasi dual:

  • Mengandalkan produk dalam antar data: \(\langle \mathbf{x}_i, \mathbf{x}_j \rangle\), yang memudahkan penerapan kernel untuk menangani hubungan non-linear.
  • Efisiensi komputasi: Dapat diselesaikan dengan metode optimisasi kuadratik (Quadratic Programming).
  • Fokus pada support vectors saja: Solusi hanya bergantung pada data yang berada di luar margin \(\epsilon\), yaitu support vectors.

Singkatnya, formulasi primal berperan penting secara konseptual, sementara formulasi dual memungkinkan penyelesaian yang efisien secara praktis, serta memperluas SVR untuk kasus non-linear melalui kernel trick.

10.2. Penurunan dan Interpretasi dari Formulasi Primal

Untuk mendapatkan solusi optimal dari formulasi primal, kita gunakan prinsip kondisi optimalitas KKT (Karush-Kuhn-Tucker). Kita hitung turunan parsial dari fungsi Lagrangian dan menyamakannya dengan nol:

  1. Turunan terhadap \(\mathbf{w}\):

\[ \frac{\partial L}{\partial \mathbf{w}} = \mathbf{w} - \sum_{i=1}^n (\alpha_i - \alpha_i^*) \mathbf{x}_i = 0 \quad \Rightarrow \quad \mathbf{w} = \sum_{i=1}^n (\alpha_i - \alpha_i^*) \mathbf{x}_i \]

  1. Turunan terhadap \(b\):

\[ \frac{\partial L}{\partial b} = \sum_{i=1}^n (\alpha_i - \alpha_i^*) = 0 \]

  1. Turunan terhadap \(\xi_i\) dan \(\xi_i^*\):

\[ \frac{\partial L}{\partial \xi_i} = C - \alpha_i - \eta_i = 0 \quad \Rightarrow \quad \alpha_i \leq C \]

\[ \frac{\partial L}{\partial \xi_i^*} = C - \alpha_i^* - \eta_i^* = 0 \quad \Rightarrow \quad \alpha_i^* \leq C \]

Dari hasil turunan ini, kita dapat menyusun bentuk dual secara penuh.

10.3. Formulasi Dual dan Peran Lagrange Multiplier \(\alpha\)

Dengan mensubstitusikan \(\mathbf{w}\) dan \(b\) ke dalam fungsi Lagrangian, kita memperoleh bentuk fungsi objektif dalam formulasi dual sebagai berikut:

\[ \max_{\alpha_i, \alpha_i^*} \quad -\frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n (\alpha_i - \alpha_i^*)(\alpha_j - \alpha_j^*) \langle \mathbf{x}_i, \mathbf{x}_j \rangle - \epsilon \sum_{i=1}^n (\alpha_i + \alpha_i^*) + \sum_{i=1}^n y_i (\alpha_i - \alpha_i^*) \]

dengan kendala:

\[ \sum_{i=1}^n (\alpha_i - \alpha_i^*) = 0, \quad 0 \leq \alpha_i, \alpha_i^* \leq C \]

Interpretasi:

  • \(\alpha_i\) dan \(\alpha_i^*\) menunjukkan kontribusi masing-masing data terhadap model akhir.
  • Hanya titik-titik yang memiliki \(\alpha_i\) atau \(\alpha_i^*\) > 0 yang mempengaruhi model; ini disebut sebagai support vectors.
  • Inner product \(\langle \mathbf{x}_i, \mathbf{x}_j \rangle\) dapat diganti dengan kernel function \(K(\mathbf{x}_i, \mathbf{x}_j)\) untuk menangani regresi non-linear.

Kesimpulan:

Transformasi dari primal ke dual tidak hanya mempermudah proses komputasi, tetapi juga membuka jalan bagi penerapan kernel trick. Ini yang membuat SVR sangat fleksibel dan powerful dalam menangani berbagai bentuk regresi, baik linier maupun non-linear.

11. Fungsi Prediksi Akhir SVR: Menggabungkan Dukungan dan Bias

Setelah proses optimisasi dual selesai, kita memperoleh dua himpunan parameter penting: \(\alpha_i\) dan \(\alpha_i^*\). Berdasarkan hasil ini, kita dapat membentuk vektor bobot sebagai:

\[ \mathbf{w} = \sum_{i=1}^{n} (\alpha_i - \alpha_i^*) \mathbf{x}_i \]

Dengan vektor bobot \(\mathbf{w}\), fungsi prediksi dalam Support Vector Regression (SVR) dinyatakan sebagai:

\[ f(\mathbf{x}) = \sum_{i=1}^{n} (\alpha_i - \alpha_i^*) \langle \mathbf{x}_i, \mathbf{x} \rangle + b \]

Penjelasan:

  • Vektor \(\mathbf{w}\) merepresentasikan kontribusi gabungan dari masing-masing data latih terhadap model regresi. Tidak seperti regresi linier biasa, bobot dalam SVR tidak dihitung secara langsung dari data, melainkan diperoleh melalui solusi optimasi dual—yakni melalui pasangan parameter \(\alpha_i\) dan \(\alpha_i^*\).

  • Notasi \(\langle \mathbf{x}_i, \mathbf{x} \rangle\) menyatakan inner product (atau dot product) antara vektor fitur dari data latih ke-\(i\) dan vektor input baru \(\mathbf{x}\) yang ingin diprediksi. Inner product ini merepresentasikan tingkat kemiripan antara dua vektor dalam ruang input.

  • Nilai \(b\) adalah bias, yang dihitung berdasarkan kondisi optimalitas (KKT conditions), dan berfungsi sebagai penyesuaian global dalam fungsi prediksi.

Dengan rumus di atas, SVR menghasilkan prediksi berdasarkan kontribusi data-data support vector, yaitu titik-titik data yang memiliki nilai \(\alpha_i - \alpha_i^* \neq 0\). Titik-titik ini berada di luar margin epsilon dan sangat berperan dalam membentuk garis (atau permukaan) regresi akhir.

12. Kernel Trick: Memperluas SVR ke Dunia Non-Linear

Support Vector Regression tidak terbatas pada relasi linier antara variabel input dan output. Untuk menangani hubungan non-linier, SVR menggunakan pendekatan yang dikenal sebagai kernel trick.

12.1. Motivasi di Balik Penggunaan Kernel

Dalam bentuk dasarnya, SVR linier hanya mampu memodelkan hubungan linear:

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

Namun dalam praktiknya, banyak fenomena nyata menunjukkan hubungan non-linier. Untuk mengatasi ini, data input dapat ditransformasikan terlebih dahulu ke ruang fitur berdimensi lebih tinggi melalui suatu fungsi \(\phi(\mathbf{x})\), sehingga model menjadi:

\[ f(\mathbf{x}) = \mathbf{w}^T \phi(\mathbf{x}) + b \]

Masalahnya, menghitung \(\phi(\mathbf{x})\) secara eksplisit sangat mahal secara komputasi, terutama untuk dimensi ruang fitur yang sangat tinggi atau bahkan tak hingga.

12.2. Kernel Trick: Menghindari Transformasi Eksplisit

Kernel trick menawarkan solusi elegan. Daripada menghitung \(\phi(\mathbf{x})\) secara eksplisit, kita cukup menghitung inner product dalam ruang fitur dengan menggunakan fungsi kernel:

\[ K(\mathbf{x}_i, \mathbf{x}_j) = \langle \phi(\mathbf{x}_i), \phi(\mathbf{x}_j) \rangle \]

Dengan demikian, semua perhitungan tetap dilakukan dalam ruang input asli, tetapi seolah-olah data telah diproyeksikan ke ruang fitur yang lebih kompleks. Hal ini memungkinkan SVR untuk menangkap pola-pola non-linier tanpa biaya transformasi eksplisit.

12.3. Jenis-Jenis Kernel yang Umum Digunakan

Berikut beberapa fungsi kernel yang sering digunakan dalam praktik SVR:

  • Linear Kernel:

    \[ K(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i^T \mathbf{x}_j \]

  • Polynomial Kernel:

    \[ K(\mathbf{x}_i, \mathbf{x}_j) = (\gamma \mathbf{x}_i^T \mathbf{x}_j + r)^d \]

  • Radial Basis Function (RBF) / Gaussian Kernel:

    \[ K(\mathbf{x}_i, \mathbf{x}_j) = \exp(-\gamma \| \mathbf{x}_i - \mathbf{x}_j \|^2) \]

  • Sigmoid Kernel:

    \[ K(\mathbf{x}_i, \mathbf{x}_j) = \tanh(\gamma \mathbf{x}_i^T \mathbf{x}_j + r) \]

Di mana \(\gamma\), \(r\), dan \(d\) adalah parameter yang dapat disesuaikan berdasarkan kebutuhan.

12.4. Intuisi di Balik Kernel RBF

Kernel RBF (Gaussian) sangat populer karena kemampuannya menghasilkan model yang sangat fleksibel dan mampu menangani variasi lokal data. Intuisinya adalah:

  • Titik data yang berdekatan → nilai kernel mendekati 1 → kontribusi kuat dalam prediksi.
  • Titik data yang berjauhan → nilai kernel mendekati 0 → kontribusinya dapat diabaikan.

Dengan demikian, kernel RBF memungkinkan SVR untuk “menyulap” pola non-linier menjadi linier secara lokal, tanpa perlu secara eksplisit memahami bentuk non-linier tersebut.

13. Studi Kasus: Menerapkan SVR pada Dataset mtcars

13.1. Persiapan: Library dan Dataset

library(e1071)       # Implementasi SVM/SVR
library(caret)       # Preprocessing dan evaluasi model
library(ggplot2)     # Visualisasi data
library(dplyr)       # Manipulasi data
library(Metrics)     # Evaluasi model: MAE, RMSE

Beberapa library yang digunakan:

  • e1071: menyediakan fungsi svm() untuk membangun model SVR.
  • caret: mempermudah proses split data, prapemrosesan, dan evaluasi model.
  • ggplot2: digunakan untuk eksplorasi visual dan plotting hasil prediksi.
  • dplyr: untuk transformasi dan seleksi data.
  • Metrics: menyediakan fungsi evaluasi seperti MAE (Mean Absolute Error) dan RMSE (Root Mean Squared Error).

13.2. Pengambilan dan Penyiapan Dataset

data("mtcars")  # Dataset bawaan R
df <- mtcars %>%
  select(mpg, hp) %>%              # Pilih dua variabel
  rename(Target = mpg, Feature = hp)  # Ganti nama kolom
head(df)
##                   Target Feature
## Mazda RX4           21.0     110
## Mazda RX4 Wag       21.0     110
## Datsun 710          22.8      93
## Hornet 4 Drive      21.4     110
## Hornet Sportabout   18.7     175
## Valiant             18.1     105

Dalam studi kasus ini, digunakan dua variabel:

  • Target (Y): mpg — mil per galon (efisiensi bahan bakar).
  • Feature (X): hp — horsepower (daya mesin).

Variabel diubah namanya untuk meningkatkan kejelasan dan keterbacaan saat pemodelan.

13.3. Eksplorasi dan Normalisasi Data

Sebelum membangun model SVR, penting untuk melakukan standarisasi atau normalisasi fitur. SVR—terutama yang menggunakan kernel seperti RBF—sangat sensitif terhadap perbedaan skala antar variabel karena melibatkan perhitungan jarak (misalnya, dalam fungsi kernel Gaussian).

Proses standarisasi dilakukan dengan z-score normalization:

\[ x_{\text{scaled}} = \frac{x - \bar{x}}{\sigma} \]

Berikut adalah implementasinya:

df_scaled <- df %>%
  mutate(across(everything(), scale))  # Standarisasi semua kolom
summary(df_scaled)
##       Target.V1            Feature.V1     
##  Min.   :-1.6078826   Min.   :-1.3810318  
##  1st Qu.:-0.7741273   1st Qu.:-0.7319924  
##  Median :-0.1477738   Median :-0.3454858  
##  Mean   : 0.0000000   Mean   : 0.0000000  
##  3rd Qu.: 0.4495434   3rd Qu.: 0.4858679  
##  Max.   : 2.2912716   Max.   : 2.7465668

Mengapa Standarisasi Penting dalam SVR?

  1. Menyeimbangkan Skala Fitur: Variabel dengan skala besar dapat mendominasi perhitungan jarak antar titik, sehingga membuat model bias terhadap fitur tertentu. Dengan standarisasi, kontribusi tiap fitur menjadi setara.

  2. Meningkatkan Stabilitas Algoritma Optimisasi: SVR melibatkan optimisasi fungsi objektif (melalui metode dual). Ketika fitur tidak diskalakan, solver bisa mengalami kesulitan untuk konvergen secara efisien dan akurat.

  3. Mempermudah Interpretasi Model (untuk SVR linier): Dalam model linier, koefisien hasil regresi dapat dibandingkan langsung ketika fitur telah memiliki distribusi yang seragam.

Catatan Penting: Hindari Data Leakage

Proses standarisasi harus dilakukan hanya pada data latih, dan kemudian mean serta standar deviasi dari data latih digunakan untuk mentransformasikan data uji. Hal ini penting agar informasi dari data uji tidak ‘bocor’ ke proses pelatihan.

Jika menggunakan paket seperti caret, hal ini dapat diatur otomatis melalui argumen preProcess.

13.4. Pembagian Data: Data Latih vs. Data Uji

set.seed(260626)  # Reproducibility
train_index <- createDataPartition(df_scaled$Target, p = 0.8, list = FALSE)

train_data <- df_scaled[train_index, ]
test_data  <- df_scaled[-train_index, ]

Dataset dibagi menjadi dua bagian:

  • 80% data latih (training set): Digunakan untuk membangun model.
  • 20% data uji (testing set): Digunakan untuk mengevaluasi performa model pada data yang belum pernah dilihat sebelumnya.

Pembagian ini bertujuan untuk menghindari overfitting serta memberikan estimasi kinerja model yang realistis terhadap data baru.

13.5. Model Baseline: Regresi Linier (OLS)

model_lm <- lm(Target ~ Feature, data = train_data)
summary(model_lm)
## 
## Call:
## lm(formula = Target ~ Feature, data = train_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.9140 -0.2948 -0.1301  0.2352  1.4034 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.02646    0.11358   0.233    0.818    
## Feature     -0.72297    0.11310  -6.392 9.02e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6002 on 26 degrees of freedom
## Multiple R-squared:  0.6111, Adjusted R-squared:  0.5962 
## F-statistic: 40.86 on 1 and 26 DF,  p-value: 9.02e-07
pred_lm <- predict(model_lm, newdata = test_data)

rmse_lm <- rmse(test_data$Target, pred_lm)
mae_lm  <- mae(test_data$Target, pred_lm)
r2_lm   <- R2(pred_lm, test_data$Target)

Sebagai model pembanding (baseline), digunakan regresi linier sederhana (OLS). Model ini mengasumsikan hubungan linier antara variabel Feature dan Target. Evaluasi dilakukan menggunakan tiga metrik utama:

  • RMSE (Root Mean Squared Error): Mengukur seberapa besar kesalahan prediksi secara rata-rata dalam satuan aslinya.
  • MAE (Mean Absolute Error): Rata-rata selisih absolut antara nilai aktual dan prediksi.
  • R² (Koefisien Determinasi): Proporsi variasi dalam target yang dapat dijelaskan oleh model.

Nilai-nilai ini akan digunakan sebagai pembanding untuk model SVR.

13.6. SVR Linear: Model Dasar SVR

model_svr_linear <- svm(
  Target ~ Feature,
  data = train_data,
  kernel = "linear",
  epsilon = 0.1,
  cost = 1
)

pred_svr_linear <- predict(model_svr_linear, newdata = test_data)

rmse_linear <- rmse(test_data$Target, pred_svr_linear)
mae_linear  <- mae(test_data$Target, pred_svr_linear)
r2_linear   <- R2(pred_svr_linear, test_data$Target)

Model SVR dengan kernel linear merupakan bentuk dasar dari Support Vector Regression. Karakteristiknya:

  • epsilon (ε): Mengontrol zona margin bebas penalti di sekitar garis prediksi. Titik data dalam margin tidak dikenai penalti.
  • cost (C): Mengontrol toleransi terhadap kesalahan. Nilai C yang besar membuat model cenderung overfitting; nilai kecil membuat model lebih toleran terhadap deviasi kecil.

Model ini cocok jika hubungan antara variabel prediktor dan target diperkirakan bersifat linier.

13.7. SVR RBF: Model Non-Linear yang Fleksibel

model_svr_rbf <- svm(
  Target ~ Feature,
  data = train_data,
  kernel = "radial",
  epsilon = 0.1,
  cost = 1,
  gamma = 0.5
)

pred_svr_rbf <- predict(model_svr_rbf, newdata = test_data)

rmse_rbf <- rmse(test_data$Target, pred_svr_rbf)
mae_rbf  <- mae(test_data$Target, pred_svr_rbf)
r2_rbf   <- R2(pred_svr_rbf, test_data$Target)

Model ini menggunakan kernel Radial Basis Function (RBF) untuk memodelkan hubungan non-linier antara Feature dan Target. Kelebihannya:

  • gamma (γ): Menentukan seberapa jauh pengaruh satu titik data menyebar. Nilai kecil → pengaruh lebih global, nilai besar → pengaruh lebih lokal.
  • Cocok ketika pola hubungan antar variabel tidak linier dan kompleks.

Model RBF sering menjadi default pilihan dalam SVR karena fleksibilitasnya dalam menyesuaikan bentuk fungsi regresi terhadap data.

13.8. Perbandingan Metrik Kinerja: Evaluasi Kuantitatif Model Regresi

Evaluasi performa model merupakan tahapan krusial dalam proses pemodelan prediktif. Tujuannya adalah menilai seberapa baik model mampu menangkap pola data dan memprediksi nilai target dengan akurat pada data yang belum pernah dilihat sebelumnya.

Pada bagian ini, kita membandingkan tiga model regresi yang telah dibangun:

  • Regresi Linier (OLS)
  • SVR dengan kernel Linear
  • SVR dengan kernel RBF (Radial Basis Function)

Ketiga model dievaluasi menggunakan metrik regresi umum:

  • RMSE (Root Mean Squared Error) Mengukur deviasi prediksi terhadap nilai aktual dalam satuan asli target. Bersifat sensitif terhadap outlier karena penalti terhadap error besar lebih tinggi.

  • MAE (Mean Absolute Error) Rata-rata kesalahan absolut. Lebih robust terhadap pencilan karena tidak mengkuadratkan selisih.

  • R² (Koefisien Determinasi) Mengukur proporsi variabilitas target yang dapat dijelaskan oleh model. Nilai mendekati 1 menunjukkan kualitas prediksi yang tinggi.

Implementasi Evaluasi Model

metrics <- data.frame(
  Model = c("OLS", "SVR Linear", "SVR RBF"),
  RMSE = c(rmse_lm, rmse_linear, rmse_rbf),
  MAE  = c(mae_lm, mae_linear, mae_rbf),
  R2   = c(r2_lm, r2_linear, r2_rbf)
)

knitr::kable(metrics, caption = "Tabel Perbandingan Performansi Model Regresi pada Data Uji")
Tabel Perbandingan Performansi Model Regresi pada Data Uji
Model RMSE MAE R2
OLS 0.8759779 0.7942395 0.8311531
SVR Linear 0.8951931 0.7464583 0.8311531
SVR RBF 0.7521234 0.6412627 0.9053028

Interpretasi Hasil Evaluasi

  • SVR dengan Kernel RBF memberikan performa terbaik:

    • Nilai RMSE dan MAE terendah → kesalahan prediksi terkecil secara keseluruhan.
    • Nilai R² tertinggi (misalnya: 0.905) → mampu menjelaskan lebih dari 90% variasi target.
    • Mengindikasikan bahwa model ini efektif menangkap hubungan non-linear antara horsepower dan konsumsi bahan bakar.
  • Regresi Linier dan SVR Linear menunjukkan performa serupa:

    • Nilai R² hampir identik, namun SVR Linear menghasilkan MAE sedikit lebih rendah, menandakan prediksi yang lebih stabil di sekitar nilai tengah.
    • Namun, RMSE yang lebih tinggi dibanding OLS menunjukkan bahwa SVR Linear sedikit lebih terpengaruh oleh kesalahan besar.
  • Perbedaan kinerja yang signifikan antara model linier dan non-linier menunjukkan bahwa relasi antara variabel tidak sepenuhnya linier, sehingga pendekatan kernel sangat membantu dalam meningkatkan akurasi.

13.9. Visualisasi SVR Linear: Epsilon-Tube dan Margin

Visualisasi berikut memberikan pemahaman intuitif terhadap cara kerja SVR Linear, khususnya konsep epsilon-tube yang menjadi fondasi dari fungsi kerugian (loss function) dalam Support Vector Regression:

ggplot(train_data, aes(x = Feature, y = Target)) +
  geom_point(color = "steelblue", size = 3) +
  geom_line(aes(y = predict(model_svr_linear, train_data)), color = "red", size = 1.2) +
  geom_line(aes(y = predict(model_svr_linear, train_data) + 0.1), 
            linetype = "dashed", color = "darkgreen") +
  geom_line(aes(y = predict(model_svr_linear, train_data) - 0.1), 
            linetype = "dashed", color = "darkgreen") +
  labs(
    title = "SVR Linear: Visualisasi Hyperplane dan Epsilon-Tube (ε = ±0.1)",
    x = "Horsepower (Feature)",
    y = "MPG (Target)"
  ) +
  theme_minimal(base_size = 13)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Penjelasan Visualisasi

  • Garis Merah (Prediksi Model SVR) Menunjukkan hyperplane atau garis prediksi yang dihasilkan oleh SVR linear.

  • Garis Putus-Putus Hijau (Epsilon-Tube) Batas atas dan bawah dari zona toleransi (±epsilon) di mana kesalahan prediksi tidak dikenakan penalti. Ini mencerminkan epsilon-insensitive loss, khas dari SVR.

  • Titik Biru (Data Latih) Data asli. Titik-titik di luar zona hijau merupakan support vectors — yakni data yang menentukan posisi optimal hyperplane karena melampaui margin epsilon.

Makna Praktis Epsilon-Tube

  • Model SVR tidak menghukum kesalahan kecil selama masih dalam margin epsilon. Hal ini menciptakan ketahanan terhadap noise kecil dan mengurangi risiko overfitting.
  • Support Vectors adalah data penting yang “mendorong” batas margin. Hanya mereka yang memiliki kontribusi eksplisit terhadap fungsi objektif.

Visualisasi ini memperjelas prinsip SVR linear sebagai kompromi optimal antara simplicity (garis linier) dan toleransi kesalahan (epsilon-insensitivity).

13.10. Tuning Hyperparameter SVR RBF

Model SVR dengan kernel RBF memerlukan pemilihan hyperparameter yang cermat untuk menghindari overfitting maupun underfitting. Tiga parameter utama yang perlu disetel:

  • epsilon (ε): Ukuran margin bebas penalti.
  • cost (C): Penalti terhadap pelanggaran margin.
  • gamma: Parameter kernel RBF yang mengontrol kompleksitas model (besarnya pengaruh tiap data terhadap prediksi).

Implementasi Grid Search dengan tune()

set.seed(123)
tuned <- tune(
  svm, 
  Target ~ Feature, 
  data = train_data, 
  kernel = "radial",
  ranges = list(
    epsilon = c(0.1, 0.2, 0.3),
    cost = c(0.1, 1, 10),
    gamma = c(0.1, 0.5, 1)
  )
)

summary(tuned)
## 
## Parameter tuning of 'svm':
## 
## - sampling method: 10-fold cross validation 
## 
## - best parameters:
##  epsilon cost gamma
##      0.2   10   0.1
## 
## - best performance: 0.262275 
## 
## - Detailed performance results:
##    epsilon cost gamma     error dispersion
## 1      0.1  0.1   0.1 0.6954054  0.7278891
## 2      0.2  0.1   0.1 0.6832580  0.7309021
## 3      0.3  0.1   0.1 0.7335557  0.7749567
## 4      0.1  1.0   0.1 0.3582354  0.4311779
## 5      0.2  1.0   0.1 0.3657534  0.4485988
## 6      0.3  1.0   0.1 0.3453682  0.4109137
## 7      0.1 10.0   0.1 0.2748831  0.2836492
## 8      0.2 10.0   0.1 0.2622750  0.2781861
## 9      0.3 10.0   0.1 0.2921392  0.2942016
## 10     0.1  0.1   0.5 0.5763221  0.6383692
## 11     0.2  0.1   0.5 0.5885822  0.6579643
## 12     0.3  0.1   0.5 0.6023520  0.6846734
## 13     0.1  1.0   0.5 0.3533340  0.3523991
## 14     0.2  1.0   0.5 0.3252486  0.3370706
## 15     0.3  1.0   0.5 0.3046858  0.3021189
## 16     0.1 10.0   0.5 0.3398367  0.3068958
## 17     0.2 10.0   0.5 0.3161572  0.2782224
## 18     0.3 10.0   0.5 0.3103831  0.2531039
## 19     0.1  0.1   1.0 0.5852364  0.6325069
## 20     0.2  0.1   1.0 0.5836292  0.6396939
## 21     0.3  0.1   1.0 0.6007940  0.6566556
## 22     0.1  1.0   1.0 0.3506588  0.3333726
## 23     0.2  1.0   1.0 0.3496392  0.3271573
## 24     0.3  1.0   1.0 0.3294452  0.3214134
## 25     0.1 10.0   1.0 0.3296097  0.3047940
## 26     0.2 10.0   1.0 0.3240562  0.3157367
## 27     0.3 10.0   1.0 0.3240837  0.2940112

Penjelasan Output

  • Fungsi tune() akan melakukan eksplorasi grid search terhadap semua kombinasi parameter.

  • Untuk setiap kombinasi, dilakukan k-fold cross-validation (default: 10-fold) pada data latih.

  • Kombinasi dengan error terkecil (MSE) dianggap sebagai konfigurasi terbaik.

  • Output summary(tuned) mencakup:

    • Metrik MSE untuk masing-masing kombinasi
    • Kombinasi parameter optimal
    • Model SVR terbaik (tuned$best.model)

13.11. Visualisasi Akurasi Prediksi Model

Visualisasi berikut bertujuan membandingkan hasil prediksi terhadap nilai aktual dari tiga model regresi:

  • Regresi Linier (OLS)
  • SVR Linear
  • SVR dengan Kernel RBF

Dengan menggunakan scatterplot dua dimensi, kita dapat menilai ketepatan prediksi model secara visual berdasarkan kedekatan titik terhadap garis ideal y = x.

library(reshape2)
library(ggplot2)

# Menggabungkan hasil prediksi dan nilai aktual
df_pred <- data.frame(
  Actual = test_data$Target,
  OLS = pred_lm,
  SVR_Linear = pred_svr_linear,
  SVR_RBF = pred_svr_rbf
)

# Melakukan melt agar long format
df_melt <- melt(df_pred, id.vars = "Actual", variable.name = "Model", value.name = "Predicted")

# Plot perbandingan prediksi vs aktual
ggplot(df_melt, aes(x = Actual, y = Predicted, color = Model)) +
  geom_point(size = 3, alpha = 0.7) +
  geom_abline(slope = 1, intercept = 0, linetype = "dotted", color = "black", linewidth = 1) +
  labs(
    title = "Perbandingan Akurasi Prediksi: OLS vs SVR Linear vs SVR RBF",
    x = "Nilai Aktual (Actual)",
    y = "Nilai Prediksi (Predicted)"
  ) +
  scale_color_manual(values = c("OLS" = "red", "SVR_Linear" = "forestgreen", "SVR_RBF" = "steelblue")) +
  theme_minimal(base_size = 13)

Penjelasan Visualisasi

Grafik ini menyajikan posisi prediksi model terhadap nilai aktual pada data uji:

  • Sumbu X: Nilai aktual dari variabel target (Target).
  • Sumbu Y: Nilai prediksi dari masing-masing model.
  • Garis hitam putus-putus (y = x): Representasi ideal di mana prediksi tepat sama dengan nilai aktual.

Interpretasi dan Analisis Kinerja Model

Regresi Linier (OLS)
  • Banyak titik tersebar cukup jauh dari garis diagonal, terutama di area ekstrem.
  • Cenderung undersetimate atau oversetimate nilai aktual pada ujung distribusi.
  • Indikasi: Model OLS gagal menangkap ketidakterlinieran hubungan antara fitur dan target.
SVR Linear
  • Titik-titik hijau umumnya lebih dekat ke garis diagonal pada rentang nilai tengah.
  • Kelebihan: Regularisasi SVR membuatnya lebih tahan terhadap outlier dibanding OLS.
  • Keterbatasan: Masih linear, sehingga tidak cukup fleksibel untuk pola yang kompleks.
SVR RBF
  • Titik biru terlihat paling rapat dengan garis diagonal di seluruh rentang nilai aktual.
  • Menunjukkan akurasi tinggi dan generalisasi yang baik.
  • Kekuatan utama: Kernel RBF mampu memodelkan hubungan non-linear secara efektif.

Kesimpulan Visualisasi

Visualisasi ini memperjelas bahwa:

  • SVR-RBF unggul secara visual dan kuantitatif dalam mendekati nilai aktual.
  • OLS memiliki kelemahan utama dalam menangkap pola non-linear.
  • SVR Linear menjadi kompromi antara kompleksitas dan ketahanan terhadap noise, namun masih kalah dari RBF dalam hal akurasi keseluruhan.

Visualisasi prediksi ini merupakan alat yang sangat penting dalam evaluasi model regresi — tidak hanya dari sisi metrik numerik (RMSE, MAE, R²), tetapi juga dalam memahami bagaimana model berperilaku terhadap distribusi nilai target secara menyeluruh.

13.12. Kesimpulan Studi Kasus: Insight dan Rekomendasi

Studi kasus ini mengevaluasi performa tiga pendekatan regresi—OLS, SVR Linear, dan SVR RBF—dalam konteks pemodelan prediktif terhadap data dengan potensi pola non-linear. Analisis yang dilakukan secara menyeluruh menghasilkan sejumlah insight substantif dan rekomendasi strategis yang relevan untuk praktik analisis data di berbagai bidang.

Insight Utama dari Analisis Model

  1. Akurasi Prediktif: SVR RBF Unggul

    • Model Support Vector Regression (SVR) dengan kernel Radial Basis Function (RBF) terbukti menghasilkan prediksi paling akurat. Ini terlihat dari konsistensinya dalam menghasilkan nilai prediksi yang sangat dekat dengan nilai aktual, baik secara visual (plot scatter) maupun kuantitatif (RMSE, MAE, R²).
    • Kinerja unggul ini menunjukkan kemampuan model dalam menangkap struktur data yang non-linier, yang tidak dapat dijelaskan secara efektif oleh model linier.
  2. Keterbatasan Model Linier (OLS)

    • Model Ordinary Least Squares (OLS), meskipun mudah diinterpretasi dan efisien secara komputasional, menunjukkan kelemahan dalam menghadapi non-linearitas dan variabilitas tinggi.
    • Deviasi sistematis pada prediksi nilai ekstrem menandakan bahwa OLS memiliki keterbatasan dalam hal fleksibilitas model.
  3. Performa Menengah: SVR Linear

    • SVR Linear memberikan hasil yang lebih stabil dibanding OLS, khususnya dalam mengendalikan pengaruh outlier dan overfitting.
    • Namun demikian, keterbatasannya dalam memodelkan relasi non-linear menjadikannya solusi sub-optimal dibanding SVR RBF dalam konteks data ini.

Rekomendasi Strategis

Berikut adalah saran implementatif berdasarkan hasil temuan:

  • Prioritaskan SVR-RBF untuk Data Non-Linear Gunakan SVR dengan kernel RBF sebagai model utama untuk dataset yang memperlihatkan karakteristik non-linier, karena kemampuannya menangani hubungan kompleks tanpa memerlukan transformasi eksplisit terhadap fitur.

  • Gunakan OLS sebagai Baseline Interpretatif Model OLS tetap bermanfaat sebagai baseline awal dan untuk keperluan interpretasi koefisien, terutama dalam tahap eksplorasi data atau ketika hubungan linier masih relevan.

  • Validasi Kuantitatif Multi-Metrik Evaluasi performa model sebaiknya menggabungkan metrik RMSE, MAE, dan R² agar mencakup berbagai aspek kesalahan prediksi dan kemampuan model dalam menjelaskan variasi data.

  • Terapkan Cross-Validation Untuk menghindari overfitting dan memperoleh estimasi generalisasi yang lebih robust, sangat disarankan menggunakan k-fold cross-validation dalam proses tuning dan evaluasi model.

  • Feature Engineering Lanjutan Jika performa model masih kurang memadai, pertimbangkan pendekatan lanjutan seperti:

    • Transformasi fitur (log, polynomial, interaction)
    • Seleksi fitur berbasis korelasi atau mutual information
    • Reduksi dimensi (PCA) atau teknik embedded (Lasso, RFE)

Implikasi Praktis

Hasil dari studi ini menekankan bahwa:

Pemilihan model yang efektif bergantung pada karakteristik struktural data. Model yang lebih kompleks seperti SVR-RBF dapat memberikan keuntungan signifikan ketika data menunjukkan pola yang tidak dapat dijelaskan dengan pendekatan linier.

Pendekatan berbasis eksperimen, visualisasi prediksi, dan evaluasi metrik kuantitatif akan lebih andal dalam memastikan akurasi model dan relevansi aplikatif, khususnya untuk data dengan kompleksitas tinggi seperti:

  • Data Time Series
  • Data Sosial Ekonomi
  • Data Lingkungan atau Medis dengan non-linearity inherent

14. Pengembangan Lanjut SVR: Beyond the Basics

Support Vector Regression (SVR) merupakan metode regresi berbasis margin yang telah terbukti handal, khususnya dalam menangani hubungan non-linier dan kompleks antar variabel. Seiring meningkatnya kompleksitas kebutuhan prediksi di berbagai sektor, SVR pun berkembang ke berbagai bentuk yang lebih canggih dan aplikatif. Berikut ini tiga arah pengembangan SVR yang penting untuk diketahui dan diterapkan dalam praktik data science kontemporer.

14.1. Multi-Output SVR: Regresi untuk Banyak Target

Secara default, SVR ditujukan untuk regresi satu variabel target kontinu. Namun, dalam banyak kasus dunia nyata seperti prediksi cuaca, sistem rekomendasi, atau prediksi keuangan multivariabel, kita sering kali perlu memodelkan lebih dari satu target secara simultan. Inilah peran dari pendekatan Multi-Output SVR (MO-SVR).

Implementasi di R

Karena e1071::svm() tidak mendukung output multivariabel secara langsung, strategi yang umum digunakan adalah melatih model SVR secara terpisah untuk tiap variabel target.

library(e1071)

# Simulasi data multi-target
set.seed(260626)
X <- matrix(rnorm(100 * 5), ncol = 5)
Y <- data.frame(
  y1 = 2 * X[,1] + rnorm(100),
  y2 = X[,2]^2 + rnorm(100)
)

# Model SVR untuk masing-masing target
model_y1 <- svm(X, Y$y1, kernel = "radial")
model_y2 <- svm(X, Y$y2, kernel = "radial")

# Prediksi
pred_y1 <- predict(model_y1, X)
pred_y2 <- predict(model_y2, X)

Catatan Praktis:

  • Pendekatan ini tidak mempertimbangkan korelasi antar target, karena model dilatih secara independen.
  • Untuk kasus dengan target yang saling berhubungan, pendekatan multi-output regression yang terkoordinasi (seperti MultiOutputRegressor di scikit-learn, atau pendekatan multivariate kernel di SVM) lebih disarankan.

14.2. SVR untuk Time Series Forecasting

Meskipun SVR tidak dirancang khusus untuk data deret waktu, pendekatan transformasi lagged memungkinkan SVR digunakan secara efektif dalam prediksi time series. Strategi ini mengubah data deret waktu menjadi format supervised learning: nilai masa lalu sebagai input, dan nilai saat ini sebagai target.

library(e1071)

# Contoh data time series
data("AirPassengers")
ts_data <- AirPassengers

# Transformasi ke supervised learning (lag = 12)
lagged_data <- embed(ts_data, 13)
X <- lagged_data[, 2:13]
y <- lagged_data[, 1]

# Latih model SVR
svr_ts <- svm(X, y, kernel = "radial")

# Prediksi
forecast <- predict(svr_ts, X)

Penjelasan:

  • embed() mengubah data deret waktu menjadi format lag matrix, cocok untuk input supervised learning.
  • Kernel RBF membantu menangkap pola musiman dan tren non-linier dalam time series.
  • Untuk prediksi jangka panjang (multi-step ahead), strategi seperti recursive forecasting atau direct forecasting perlu diterapkan.

14.3. SVR dalam High-Dimensional Feature Spaces

Dalam beberapa kasus seperti prediksi genomik, teks, atau gambar, kita berhadapan dengan data berdimensi sangat tinggi. SVR tetap kompetitif dalam situasi ini karena:

  • Kemampuan kernel untuk bekerja dalam ruang fitur berdimensi tinggi tanpa eksplisit menghitung proyeksi fitur (trik kernel).
  • Regularisasi C pada SVR mengendalikan kompleksitas model dan mencegah overfitting.

Untuk dimensi sangat tinggi, pertimbangkan:

  • Linear SVR dengan kernel “linear” dan regularisasi kuat (C kecil).
  • Teknik seleksi fitur atau PCA (Principal Component Analysis) sebagai pra-pemrosesan.
  • Alternatif: svmpath, kernlab, atau integrasi dengan caret untuk pipeline machine learning modular.

14.3. SVR sebagai Bagian dari Model Ensemble

Support Vector Regression (SVR) dapat menjadi komponen penting dalam strategi ensemble learning, di mana kekuatan SVR dalam menangkap hubungan non-linier dapat dikombinasikan dengan model lain untuk meningkatkan akurasi dan stabilitas prediksi.

Pendekatan yang Didukung:

  • Stacking: Menggabungkan beberapa model prediktif, termasuk SVR, dan melatih model meta-learner untuk menghasilkan prediksi akhir.
  • Bagging: Bisa digunakan dengan SVR, meskipun SVR relatif sensitif terhadap resampling karena tidak bersifat sangat varians-tinggi.
  • Boosting: Jarang diterapkan langsung dengan SVR, tetapi bisa digunakan jika SVR dimodifikasi untuk bekerja dalam kerangka boosting berbasis fungsi.

Contoh Implementasi Stacking dengan caretEnsemble:

library(caret)
library(caretEnsemble)
## Warning: package 'caretEnsemble' was built under R version 4.4.3
# Pastikan X adalah data.frame
X <- as.data.frame(X)

# Setup kontrol untuk cross-validation
ctrl <- trainControl(method = "cv", number = 5, savePredictions = "final")

# Daftar model base
models <- caretList(
  x = X, y = y,
  trControl = ctrl,
  methodList = c("svmRadial", "rf", "glm")
)

# Model ensemble via stacking
ensemble_model <- caretEnsemble(models, metric = "RMSE", trControl = ctrl)

# Ringkasan hasil ensemble
summary(ensemble_model)
## The following models were ensembled: svmRadial, rf, glm  
## 
## Model Importance:
## svmRadial        rf       glm 
##    0.0453    0.0000    0.9547 
## 
## Model accuracy:
##    model_name metric    value       sd
##        <char> <char>    <num>    <num>
## 1:   ensemble   RMSE 15.49691 2.034375
## 2:  svmRadial   RMSE 25.21851 9.909134
## 3:         rf   RMSE 20.94384 5.786878
## 4:        glm   RMSE 15.18143 2.762978

Kelebihan Integrasi SVR dalam Ensemble:

  • SVR menangkap non-linearitas yang tidak ditangkap oleh model linier seperti OLS.
  • Random Forest menyumbang daya eksplorasi fitur dan kekebalan terhadap noise.
  • Stacked GLM berperan sebagai meta-model interpretable.

15. Interpretabilitas Model SVR

Salah satu tantangan utama dalam penggunaan SVR adalah kurangnya interpretabilitas, terutama karena model ini berbasis kernel dan bukan berbasis koefisien eksplisit seperti regresi linier.

Pendekatan Interpretabilitas yang Dapat Digunakan:

  1. Partial Dependence Plot (PDP)

    • Menampilkan hubungan marjinal antara fitur tertentu dan prediksi model.
    • Cocok untuk melihat efek global dari suatu variabel.
  2. SHAP (SHapley Additive exPlanations)

    • Menyediakan nilai kontribusi setiap fitur terhadap prediksi.
    • Dapat digunakan untuk interpretasi global maupun lokal.
  3. LIME (Local Interpretable Model-Agnostic Explanations)

    • Memberikan penjelasan lokal untuk setiap prediksi individual.
    • Cocok untuk penggunaan kasus individual (misalnya prediksi pasien tunggal).

Catatan Penting:

  • Teknik ini bersifat model-agnostic sehingga kompatibel dengan SVR.
  • Visualisasi interaktif dari SHAP dan PDP sangat disarankan untuk eksplorasi model secara menyeluruh.

16. Kelebihan dan Keterbatasan SVR: Kapan (Tidak) Digunakan?

Kelebihan SVR:

  • Mampu memodelkan hubungan non-linier secara fleksibel melalui kernel (RBF, polynomial, dsb.).
  • Robust terhadap overfitting pada dataset kecil hingga menengah karena margin-based learning.
  • Parameter epsilon memungkinkan kontrol terhadap margin kesalahan toleransi dalam regresi.

Keterbatasan SVR:

  • Kompleksitas komputasi tinggi, terutama untuk kernel non-linier pada data besar.
  • Interpretabilitas rendah, menyulitkan pemahaman kontribusi masing-masing fitur secara langsung.
  • Tidak cocok untuk data sparse berdimensi tinggi tanpa teknik seleksi atau reduksi fitur.

Kapan Menggunakan SVR?

Gunakan SVR jika:

  • Dataset berukuran kecil hingga menengah (< 10.000 observasi).
  • Relasi antara fitur dan target bersifat non-linier kompleks.
  • Margin prediksi perlu diatur secara eksplisit dengan epsilon.
  • Model akan digunakan untuk prediksi, bukan untuk interpretasi mendalam.

Kapan Menghindari SVR?

Hindari SVR jika:

  • Dataset sangat besar (>100.000 observasi) tanpa optimasi GPU.
  • Interpretabilitas sangat penting (misalnya dalam audit keuangan, peraturan medis).
  • Data mengandung banyak noise atau outlier, karena SVR dapat sensitif terhadap titik ekstrem kecuali C dan epsilon diatur dengan hati-hati.

Referensi