Panduan Linear Regression – Untuk Pemula & Anak SD
📐 Linear Regression
Panduan Lengkap untuk Pemula — Dengan Analogi Sederhana, Penjelasan Bertahap, dan Kode Python yang Mudah Dipahami
🍧 1. Apa Itu Linear Regression?
MudahBayangkan Pak Budi punya warung es di dekat sekolah. Setiap hari dia mencatat:
- Suhu udara hari itu (misalnya 28°C, 32°C, 35°C)
- Jumlah es yang terjual (misalnya 20, 35, 50 gelas)
Setelah sebulan, Pak Budi melihat polanya: makin panas, makin banyak es yang laku!
Nah, Pak Budi ingin bisa memprediksi: “Kalau besok suhu 33°C, kira-kira berapa gelas es yang akan laku?”
Itulah Linear Regression! — Mencari hubungan antara satu hal (suhu) dengan hal lain (jumlah es terjual), lalu menggunakan hubungan itu untuk memprediksi masa depan.
Definisi Sederhana
Linear Regression adalah cara komputer menggambar garis lurus terbaik yang melewati sekumpulan titik-titik data, supaya kita bisa memprediksi sesuatu.
Setiap tanda ✕ adalah data harian Pak Budi. Garis putus-putus (· · ·) adalah “garis terbaik” yang ditarik komputer. Dengan garis ini, kalau kita tahu suhu besok, kita tinggal lihat garisnya dan dapat prediksi jumlah es!
- Input (Fitur / Feature) = Hal yang kita ketahui → suhu udara
- Output (Target) = Hal yang ingin kita prediksi → jumlah es terjual
- Model = Garis lurus yang kita gambar
- Prediksi = Nilai yang dihasilkan garis untuk input baru
Kenapa Disebut “Linear”?
Kata “Linear” artinya “garis lurus”. Jadi Linear Regression artinya: mencari prediksi yang membentuk garis lurus. Bukan garis melengkung, bukan zigzag, tapi garis lurus yang paling pas melewati titik-titik data kita.
Kamu pernah main tebak-tebakan? Misalnya kamu tahu:
- Teman yang belajar 1 jam dapat nilai 60
- Teman yang belajar 2 jam dapat nilai 70
- Teman yang belajar 3 jam dapat nilai 80
Nah, kalau ada teman yang belajar 4 jam, kamu bisa tebak nilainya berapa? Pasti sekitar 90 kan! Kamu baru saja melakukan “Linear Regression” di kepalamu! 🎉
🌍 2. Kenapa Harus Belajar Ini?
MudahLinear Regression bukan cuma teori di buku. Ini dipakai setiap hari di dunia nyata oleh perusahaan besar maupun toko kecil!
| Bidang | Input (yang diketahui) | Prediksi (yang dicari) |
|---|---|---|
| 🏠 Properti | Luas rumah, jumlah kamar, lokasi | Harga rumah |
| 📈 Bisnis | Budget iklan | Jumlah penjualan |
| 🏥 Kesehatan | Umur, berat badan, tekanan darah | Risiko penyakit |
| 🎓 Pendidikan | Jam belajar, kehadiran | Nilai ujian |
| 🌾 Pertanian | Curah hujan, pupuk | Hasil panen |
| 🚗 Otomotif | Umur mobil, kilometer | Harga jual mobil bekas |
Bayangkan kamu menimbang badan setiap minggu selama 2 bulan setelah rajin olahraga. Linear Regression seperti menarik garis di grafik timbanganmu — kamu bisa prediksi: “Kalau aku terus olahraga, bulan depan beratku kira-kira berapa ya?”
Kenapa Linear Regression Penting dalam Machine Learning?
📏 3. Konsep Dasar: Garis Lurus y = mx + b
MudahWaktu kamu naik ojek online, tarifnya begini:
- Biaya awal (begitu pesan): Rp 5.000
- Per kilometer: Rp 2.000
Jadi kalau jarak 3 km: 5.000 + (2.000 × 3) = Rp 11.000
Kalau jarak 7 km: 5.000 + (2.000 × 7) = Rp 19.000
Nah, rumus ini persis seperti garis lurus!
Rumus Garis Lurus
- y = hasil prediksi (total tarif ojek)
- x = input / fitur (jarak dalam km)
- m = slope (kemiringan) = seberapa besar perubahan y setiap x naik 1 → (Rp 2.000/km)
- b = intercept (titik potong) = nilai y saat x = 0 → (Rp 5.000 biaya awal)
Apa Itu Slope (Kemiringan)?
Bayangkan kamu naik sepeda di jalan:
- Slope besar (misal 5) = Jalan sangat menanjak → y naik cepat. “Setiap 1 km, es terjual naik 5 gelas”
- Slope kecil (misal 0.5) = Jalan agak datar → y naik pelan. “Setiap 1 km, es terjual naik 0.5 gelas”
- Slope negatif (-3) = Jalan menurun → y turun. “Makin jauh dari sekolah, makin sedikit siswa yang beli”
- Slope = 0 = Jalan datar → y tidak berubah. “Suhu tidak mempengaruhi penjualan sama sekali”
Apa Itu Intercept (Titik Potong)?
Intercept (b) adalah nilai awal — nilai y ketika x = 0.
Kamu punya celengan dengan uang Rp 10.000 di dalamnya. Setiap hari kamu menabung Rp 2.000.
- Hari ke-0: Rp 10.000 (ini intercept = b)
- Hari ke-1: 10.000 + 2.000 = Rp 12.000
- Hari ke-5: 10.000 + (2.000 × 5) = Rp 20.000
Rumusnya: Tabungan = 2.000 × hari + 10.000 → y = 2000x + 10000
Multiple Linear Regression (Banyak Input)
Di dunia nyata, prediksi biasanya tergantung pada banyak hal, bukan cuma satu.
Contoh prediksi harga rumah:
- x₁ = luas (m²), w₁ = 5 juta → setiap 1 m² tambah 5 juta
- x₂ = jumlah kamar, w₂ = 50 juta → setiap kamar tambah 50 juta
- x₃ = jarak ke pusat kota (km), w₃ = -10 juta → makin jauh, makin murah
- b = 100 juta (harga dasar)
Rumah 60m², 3 kamar, 5km dari kota: (5×60) + (50×3) + (-10×5) + 100 = 400 juta
Dalam Machine Learning, huruf yang dipakai sedikit berbeda dari matematika SMA:
| Matematika SMA | Machine Learning | Artinya |
|---|---|---|
| m (slope) | w (weight / bobot) | Seberapa penting fitur ini |
| b (intercept) | b (bias) | Nilai dasar / awal |
| y | ŷ (y-hat) | Nilai prediksi |
🎯 4. Bagaimana Komputer Belajar? (Cost Function)
MenengahOke, sekarang pertanyaan besarnya: dari sekian banyak garis lurus yang bisa digambar, bagaimana komputer tahu mana garis yang paling bagus?
Bayangkan kamu ikut lomba memanah. Kamu menembak 5 anak panah ke sasaran:
- Anak panah 1: meleset 3 cm dari pusat
- Anak panah 2: meleset 1 cm
- Anak panah 3: tepat di pusat! (0 cm)
- Anak panah 4: meleset 2 cm
- Anak panah 5: meleset 4 cm
Untuk menilai seberapa bagus tembakanmu, kamu bisa hitung rata-rata jauhnya meleset. Makin kecil = makin jago!
Nah, Cost Function persis seperti ini — mengukur seberapa jauh prediksi dari kenyataan. Makin kecil cost, makin bagus modelnya!
Error (Kesalahan) = Prediksi − Kenyataan
Untuk setiap data, kita hitung selisih antara apa yang diprediksi model dan apa yang sebenarnya terjadi:
Kalau kenyataannya 50 tapi model prediksi 45, maka error = 50 – 45 = 5.
Kalau kenyataannya 30 dan model prediksi 30, maka error = 0. Sempurna!
Tujuan kita: buat total error sekecil mungkin untuk semua data.
Mean Squared Error (MSE) — Cara Menghitung Total Kesalahan
Kenapa tidak cukup hanya menjumlahkan error saja? Karena error bisa positif dan negatif — kalau dijumlahkan langsung, bisa saling menghapus!
Bayangkan kamu tebak nilai 3 teman:
- Teman A: kamu tebak 80, aslinya 85 → error = -5
- Teman B: kamu tebak 90, aslinya 85 → error = +5
Kalau dijumlah: -5 + 5 = 0. Seolah-olah tebakanmu sempurna, padahal tidak!
Solusinya: kuadratkan errornya dulu! (-5)² = 25, (+5)² = 25. Total = 50. Sekarang terlihat ada kesalahan.
- n = jumlah data
- yᵢ = nilai kenyataan untuk data ke-i
- ŷᵢ = nilai prediksi untuk data ke-i
- (yᵢ − ŷᵢ)² = error dikuadratkan (selalu positif!)
- Σ = jumlahkan semua
- 1/n = bagi jumlah data (ambil rata-rata)
Contoh Hitung MSE Langkah Demi Langkah
Pak Budi punya 4 data penjualan es. Model kita memprediksi:
| Hari | Suhu (x) | Es Terjual Asli (y) | Prediksi (ŷ) | Error (y-ŷ) | Error² |
|---|---|---|---|---|---|
| Senin | 28° | 20 | 22 | -2 | 4 |
| Selasa | 30° | 30 | 28 | +2 | 4 |
| Rabu | 33° | 40 | 37 | +3 | 9 |
| Kamis | 35° | 50 | 52 | -2 | 4 |
Cari nilai w (slope) dan b (intercept) yang membuat MSE paling kecil.
Bayangkan kamu memutar-mutar garis di grafik — komputer mencoba ribuan posisi garis dan memilih yang menghasilkan MSE terkecil. Ada dua cara untuk melakukan ini: Normal Equation (cara langsung) dan Gradient Descent (cara bertahap).
🧮 5. Normal Equation: Cara Instan
MenengahBayangkan kamu punya kalkulator ajaib. Kamu masukkan semua data, tekan satu tombol, dan langsung keluar jawaban: “Slope terbaik = 3.5, Intercept terbaik = -78”. Selesai!
Itulah Normal Equation — rumus matematika yang langsung memberikan jawaban pasti dalam satu langkah, tanpa perlu coba-coba.
- X = tabel data input (semua fitur)
- Xᵀ = X yang dibalik (transpose)
- (XᵀX)⁻¹ = kebalikan (inverse) dari hasil kali XᵀX
- y = data target (yang ingin diprediksi)
- w = hasil: weight terbaik!
Kapan Pakai Normal Equation?
| Kelebihan | Kekurangan |
|---|---|
| Langsung dapat jawaban, tidak perlu iterasi | Lambat kalau data sangat besar (>10.000 fitur) |
| Tidak perlu pilih learning rate | Butuh menghitung inverse matriks (berat secara komputasi) |
| Pasti dapat jawaban optimal | Tidak bisa dipakai kalau matriks tidak bisa di-inverse |
Implementasi Python
# Normal Equation dari nol
import numpy as np
# Data Pak Budi: suhu → es terjual
X = np.array([28, 30, 33, 35]).reshape(-1, 1) # input (kolom)
y = np.array([20, 30, 40, 50]) # target
# Tambah kolom 1 di depan (untuk intercept/bias)
X_b = np.column_stack([np.ones(len(X)), X])
# Rumus Normal Equation: w = (XᵀX)⁻¹ Xᵀy
w = np.linalg.inv(X_b.T @ X_b) @ X_b.T @ y
print(f"Intercept (b) = {w[0]:.2f}")
print(f"Slope (m) = {w[1]:.2f}")
print(f"Prediksi suhu 33°: {w[0] + w[1]*33:.1f} gelas es")
🏔️ 6. Gradient Descent: Turun Gunung Cari Lembah
MenengahBayangkan kamu berdiri di lereng gunung dengan mata tertutup. Kamu ingin sampai ke lembah terendah (MSE terkecil). Bagaimana caranya?
- Raba tanah di sekitarmu — rasakan arah mana yang menurun
- Ambil satu langkah kecil ke arah menurun
- Ulangi terus sampai kamu merasa sudah di titik paling rendah (tidak bisa turun lagi)
Itulah Gradient Descent! Komputer “meraba” arah mana yang membuat error berkurang, lalu menggeser sedikit nilai w dan b ke arah itu. Diulang ribuan kali sampai MSE tidak berkurang lagi.
Rumus Update Gradient Descent
- w = weight saat ini
- α (alpha) = learning rate = ukuran langkah. Kecil = hati-hati tapi lama. Besar = cepat tapi bisa “melompati” lembah!
- ∂MSE/∂w = gradient = arah mana yang menurun (turunan/derivatif dari MSE)
Learning Rate: Jangan Terlalu Besar, Jangan Terlalu Kecil!
- Learning rate terlalu kecil (0.0001) = Langkah semut 🐜 — Pasti sampai, tapi lama banget!
- Learning rate pas (0.01) = Langkah manusia 🚶 — Cepat dan akurat.
- Learning rate terlalu besar (10) = Langkah raksasa 🦖 — Melompat-lompat, tidak pernah sampai! Malah makin jauh!
Implementasi Python
# Gradient Descent dari nol
import numpy as np
# Data
X = np.array([28, 30, 33, 35], dtype=float)
y = np.array([20, 30, 40, 50], dtype=float)
# Inisialisasi acak
w = 0.0 # slope
b = 0.0 # intercept
alpha = 0.0001 # learning rate
n = len(X)
# Training loop
for epoch in range(1, 10001):
# 1. Hitung prediksi
y_pred = w * X + b
# 2. Hitung gradient (turunan MSE terhadap w dan b)
dw = (-2/n) * np.sum(X * (y - y_pred)) # arah koreksi w
db = (-2/n) * np.sum(y - y_pred) # arah koreksi b
# 3. Update w dan b
w = w - alpha * dw
b = b - alpha * db
if epoch % 2000 == 0:
mse = np.mean((y - y_pred)**2)
print(f"Epoch {epoch}: w={w:.4f}, b={b:.4f}, MSE={mse:.4f}")
print(f"\nHasil akhir: y = {w:.2f}x + {b:.2f}")
print(f"Prediksi suhu 33°: {w*33 + b:.1f} gelas es")
Normal Equation vs Gradient Descent
| Aspek | Normal Equation | Gradient Descent |
|---|---|---|
| Kecepatan (data kecil) | Sangat cepat ⚡ | Lebih lambat |
| Kecepatan (data besar) | Sangat lambat 🐌 | Tetap oke ✅ |
| Perlu pilih learning rate? | Tidak | Ya (harus coba-coba) |
| Perlu iterasi? | Tidak (1 langkah) | Ya (ribuan langkah) |
| Bisa untuk model lain? | Hanya Linear Regression | Bisa untuk semua model ML! 🌟 |
🐍 7. Praktek Python: Dari Nol Sampai Prediksi
MenengahSekarang kita gabungkan semuanya dalam satu contoh lengkap — dari data mentah sampai prediksi jadi!
Membuat model ML itu seperti masak. Ada langkah-langkahnya:
- Siapkan bahan (data)
- Olah bahan (bersihkan & siapkan data)
- Masak (latih model)
- Cicipi (evaluasi)
- Sajikan (prediksi data baru)
Contoh Lengkap: Prediksi Harga Rumah Sederhana
# ============================
# LANGKAH 1: Siapkan Bahan (Data)
# ============================
import numpy as np
# Data: [luas_m2, jumlah_kamar]
X = np.array([
[36, 2], # rumah kecil
[50, 2],
[60, 3],
[72, 3],
[80, 4],
[100, 4],
[120, 5],
])
# Harga dalam juta rupiah
y = np.array([250, 350, 420, 500, 580, 700, 850])
print("Data siap! Jumlah rumah:", len(y))
print("Fitur: luas (m²) dan jumlah kamar")
# ============================
# LANGKAH 2: Olah Bahan (Normalisasi)
# ============================
# Supaya gradient descent bekerja lebih baik,
# kita buat semua angka jadi skala yang mirip (0-1)
X_mean = X.mean(axis=0)
X_std = X.std(axis=0)
X_norm = (X - X_mean) / X_std
y_mean = y.mean()
y_std = y.std()
y_norm = (y - y_mean) / y_std
print(f"Rata-rata luas: {X_mean[0]:.0f} m²")
print(f"Rata-rata harga: {y_mean:.0f} juta")
# ============================
# LANGKAH 3: Masak (Training dengan Gradient Descent)
# ============================
n_samples, n_features = X_norm.shape
w = np.zeros(n_features) # [w_luas, w_kamar]
b = 0.0
alpha = 0.01
epochs = 1000
for epoch in range(epochs):
y_pred = X_norm @ w + b
error = y_pred - y_norm
dw = (2/n_samples) * (X_norm.T @ error)
db = (2/n_samples) * np.sum(error)
w -= alpha * dw
b -= alpha * db
if (epoch+1) % 200 == 0:
mse = np.mean(error**2)
print(f"Epoch {epoch+1}: MSE = {mse:.6f}")
print(f"\nWeight: luas={w[0]:.4f}, kamar={w[1]:.4f}")
print(f"Bias: {b:.4f}")
# ============================
# LANGKAH 4: Cicipi (Evaluasi)
# ============================
y_pred_final = X_norm @ w + b
# Kembalikan ke skala asli
y_pred_asli = y_pred_final * y_std + y_mean
print("\n--- Perbandingan ---")
for i in range(len(y)):
print(f"Rumah {i+1}: Asli={y[i]} juta, Prediksi={y_pred_asli[i]:.0f} juta")
# ============================
# LANGKAH 5: Sajikan (Prediksi Rumah Baru)
# ============================
rumah_baru = np.array([75, 3]) # 75m², 3 kamar
rumah_norm = (rumah_baru - X_mean) / X_std
harga_pred = (rumah_norm @ w + b) * y_std + y_mean
print(f"\n🏠 Rumah baru (75m², 3 kamar)")
print(f" Prediksi harga: {harga_pred:.0f} juta rupiah")
Cara Gampang Pakai scikit-learn
Di dunia kerja, kita biasanya pakai library scikit-learn supaya lebih mudah:
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[36,2],[50,2],[60,3],[72,3],[80,4],[100,4],[120,5]])
y = np.array([250, 350, 420, 500, 580, 700, 850])
# Buat & latih model (cuma 2 baris!)
model = LinearRegression()
model.fit(X, y)
# Lihat hasilnya
print(f"Bobot: luas={model.coef_[0]:.2f}, kamar={model.coef_[1]:.2f}")
print(f"Bias: {model.intercept_:.2f}")
# Prediksi rumah baru
harga = model.predict([[75, 3]])
print(f"Rumah 75m² 3 kamar → {harga[0]:.0f} juta")
Kode dari nol = 40+ baris. Pakai scikit-learn = 3 baris. Tapi penting paham cara kerjanya dulu supaya tahu apa yang terjadi di balik layar!
🛡️ 8. Regularisasi: Jangan Terlalu Hafal!
LanjutanAda dua jenis murid:
- Murid A: Memahami konsep → bisa jawab soal baru yang belum pernah dilihat ✅
- Murid B: Menghafal semua soal latihan → tapi kalau soalnya beda sedikit, bingung! ❌
Murid B mengalami overfitting — terlalu “hafal” data latihan tapi gagal di data baru.
Regularisasi adalah cara kita membuat model jadi seperti Murid A — memahami pola umum, bukan menghafal detail.
Overfitting vs Underfitting
Ridge Regression (L2 Regularization)
Bayangkan setiap weight (bobot) itu seperti karyawan yang minta gaji. Ridge bilang: “Boleh minta gaji tinggi, tapi kena pajak!”
Jadi weight yang terlalu besar akan “didenda” — memaksa model untuk tetap sederhana.
- λ (lambda) = seberapa besar dendanya. Makin besar λ, makin kuat paksaan supaya weight kecil.
- Σ(wᵢ²) = jumlah kuadrat semua weight
- Ridge membuat weight kecil tapi tidak nol — semua fitur tetap dipakai
Lasso Regression (L1 Regularization)
Lasso lebih tegas dari Ridge. Kalau ada fitur yang kurang berguna, Lasso langsung membuatnya nol — “dipecat”!
Ini berguna kalau kamu punya 100 fitur tapi hanya 10 yang benar-benar penting.
- Perbedaan: pakai |wᵢ| (nilai mutlak) bukan wᵢ²
- Efeknya: weight yang tidak penting bisa jadi tepat 0 (fitur dibuang)
- Lasso otomatis melakukan feature selection (memilih fitur penting)
Perbandingan Ridge vs Lasso
| Aspek | Ridge (L2) | Lasso (L1) |
|---|---|---|
| Apa yang dilakukan | Mengecilkan weight | Mengecilkan & bisa menghapus weight |
| Weight bisa jadi 0? | Tidak (mendekati 0 saja) | Ya! (fitur dibuang) |
| Cocok kalau | Semua fitur berguna | Banyak fitur tidak berguna |
| Analogi | Pajak gaji | PHK karyawan |
Implementasi Python
from sklearn.linear_model import Ridge, Lasso
import numpy as np
X = np.array([[36,2],[50,2],[60,3],[72,3],[80,4],[100,4],[120,5]])
y = np.array([250, 350, 420, 500, 580, 700, 850])
# Ridge (L2)
ridge = Ridge(alpha=1.0) # alpha = λ (lambda)
ridge.fit(X, y)
print("Ridge weights:", ridge.coef_)
# Lasso (L1)
lasso = Lasso(alpha=1.0)
lasso.fit(X, y)
print("Lasso weights:", lasso.coef_)
# Perhatikan: beberapa weight mungkin jadi 0!
📊 9. Evaluasi Model: Seberapa Bagus?
MenengahSetelah model dilatih, kita perlu tahu: “Seberapa bagus sih model ini?”
Model punya “rapor” juga! Ada beberapa metrik yang jadi “nilai” model kita:
1. MSE (Mean Squared Error)
Sudah kita bahas — rata-rata kuadrat error. Makin kecil = makin bagus. Satuan: kuadrat dari target (misal: juta² kalau target dalam juta).
2. RMSE (Root Mean Squared Error)
Akar dari MSE — satuannya sama dengan target asli. Kalau RMSE = 15, artinya rata-rata meleset sekitar 15 juta rupiah.
3. MAE (Mean Absolute Error)
Rata-rata nilai mutlak error. Lebih mudah dipahami karena tidak dikuadratkan.
Bayangkan kamu meleset 1, 1, 1, dan 10 (satu kesalahan besar):
- MAE = (1+1+1+10)/4 = 3.25
- MSE = (1+1+1+100)/4 = 25.75
MSE “menghukum” kesalahan besar lebih berat karena dikuadratkan. MAE lebih “pemaaf”.
4. R² Score (Coefficient of Determination)
- R² = 1.0 → Sempurna! Model menjelaskan 100% variasi data
- R² = 0.8 → Bagus! Model menjelaskan 80% variasi data
- R² = 0.0 → Model sama buruknya dengan cuma menebak rata-rata
- R² < 0 → Model lebih buruk dari menebak rata-rata!
R² itu seperti “persentase keberhasilan”. Kalau R² = 0.85, artinya model kita bisa menjelaskan 85% pola dalam data. Sisa 15% karena faktor lain yang tidak kita masukkan.
Implementasi Python
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
import numpy as np
y_asli = np.array([250, 350, 420, 500, 580, 700, 850])
y_prediksi = np.array([260, 340, 430, 490, 590, 680, 860])
mse = mean_squared_error(y_asli, y_prediksi)
rmse = np.sqrt(mse)
mae = mean_absolute_error(y_asli, y_prediksi)
r2 = r2_score(y_asli, y_prediksi)
print(f"MSE = {mse:.2f}")
print(f"RMSE = {rmse:.2f} juta (rata-rata meleset)")
print(f"MAE = {mae:.2f} juta")
print(f"R² = {r2:.4f} ({r2*100:.1f}% pola terjelaskan)")
⚖️ 10. Bias vs Variance
LanjutanBayangkan 4 orang menembak sasaran:
- Bias tinggi = Model terlalu sederhana → selalu meleset ke arah yang sama (underfitting)
- Variance tinggi = Model terlalu sensitif → berubah drastis kalau data berubah sedikit (overfitting)
- Tujuan = Seimbangkan keduanya! (bias rendah + variance rendah)
- Bias tinggi: Kamu cuma bisa masak nasi goreng untuk semua situasi. Sederhana, tapi sering tidak cocok.
- Variance tinggi: Kamu meniru resep persis tanpa paham prinsipnya. Di dapur sendiri (data baru), bingung!
- Seimbang: Kamu paham prinsip memasak → bisa adaptasi resep untuk situasi apapun!
Cara Mengatasi
| Masalah | Tanda-tanda | Solusi |
|---|---|---|
| Bias tinggi (underfitting) | Error tinggi di data latihan DAN data tes | Tambah fitur, gunakan model lebih kompleks |
| Variance tinggi (overfitting) | Error rendah di data latihan tapi TINGGI di data tes | Tambah data, gunakan regularisasi (Ridge/Lasso) |
🏁 11. Rangkuman & Tips
Mudah| Konsep | Analogi | Inti |
|---|---|---|
| Linear Regression | Warung es Pak Budi | Cari garis lurus terbaik untuk prediksi |
| y = mx + b | Tarif ojek online | m = perubahan per unit, b = nilai awal |
| Cost Function (MSE) | Lomba memanah | Ukur seberapa jauh prediksi dari kenyataan |
| Normal Equation | Kalkulator ajaib | Rumus langsung, cocok untuk data kecil |
| Gradient Descent | Pendaki buta di gunung | Turun perlahan ke lembah (MSE minimum) |
| Learning Rate | Ukuran langkah kaki | Terlalu kecil = lama, terlalu besar = melompat |
| Ridge (L2) | Pajak gaji | Kecilkan semua weight agar tidak overfitting |
| Lasso (L1) | PHK karyawan | Buang fitur tidak berguna (weight = 0) |
| R² Score | Persentase keberhasilan | 0–1, makin tinggi makin bagus |
| Bias vs Variance | Menembak sasaran | Cari keseimbangan: akurat DAN konsisten |
- Mulai dari yang sederhana — Linear Regression sering “cukup bagus” untuk masalah awal
- Selalu visualisasikan data — gambar scatter plot sebelum membuat model
- Normalisasi fitur — terutama kalau pakai Gradient Descent
- Pisahkan data latihan dan tes — jangan evaluasi model pakai data yang sama untuk melatihnya
- Coba Ridge/Lasso kalau model terlalu overfitting
- Paham dulu konsepnya, baru pakai library — scikit-learn memudahkan, tapi paham dasar = kekuatan super!
Setelah menguasai Linear Regression, kamu bisa lanjut belajar:
- Logistic Regression — untuk klasifikasi (ya/tidak, spam/bukan spam)
- Polynomial Regression — untuk pola yang melengkung
- Decision Trees & Random Forest — model yang lebih fleksibel
- Neural Networks — fondasi Deep Learning (yang dasarnya juga mirip!)