How do we see the world? (Bagaimana Kita Memandang Dunia?)
🍪 Kasus Linear: Cookies vs Weight
Linear Model"The more cookies I eat, the more weight I gain."
Jika variabel \(A\) naik, maka variabel \(B\) naik dengan pola arah yang konsisten.
Hasil Prediksi Garis: 6 Kg (Persamaan: \(y = 0 + 2x\))
😊 Mood vs Waktu (Non-linear)
Non-linear Model"I am not necessarily always happier as time passes."
Jika \(A\) naik, nilai \(B\) bisa naik-turun bergantian secara dinamis.
Say it in Mathematics: Menghubungkan Titik Menjadi Garis
Penjelasan Konsep
Dari data titik \((1, 2)\) dan \((2, 4)\), kita dapat menarik sebuah garis lurus yang melewati kedua titik tersebut.
Kekuatan Garis: Dengan model garis ini, kita bisa memprediksi penambahan berat badan untuk sembarang jumlah cookie:
• 3 cookies \(\rightarrow 2 \times 3 = 6\) Kg
• 5 cookies \(\rightarrow 2 \times 5 = 10\) Kg
• 10 cookies \(\rightarrow 2 \times 10 = 20\) Kg
Eksplorasi Parameter: Slope (\(\theta_1\)) & Intercept (\(\theta_0\))
Menunjukkan seberapa curam tanjakan garis (rasio kenaikan y per satuan x).
Menunjukkan nilai \(y\) saat \(x = 0\) (menggeser garis ke atas atau ke bawah secara sejajar).
Kasus Nyata: Harga Rumah & Konsep Model Generalization
Dataset Sampel Harga Rumah
Bentuk data umum dalam machine learning: \((x^{(i)}, y^{(i)}); i = 1, \dots, m\)
| i | Luas Rumah (x) [m²] | Harga (y) [Juta Rp] |
|---|
Pertanyaan Kunci Prediksi:
"What is the price of a house if the area is 558 m²?"
Apa itu Model Generalization?
Tujuan kita adalah memprediksi \(\hat{y}\) yang belum pernah dilihat (unseen) berdasarkan data baru \(\hat{x}\). Model yang baik adalah model yang dapat menggeneralisasi tren data, bukan sekadar menghafal.
Plot Sebaran Data & Pilihan Model Garis
Pilih model untuk melihat perbandingan kualitas garis:
Cost Function (Fungsi Biaya) & Lembah Parabola
Error setiap titik: \(h_\theta(x^{(i)}) - y^{(i)}\) adalah jarak vertikal dari titik data ke garis. Kita kuadratkan agar bernilai positif dan memberi penalti lebih besar pada error jauh!
"Informally, a good line/model is the one that is generally close to all data points. Total distance is called error; the lower it is, the better."
Simulasi Interaktif Gradient Descent
Contoh Perhitungan Step-by-Step Gradient Descent di Kelas
1 Tabel Evaluasi Titik Data & Gradien Parsial
| Data ke-i | Input \(x^{(i)}\) | Target Aktual \(y^{(i)}\) | Prediksi \(\hat{y} = h(x)\) | Error \((h - y)\) | Kuadrat \((h - y)^2\) | Gradien \(\theta_0\): \((h - y)\) | Gradien \(\theta_1\): \((h - y) \cdot x\) |
|---|
2 Perhitungan Cost Function \(J(\theta)\)
3 Pembaruan Nilai Bobot \(\theta_0\) dan \(\theta_1\)
Bagaimana Cara Menurunkan (Diferensiasi) \(J(\theta)\) ke \(\theta_0\) dan \(\theta_1\)?
Banyak pembelajar bertanya dari mana asal mula rumus turunan parsial gradien. Di bawah ini adalah pembuktian matematis langkah demi langkah menggunakan aturan rantai (Chain Rule):
1 Tuliskan Fungsi Biaya Secara Eksplisit
Model garis kita adalah \(h_\theta(x^{(i)}) = \theta_0 + \theta_1 x^{(i)}\). Masukkan ini ke dalam fungsi biaya \(J(\theta)\):
2 Gunakan Aturan Rantai (Chain Rule)
Misalkan bagian dalam tanda kurung adalah \(u = h_\theta(x^{(i)}) - y^{(i)}\). Maka kita sedang menurunkan fungsi kuadrat \(\frac{1}{2} u^2\):
3 Turunan Terhadap \(\theta_0\) (Intercept)
Karena diturunkan terhadap \(\theta_0\), maka \(\theta_1 x^{(i)}\) dan \(y^{(i)}\) diperlakukan sebagai konstanta (turunannya = 0):
Masukkan kembali ke aturan rantai:
4 Turunan Terhadap \(\theta_1\) (Slope)
Karena diturunkan terhadap \(\theta_1\), maka \(\theta_0\) dan \(y^{(i)}\) adalah konstanta, sedangkan turunan dari \(\theta_1 x^{(i)}\) terhadap \(\theta_1\) adalah \(x^{(i)}\):
Masukkan kembali ke aturan rantai:
Intuisi Fisik / Geometris (Untuk Ditanyakan ke Mahasiswa di Kelas):
Karena \(\theta_0\) adalah intercept yang menggeser garis ke atas atau ke bawah secara paralel. Pergeseran ini berdampak sama rata pada semua titik data, berapapun nilai \(x\)-nya.
Karena \(\theta_1\) adalah slope yang memutar kemiringan garis. Semakin jauh suatu titik dari sumbu nol (\(x\) semakin besar), dampak rotasi garis terhadap perubahan ketinggian vertikal akan semakin besar (proporsional terhadap \(x\)).
Prosedur Pelatihan Regresi Linear & Kode R
Prosedur Pelatihan Regresi Linear
Pick Initial Model
Pilih model awal \(h(\theta)\) dengan menginisialisasi parameter \(\theta\) secara acak (random guess).
Compute Cost Function
Hitung nilai fungsi biaya: \[J(\theta) = \frac{1}{2} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})^2\]
Update Parameter
Perbarui \(\theta\) agar \(J(\theta)\) semakin kecil via Gradient Descent: \[\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j} J(\theta)\]
Repeat Until Converges
Ulangi langkah 2 dan 3 sampai garis konvergen (mencapai dasar lembah dengan error minimum).
Target Kontinu vs Diskret (Menuju Klasifikasi)
Selama ini kita mengasumsikan target \(y\) adalah kontinu (misalnya harga rumah, berat badan, tinggi badan, suhu).
Misal: Lulus/Gagal (Pass/Fail), Ya/Tidak (Yes/No), 1/0. Ini membentuk pola non-linear dan mengarah ke tugas Klasifikasi (Classification), yang nantinya akan dipelajari menggunakan Logistic Regression.
Praktik Implementasi Bahasa R
R Script# Example 1: Simple Linear Regression (Regresi Linear Sederhana)
library(MASS)
lm.fit <- lm(medv ~ lstat, data = Boston)
# Check model summary & coefficients (Periksa ringkasan model)
summary(lm.fit)
# Plot data points & regression line (Visualisasi data & garis)
plot(Boston$lstat, Boston$medv)
abline(lm.fit, col = "red", lwd = 2)
# Example 2: Multiple Linear Regression (Regresi Linear Berganda)
lm.fit_all <- lm(medv ~ ., data = Boston)
summary(lm.fit_all)
Logistic Regression: Klasifikasi Variabel Diskret
Pada regresi linear, target \(y\) diasumsikan kontinu (misal harga rumah, berat badan).
"What if \(y\) is discrete? E.g., pass/fail, yes/true, 1/0, etc, that leads to nonlinear fashion and a classification task." (Slide 4).
Plot Sebaran Jam Belajar vs Status Ujian
Pilih model untuk mengamati kegagalan garis linear vs sigmoid
Fungsi Hipotesis Sigmoid:
\(h(x) = g(\theta^T x)\)Simulasi Prediksi Mahasiswa Baru:
Binary Cross-Entropy (Log Loss)
Suku kedua \((1 - y) \log(1 - h)\) bernilai 0. Biaya murni dihitung dari:
Suku pertama \(-y \log(h)\) bernilai 0. Biaya murni dihitung dari:
Simulasi Live Training Logistic Regression
Papan Kalkulasi Step-by-Step Logistic Regression
| Mahasiswa i | Jam Belajar (x) | Target Aktual (y) | Skor Linear \(z = \theta_0 + \theta_1 x\) | Prediksi \(h = \sigma(z)\) | Error \((h - y)\) | Loss \(-[y \log h + (1-y)\log(1-h)]\) | Gradien \(\theta_0\): \((h - y)\) | Gradien \(\theta_1\): \((h - y) \cdot x\) |
|---|
1 Perhitungan Cross-Entropy Loss \(J(\theta)\)
2 Pembaruan Bobot \(\theta_0\) dan \(\theta_1\) via Gradient Descent
Mengapa Turunan Logistic Regression Persis Sama dengan Linear Regression?
Banyak mahasiswa dan pembelajar terkejut saat melihat rumus pembaruan Gradient Descent pada Logistic Regression: meskipun fungsi hipotesisnya rumit (Sigmoid) dan fungsi biayanya berbentuk logaritma (Cross-Entropy), hasil turunannya tetap:
Jika \(g(z) = \frac{1}{1 + e^{-z}}\), turunannya adalah perkalian anggun:
Turunan fungsi biaya \(J\) terhadap prediksi \(h\) menghasilkan:
Saat digabungkan dengan Aturan Rantai:
Penyebut \(h(1-h)\) dicoret sempurna oleh turunan sigmoid!
🎲 Naïve Bayes Classifier: Klasifikasi Berbasis Teorema Bayes
Pada ruang fitur berdimensi tinggi (seperti 50.000 kata email), kombinasi probabilitas bersama membutuhkan miliaran parameter. Naïve Bayes mengasumsikan bahwa seluruh fitur \(x_j\) saling independen jika kelas target \(y\) diketahui:
Simulator Prediksi Keputusan Hari Baru
Bedah Perhitungan Aritmatika Probabilitas Bersyarat
1 Perhitungan untuk Kelas \(y = 1\) (Main)
2 Perhitungan untuk Kelas \(y = 0\) (Tidur)
Kasus Khusus: Masalah Frekuensi Nol & Solusi Laplace Smoothing
Zero-Frequency ProblemJika ada kombinasi atribut yang tidak pernah muncul di dataset training pada suatu kelas (contoh: kata atau cuaca cerah tidak pernah muncul saat tidur), maka nilai probabilitas bersyaratnya menjadi 0. Akibat perkalian berantai, seluruh probabilitas posterior akan hancur menjadi 0/0 (algoritma tidak dapat mengambil keputusan!).
Dataset Sampel 14 Hari Cuaca & Keputusan Aktivitas
14 Baris Data Training| No | Cuaca (\(x_1\)) | Suhu (\(x_2\)) | Kelembaban (\(x_3\)) | Berangin (\(x_4\)) | Status Aktivitas (\(y\)) |
|---|
⚡ Support Vector Machine (SVM): Pemisah Margin Terbesar
Eksplorasi Parameter Garis & Margin
🔮 Kernel Trick: Transformasi ke Ruang Dimensi Lebih Tinggi
❌ Tidak Bisa Dibagi Garis Lurus: Titik biru berada di dalam lingkaran titik merah. Tidak ada garis 2D yang bisa memisahkan keduanya!
✨ Terpisah Sempurna oleh Bidang Datar (Hyperplane): Titik merah terangkat ke mangkuk atas, sehingga bidang datar dapat memotong keduanya!
Bedah Matematika: Primal vs Dual Optimization Problem
1 Masalah Optimasi Primal
Konsep: Memperkecil bobot \(\|w\|\) sambil memastikan seluruh titik data berada di luar batas margin 1.
2 Masalah Optimasi Dual
Keunggulan Dual: Bergantung sepenuhnya pada inner product \(x^{(i)} \cdot x^{(j)}\), yang memungkinkan substitusi kernel \(K(x, y)\) secara langsung tanpa menghitung koordinat dimensi tinggi!
🌳 Decision Tree: Klasifikasi Berbasis Pohon Keputusan
Uji Prediksi Pasien Baru (Inference)
Atribut Apa yang Terbaik Memisahkan Data?
Kalkulasi Step-by-Step: Shannon Entropy & Information Gain
Gain(S, Sex)
More Predictiveness: Membagi data secara lebih teratur dan menurunkan ketidakpastian secara signifikan!
Gain(S, Cholesterol)
Hasil terbelah acak: Pada Cholesterol High, data terbelah 50:50 (\(E=1.00\)), sehingga perolehan informasinya sangat rendah.
Peringkat Information Gain Seluruh Atribut (Tahap 1):
| Peringkat | Atribut Fitur | Jumlah Cabang | Weighted Entropy | Information Gain | Status Pemilihan |
|---|---|---|---|---|---|
| 🥇 1 | Age (Usia) | 3 (Young, Middle, Senior) | 0.6935 | 0.2467 | Terpilih sebagai Root Node |
| 🥈 2 | Sex (Gender) | 2 (F, M) | 0.7885 | 0.1518 | Terpilih di Sub-cabang Young |
| 🥉 3 | Cholesterol | 2 (Normal, High) | 0.8922 | 0.0481 | Terpilih di Sub-cabang Senior |
| 4 | Blood Pressure (BP) | 3 (Low, Normal, High) | 0.9111 | 0.0292 | Tidak Diperlukan |
Dataset Sampel 14 Pasien Medis
14 Baris Training + 1 Pasien Uji (p15)| ID Pasien | Usia (Age) | Sex | Blood Pressure (BP) | Cholesterol | Obat (Target) |
|---|
📊 Evaluasi Model: Metrik Regresi, Klasifikasi & Generalisasi
Mengukur rata-rata magnitudo error. Kelebihan: Robust terhadap outlier dan memiliki skala satuan yang persis sama dengan variabel target.
Mengkuadratkan residual sebelum dirata-rata. Karakteristik: Memberi penalti yang sangat berat pada error besar (outlier).
Akar kuadrat dari MSE. Mengembalikan satuan error ke satuan asli target, namun tetap sensitif terhadap keberadaan outlier.
Proporsi variansi data yang berhasil dijelaskan oleh model. Nilai \(1.0\) berarti prediksi sempurna; \(0.0\) setara menebak rata-rata \(\bar{y}\); dan nilai negatif berarti model lebih buruk daripada garis horizontal rata-rata!
Centang opsi "Injeksi Outlier Ekstrem" di atas. Perhatikan bahwa saat satu titik data meleset jauh dari garis, nilai MSE dan RMSE melonjak drastis secara eksponensial karena adanya pemangkatan kuadrat \((y - \hat{y})^2\), sedangkan MAE hanya bertambah proporsional secara linear. Inilah alasan praktis mengapa MAE lebih disukai saat dataset banyak mengandung anomali/noise.
Matriks Konfusi 2x2 (Confusion Matrix)
Binary ClassificationProporsi seluruh tebakan yang benar terhadap total sampel.
Dari seluruh data yang diprediksi Positif, berapa yang memang Positif.
Dari seluruh data yang aslinya Positif, berapa yang berhasil terdeteksi.
Rata-rata harmonik antara Presisi dan Recall. Menghukum model jika salah satu nilai anjlok.
Spesifisitas = \(\frac{TN}{TN + FP}\). False Positive Rate (\(\text{FPR}\)) = \(1 - \text{Spesifisitas} = \frac{FP}{FP + TN}\). Metrik inilah yang menjadi sumbu horizontal pada kurva ROC-AUC!
Akurasi, Presisi, dan Recall berada pada level tinggi dan seimbang. Model memiliki kapabilitas diskriminasi yang baik.
Contoh Matriks Konfusi Multiclass (Slide 17: Buah Apel, Jeruk, Mangga)
3-Class Evaluation| Prediksi \ Asli | Apple | Orange | Mango |
|---|---|---|---|
| Pred: Apple | 7 (Benar) | 8 (Salah) | 9 (Salah) |
| Pred: Orange | 1 (Salah) | 2 (Benar) | 3 (Salah) |
| Pred: Mango | 3 (Salah) | 2 (Salah) | 1 (Benar) |
Prinsip: Elemen diagonal hijau \((7, 2, 1)\) adalah prediksi yang tepat. Elemen non-diagonal merah adalah kekeliruan (confusion). Akurasi total multiclass = \(\frac{7 + 2 + 1}{7 + 8 + 9 + 1 + 2 + 3 + 3 + 2 + 1} = \frac{10}{36} = 27.8\%\).
Visualisasi Partisi Data & K-Fold Iterasi
Mencegah bias seleksi satu kali (Single-split weakness)
\(\text{Score}_{CV} = \frac{1}{k} \sum_{i=1}^k \text{Score}_i\). Seluruh baris data diuji tepat satu kali sebagai validation set, sehingga evaluasi jauh lebih objektif dan tahan terhadap keberuntungan split satu kali.
Perbandingan Teknik Sampling (Slide 8)
Mencegah bias data modeler. Namun pada kelas tidak seimbang (*imbalanced*), bisa terjadi suatu fold kekurangan atau kehilangan sampel kelas minoritas.
Memastikan proporsi tiap kelas (misal 80% Kelas A, 20% Kelas B) terdistribusi sama persis di setiap fold training dan validation. Sangat direkomendasikan untuk klasifikasi!
Data masa lalu untuk pelatihan, data terkini (*most recent*) untuk pengujian. Digunakan saat ada ketergantungan urutan waktu.
LOOCV (\(k = N\)): Dilatih sebanyak \(N\) kali pada \(N-1\) sampel dan diuji pada 1 sampel. Sangat bagus untuk dataset berukuran sangat kecil (\(N < 50\)), namun sangat lambat dan memakan komputasi tinggi pada dataset besar. Standar industri praktis yang paling seimbang adalah 5-Fold atau 10-Fold CV.
Model terlalu sederhana untuk menangkap relasi data riil (misal garis lurus memaksakan data kuadratik). Gejala: Train Error tinggi dan Test Error juga tinggi.
Model menangkap pola esensial tanpa terpengaruh oleh noise acak. Gejala: Train Error rendah dan Test Error tetap rendah serta seimbang.
Model terlalu kompleks sehingga menghafal noise data latih. Gejala: Train Error hampir 0, tetapi Test Error meledak tinggi saat diberi data baru.
- Cross-Validation: Evaluasi berulang pada berbagai fold.
- Training with more data: Perbanyak sampel data agar model belajar pola umum.
- Removing features: Seleksi fitur atau eliminasi prediktor yang redundan / noise.
- Regularization (L1 Lasso / L2 Ridge): Memberi penalti pada bobot parameter yang terlalu besar.
- Early stopping: Hentikan iterasi gradient descent saat validation loss mulai naik.