Support Vector Machines: Penjelasan Matematis dan Intuitif
Support Vector Machines (SVM) merupakan salah satu algoritma pembelajaran mesin yang pernah menjadi paling populer di masanya. Ketenaran SVM membuat neural networks agak terlupakan pada tahun 1990 - 2000an, sebelum neural networks dengan wajah baru bernama deep learning mengambil kembali singgasana sebagai raja machine learning.
Pada masa sumber daya komputasi dan data masih dalam skala kecil, SVM merupakan salah satu algoritma paling efektif dalam membentuk sebuah model supervised learning. Di tambah lagi SVM memiliki landasan teori yang kuat dan dapat dibuktikan validitasnya secara matematis.
Di sini akan kita bahas konsep dasar algoritma SVM secara matematis dan intuitif hingga implementasi sederhana dengan menggunakan Python.
Hyperplane
Hyperplane merupakan generalisasi dari garis lurus (pada ruang 2D) atau bidang datar (ruang 3D), yaitu bidang datar berdimensi \(d\). Pastinya sulit untuk memvisualisasikan hyperplane \(d>3\) dibenak kita.

Gambar 1: Hyperplane 2D (garis)

Gambar 2: Hyperplane 3D (bidang datar)
Dalam notasi matematis, hyperplane dapat ditulis sebagai berikut:
\[ w_1 x_1 + \cdots + w_d x_d + c = 0 \]
\[ \implies \sum_{j=1}^d w_j x_j + c = 0 \implies \langle \mathbf{w}, \mathbf{x} \rangle + c = 0 \]
Untuk \(d=2\) akan didapatkan tampilan visual seperti pada Gambar 1 dan \(d=3\) pada Gambar 2.
Secara intuitif, dilihat dari sudut pandang geometris hubungan antara vektor \(\mathbf{w}\), \(\mathbf{x}\), dan hyperplane (dalam 2D) dapat diilustrasikan sebagai berikut:

Gambar 4: Hyperplane, vektor w dan x
Dari gambar tersebut, dapat dilihat bahwa vektor \(\mathbf{w}\) selalu tegak lurus dengan hyperplane. Mengapa? Silakan dibuktikan sendiri 🙂
Hint: geser hyperplane pada Gambar 4 ke titik (0, 0) lalu gunakan definisi ortogonalitas dari \(\langle \mathbf{w}, \mathbf{x} \rangle\).
Ide Dasar: Maximum Margin
Sekarang kita akan bahas ide pokok dari SVM, yang dikenal dengan istilah maximum margin. Kita awali bagaimana decision rule dan margin pada SVM dibentuk.
Decision Rule
Kita fokuskan pada pemecahan problem klasifikasi biner, yaitu mengidentifikasi apakah suatu sampel berlabel positif (’+’) atau negatif (’-’), \(f: \mathbb{R}^d \rightarrow \{-1, +1\}\).
SVM memanfaatkan hyperplane dalam menentukan decision rule. Misalkan \(g(\mathbf{x}) = \langle \mathbf{w}, \mathbf{x} \rangle + b\) merupakan hyperplane, decision rule untuk klasifikasi biner sebagai berikut:
$$ f() = \[\begin{cases} +1, \text{ jika } g(\mathbf{x}) \geq 0 \\ -1, \text{ jika } g(\mathbf{x}) < 0 \end{cases}\]$$
Margin
Problem yang ingin dipecahkan SVM adalah mencari bentuk dan posisi hyperplane \(g(\mathbf{x})\) yang dapat menghasilkan model klasifikasi terbaik berdasarkan observasi data \(D = \{ \mathbf{x}^{(i)}, y^{(i)} \}_{i=1}^n\). SVM memanfaatkan konsep margin, yaitu **semacam area disekitar hyperplane yang dibatasi oleh titik data terdekat atau support vectors. Ukuran margin ini akan digunakan secara eksplisit untuk menentukan hyperplane terbaik.
Gambar-gambar dibawah ini mengilustrasikan perbedaan ukuran margin yang dihasilkan dari perbedaan kemiringan dari hyperplane.

Gambar 5: non-maximum margin

Gambar 6: maximum margin
Hubungan antara support vectors, yaitu titik positif dan negatif terdekat (\(\mathbf{x}^*_+\) dan \(\mathbf{x}^*_-\)) beserta hyperplane membentuk area seperti “jalan” apabila kita tarik garis-garis tepi melewati kedua titik tersebut dan sejajar dengan hyperplane. Secara eksplisit garis-garis tepi tersebut dapat didefinisikan dengan
\[ g(\mathbf{x}^*_+) = \langle \mathbf{w}, \mathbf{x}^*_+ \rangle + c = 1 \\ g(\mathbf{x}^*_-) = \langle \mathbf{w}, \mathbf{x}^*_- \rangle + c = -1 \]
Margin merupakan “lebar jalan” yang dibatasi oleh kedua garis tepi. Untuk mendefinisikan margin secara matematis, kita memanfaatkan proyeksi ortogonal dari support vectors ke vektor satuan \(\bar{\mathbf{w}}\), yang merupakan vektor normal dari hyperplane.

Gambar 7: Hubungan vektor data positif dan negatif vs margin
Di bawah ini merupakan bentuk persamaan dari margin:
$$ s = {}, ^*_+ - ^*_- \
$$
Jika kita rinci, persamaan di atas akan berakhir ke bentuk yang relatif sederhana:
$$ s = , ^*_+ - ^*_- \ = ( , ^*_+ + , - ^*_- ) \ = ( 1 - c + 1 + c) \ =
$$
Terlihat bahwa persamaan margin berkaitan erat dengan hyperplane, yaitu inverse dari panjang vektor nomal dari hyperplane.
Dengan adanya margin yang didefinisikan melalui 2 garis tepi di atas, kita dapat menuliskan ulang decision rule menjadi seperti ini:
$$ f() = \[\begin{cases} +1, \text{ jika } (\langle \mathbf{w}, \mathbf{x}_+ \rangle + b)\geq 1 \\ -1, \text{ jika } (\langle \mathbf{w}, \mathbf{x}_+ \rangle + b) \leq -1 \end{cases}\]$$
Dengan fakta bahwa \(y \in \{-1, +1 \}\), kondisi dari persamaan diatas dapat disederhanakan menjadi:
\[ y(\langle \mathbf{w}, \mathbf{x}\rangle + b) \geq 1 \]
Problem Optimisasi (Training)
Tujuan utama dari SVM adalah memaksimalkan besaran margin \(s\). Jika diinterpretasikan dalam problem optimisasi secara intuitif kita dapatkan:
\[ \max \frac{2}{\| \mathbf{w}\|} \implies \min \frac{1}{2} \| \mathbf{w} \| \implies \min \frac{1}{2} \| \mathbf{w} \|^2 \]
Terlihat bahwa memaksimalkan margin ekuivalen dengan meminimalkan panjang vektor normal \(\mathbf{w}\).
Lebih lengkapnya kita dapat tulis sebagai problem optimisasi dengan batasan (constrained optimization) sebagai berikut:
\[ \min_{\mathbf{w}, b} \frac{1}{2} \| \mathbf{w} \|^2 \text{ subject to } y^{(i)}(\langle \mathbf{w}, \mathbf{x}^{(i)}\rangle + b) \geq 1 \\ i = 1, \ldots, n \]
dimana \(D = \{ \mathbf{x}^{(i)}, y^{(i)} \}_{i=1}^n\) merupakan sampel data.
Kita coba selesaikan problem optimisasi di atas. Dengan memanfaatkan Lagrange multipliers, persamaan optimisasi tersebut dapat menjadi bentuk tanpa batasan (unconstrained optimization):
\[ \min_{\mathbf{w}, b} \left\{ L(\mathbf{w}, b) = \frac{1}{2} \| \mathbf{w} \|^2 - \sum_{i=1}^{n} \alpha_i (y^{(i)}(\langle \mathbf{w}, \mathbf{x}^{(i)}\rangle + b) - 1) \right\} \]
dimana \(\alpha_i \geq 0\).
Kita cari nilai optimum dari parameter \(\mathbf{w}, b\) dengan turunan parsial \(\frac{\partial L}{ \partial \mathbf{w}} = 0\) dan \(\frac{\partial L}{ \partial b} = 0\) sehingga didapatkan:
\[ \frac{\partial L}{ \partial \mathbf{w}} = \mathbf{w} - \sum_{i=1}^n \alpha_i y^{(i)} \mathbf{x}^{(i)} = 0 \\ \implies \mathbf{w}^* = \sum_{i=1}^n \alpha_i y^{(i)} \mathbf{x}^{(i)} \]
\[ \frac{\partial L}{\partial b} = - \sum_{i=1}^{n} \alpha_i y^{(i)} = 0 \]
Jika kita substitusikan balik \(\mathbf{w}^*\) ke persamaan Lagrange \(L(\mathbf{w}, b)\) didapatkan:
\[ \min_{\boldsymbol{\alpha}} \left\{ L(\boldsymbol{\alpha}) = \sum_{i=1}^n \alpha_i - \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y^{(i)} y^{(j)} \langle \mathbf{x}^{(i)}, \mathbf{x}^{(j)}\rangle \right\}\\ \text{ subject to } \alpha_i \geq 0, \sum_{i=1}^{n} \alpha_i y^{(i)} = 0 \]
Dengan mengubah persamaan di atas menjadi notasi matriks-vektor, \(L(\alpha)\) dapat ditulis menjadi:
\[ \min_{\boldsymbol{\alpha}} \left\{ L(\boldsymbol{\alpha}) = - \mathbf{z}^\top G \mathbf{z} + \| \boldsymbol{\alpha} \|_1 \right \} \\ \text{ subject to } \boldsymbol{\alpha} \succeq 0, \langle \boldsymbol{\alpha}, \mathbf{y} \rangle = 0 \]
dimana \(\mathbf{z}, \boldsymbol{\alpha}, \mathbf{y} \in \mathbb{R}^n\), dan \(z_i = \alpha_i y^{(i)}\), serta \(\mathbf{G} \in \mathbb{R}^{n \times n}\) merupakan matriks yang berisi dot-product dari seluruh pasangan sampel, yang dikenal dengan sebutan Gram Matrix:
\[ \begin{equation} \mathbf{G} = \begin{pmatrix} \langle \mathbf{x}^{(1)} \mathbf{x}^{(1)} \rangle & \langle \mathbf{x}^{(1)} \mathbf{x}^{(2)} \rangle & \cdots & \langle \mathbf{x}^{(1)} \mathbf{x}^{(n)} \rangle \\ \langle \mathbf{x}^{(2)} \mathbf{x}^{(1)} \rangle & \langle \mathbf{x}^{(2)} \mathbf{x}^{(2)} \rangle & \cdots & \langle \mathbf{x}^{(2)} \mathbf{x}^{(n)} \rangle \\ \vdots & \vdots & \ddots & \vdots \\ \langle \mathbf{x}^{(n)} \mathbf{x}^{(1)} \rangle & \cdots & \cdots &\langle \mathbf{x}^{(n)} \mathbf{x}^{(n)} \rangle \end{pmatrix} \end{equation} \]
Problem optimisasi bentuk terakhir dapat diselesaikan dengan Quadratic Programming (QP) yang diluar dari jangkauan pembahasan di sini. Pada akhirnya QP akan menghasilkan parameter optimal \(\boldsymbol{\alpha}^*\).
Inference
Diketahui suatu sampel di luar data training \(\mathbf{x}_u\), inferensi pada SVM sama dengan menjalankan komputasi model linear pada umumnya:
\[ f_{\mathbf{w}^*, b}(\mathbf{x}_u) = \langle \mathbf{w}^*, \mathbf{x}_u \rangle + b \]
Dengan fakta bahwa \(\mathbf{w}^* = \sum_{i=1}^n \alpha^*_i y^{(i)} \mathbf{x}^{(i)}\), persamaan inferensi di atas dapat ditulis menjadi
\[ \begin{equation} f_{\boldsymbol{\alpha}^*, b} (\mathbf{x}_u) = \sum_{i=1}^n \alpha_i y^{(i)} \langle \mathbf{x}^{(i)}, \mathbf{x}_u \rangle + b \end{equation} \]
Keseluruhan proses di atas merupakan suatu algoritma yang dinamakan dengan linear SVM.
Implementasi
Kode implementasi yang mensimulasikan SVM untuk menyelesaikan problem klasifikasi serta menghasilkan beberapa grafik di atas dapat ditemukan di:



