K-Nearest Neighbors, Support Vector Machine, and Bayesian Classifier
KNN adalah algoritma klasifikasi dan regresi yang menyimpan semua data training (lazy learning), mengklasifikasi data baru berdasarkan kesamaan/jarak dengan data training, mencari K tetangga terdekat dari data testing, dan menentukan label berdasarkan voting mayoritas (untuk klasifikasi) atau rata-rata (untuk regresi)
Dalam KNN, prediksi untuk data baru \(x\) dapat diformulasikan sebagai:
Regression | Classification |
---|---|
Mean/Average: | Majority Vote: |
\[f(x) = \frac{1}{n} \sum_{i=1}^{n} y_i\] | \[f(x) = \frac{1}{n} \sum_{i=1}^{n} I(y_i=1)\] |
Untuk regresi: Prediksi adalah rata-rata dari nilai target tetangga terdekat.
Untuk klasifikasi: Prediksi ditentukan berdasarkan voting mayoritas, di mana \(I(y_i=1\)) adalah fungsi indikator yang bernilai 1 jika kondisi terpenuhi.
Pertanyaan:
Jika kita ingin memprediksi kelas dari titik data baru \(?\) menggunakan algoritma K-Nearest Neighbors, termasuk ke kelas A atau B-kah titik tersebut jika kita menggunakan \(K=3\) dan \(K=7\)? Jelaskan alasan dan proses penentuannya!
Metrik jarak sangat penting dalam KNN karena menentukan “kedekatan” antar sampel. Beberapa metrik jarak yang umum digunakan:
Euclidean Distance: \[d(x, y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2}\]
Manhattan Distance: \[d(x, y) = \sum_{i=1}^{n}|x_i - y_i|\]
Metrik jarak yang dipilih dapat memengaruhi kinerja model KNN secara signifikan tergantung pada karakteristik data.
Pemilihan nilai K sangat krusial dalam KNN:
Beberapa pendekatan untuk memilih K: - Uji coba beberapa nilai K dan pilih yang memberikan performa terbaik pada validasi - Aturan praktis: K = √n (n adalah jumlah sampel) - K sebaiknya bilangan ganjil untuk klasifikasi biner (menghindari tie votes)
Gambar: Efek nilai K terhadap boundary keputusan. K=1 dan K=5
KNN sangat sensitif terhadap skala fitur! Fitur dengan skala lebih besar akan mendominasi perhitungan jarak.
Mengapa perlu normalisasi? - Contoh: Pada fitur usia (20-70) dan pendapatan (10.000-100.000), perbedaan pendapatan akan mendominasi perhitungan jarak
Min-Max Scaling
\[X_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}}\]
Standardisasi (Z-score)
\[X_{norm} = \frac{X - \mu}{\sigma}\]
Robust Scaling
\[X_{norm} = \frac{X - median(X)}{IQR(X)}\]
SVM bertujuan untuk menemukan hyperplane optimal yang memisahkan data dari kelas berbeda dengan margin maksimal. Support vectors adalah data points yang berada di tepi margin dan menentukan posisi hyperplane. SVM dapat menangani data yang tidak dapat dipisahkan secara linear melalui transformasi ke dimensi yang lebih tinggi menggunakan fungsi kernel.
Untuk >3 dimenasi/variabel, tidak dapat divisualisasikan, tetapi prinsipnya sama.
Tugas kita adalah mencari hyperplane yang memisahkan data dari kelas yang berbeda dengan margin maksimal.
Dalam SVM, hyperplane dapat diformulasikan sebagai:
\[f(x) = w^T x + b\]
Dimana: \(w\) adalah vektor bobot (normal terhadap hyperplane), \(b\) adalah bias, dan \(x\) adalah vektor fitur input Untuk masalah klasifikasi biner.
Prediksi dapat diformulasikan sebagai:
\[\text{class} = \text{sign}(w^T x + b)\]
Tujuan SVM adalah memaksimalkan margin antara hyperplane dan support vectors:
\[\text{Maximize } \frac{2}{||w||} \text{ subject to } y_i(w^T x_i + b) \geq 1 \text{ for all } i\]
Kernel memungkinkan SVM bekerja di ruang dimensi yang lebih tinggi tanpa menghitung transformasi secara eksplisit (kernel trick).
Linear Kernel
\[K(x_i, x_j) = x_i^T x_j\] - Paling sederhana - Efektif untuk data yang dapat dipisahkan secara linear
Polynomial Kernel
\[K(x_i, x_j) = (x_i^T x_j + c)^d\] - Parameter: derajat \(d\) dan konstanta \(c\) - Baik untuk data dengan pola non-linear sederhana
Radial Basis Function (RBF) Kernel
\[K(x_i, x_j) = \exp(-\gamma ||x_i - x_j||^2)\] - Parameter: \(\gamma\) mengontrol pengaruh satu sampel - Sangat efektif untuk berbagai jenis data non-linear - Default di sebagian besar implementasi SVM
Sigmoid Kernel
\[K(x_i, x_j) = \tanh(\alpha x_i^T x_j + c)\] - Mirip dengan fungsi aktivasi pada neural network
Parameter C dalam SVM mengontrol trade-off antara margin yang lebar dan kesalahan klasifikasi:
Pemilihan parameter C yang tepat biasanya dilakukan melalui cross-validation.
Teorema Bayes adalah dasar dari seluruh pendekatan Bayesian Classifier:
\[P(A|B) = \frac{P(B|A) \times P(A)}{P(B)}\]
Dalam konteks klasifikasi:
\[P(y|X) = \frac{P(X|y) \times P(y)}{P(X)}\]
Dimana:
\(P(y|X)\): Probabilitas posterior kelas \(y\) given fitur \(X\)
\(P(X|y)\): Likelihood dari fitur \(X\) given kelas \(y\)
\(P(y)\): Probabilitas prior kelas \(y\)
\(P(X)\): Probabilitas fitur \(X\) (evidence)
Naive Bayes mengasumsikan independensi bersyarat antar fitur:
\[P(X|y) = P(x_1|y) \times P(x_2|y) \times ... \times P(x_n|y) = \prod_{i=1}^{n} P(x_i|y)\]
Sehingga probabilitas posterior menjadi:
\[P(y|X) = \frac{P(y) \prod_{i=1}^{n} P(x_i|y)}{P(X)}\]
Untuk klasifikasi, kita mencari kelas dengan probabilitas posterior tertinggi:
\[\hat{y} = \arg\max_y P(y) \prod_{i=1}^{n} P(x_i|y)\]
Denominator \(P(X)\) dapat diabaikan karena konstan untuk semua kelas.
Kelebihan Naive Bayes:
Efisien secara komputasional (linear)
Bekerja baik dengan dataset kecil
Menangani fitur kategoris dengan baik
Tahan terhadap fitur yang tidak relevan
Efektif untuk klasifikasi teks
Intuitif dan mudah diimplementasikan
Dapat diskalakan untuk dataset besar
Keterbatasan:
Asumsi independensi fitur sering tidak realistis
Tidak dapat mempelajari interaksi antar fitur
Estimasi probabilitas kurang akurat untuk fitur yang jarang muncul
Sensitif terhadap bagaimana data direpresentasikan
Dapat terpengaruh oleh ketidakseimbangan kelas