Pengertian Overfitting
Overfitting adalah kondisi ketika model machine learning, termasuk neural network, belajar terlalu baik dari data pelatihan (training data) — sampai-sampai model menangkap noise, kesalahan acak, atau pola spesifik yang tidak mewakili karakteristik umum data sebenarnya.
Ilustrasi sederhana:
-
Model dengan banyak parameter mampu menyesuaikan setiap titik data latih (error kecil di training set).
-
Namun, ketika diuji pada data baru → prediksi meleset (generalization error besar).
Ciri khas overfitting:
-
Training loss: sangat kecil
-
Validation/test loss: tinggi atau meningkat setelah beberapa epoch
-
Akurasi training jauh lebih tinggi dibanding akurasi validasi
Penyebab Utama Overfitting
-
Model terlalu kompleks
→ Jumlah parameter besar dibandingkan ukuran data.
(contoh: deep network dengan banyak layer pada dataset kecil) -
Data latih terbatas atau tidak representatif
→ Model “hapal” pola sempit yang tidak berlaku umum. -
Kurangnya regularisasi
→ Tidak ada mekanisme pembatasan parameter (bebas belajar terlalu dalam). -
Pelatihan terlalu lama (epoch berlebih)
→ Model terus menyesuaikan noise pada data latih.
Konsep Regularisasi
Regularisasi adalah kumpulan teknik yang digunakan untuk mengontrol kompleksitas model, agar dapat menggeneralisasi lebih baik.
Tujuan:
Meminimalkan training loss + penalti kompleksitas model.
Secara matematis, fungsi loss termodifikasi menjadi:
Ltotal=Ldata+λ⋅Ω(w)L_{total} = L_{data} + \lambda \cdot \Omega(w)
di mana:
-
LdataL_{data} = loss utama (misal MSE atau cross-entropy)
-
Ω(w)\Omega(w) = fungsi penalti terhadap parameter ww
-
λ\lambda = koefisien regularisasi (mengontrol kekuatan penalti)
Jenis-Jenis Regularisasi pada Neural Network
A. L1 dan L2 Regularization
-
L1 (Lasso)
Penalti: Ω(w)=∑∣wi∣\Omega(w) = \sum |w_i|
→ Mendorong beberapa bobot menjadi nol → model lebih sederhana & sparse. -
L2 (Ridge)
Penalti: Ω(w)=∑wi2\Omega(w) = \sum w_i^2
→ Mengecilkan bobot besar → stabil & mencegah pembelajaran berlebihan.
Dalam framework seperti TensorFlow atau PyTorch, digunakan melalui parameter seperti kernel_regularizer=l2(λ).
B. Dropout
-
Secara acak menonaktifkan sebagian neuron selama training (misal 20–50%).
-
Mencegah neuron saling bergantung terlalu kuat (co-adaptation).
-
Contoh:
Dropout(0.5)berarti 50% neuron di-nonaktifkan tiap iterasi.
Efeknya:
-
Membuat model lebih “robust”.
-
Meniru prinsip ensemble averaging (karena model berbeda tiap batch).
C. Early Stopping
-
Hentikan training ketika validation loss mulai naik meskipun training loss masih turun.
-
Mencegah model belajar noise dari data latih.
Biasanya digunakan dengan callback monitoring (misal di Keras: EarlyStopping(monitor='val_loss', patience=5)).
D. Data Augmentation
-
Menambah variasi data latih secara artifisial (rotasi, flipping, cropping, noise, dsb).
-
Membantu model belajar lebih banyak pola tanpa benar-benar menambah data baru.
Khusus efektif di Computer Vision dan NLP.
E. Batch Normalization
-
Menormalkan output layer antar-batch → stabilisasi training & kontrol distribusi fitur.
-
Secara tidak langsung juga berfungsi sebagai regularizer.
F. Weight Constraint / Max-Norm
-
Membatasi norma bobot maksimal (misalnya ||w|| ≤ c).
-
Mencegah bobot tumbuh terlalu besar.
Deteksi dan Evaluasi Overfitting
| Indikator | Kondisi Overfitting |
|---|---|
| Training Loss | Sangat rendah |
| Validation Loss | Tinggi atau meningkat setelah titik tertentu |
| Training Accuracy | Sangat tinggi |
| Validation Accuracy | Stagnan atau menurun |
| Learning Curve | Terpisah lebar antara train vs validation |
Solusi: kurangi kompleksitas model, tambahkan data, atau tingkatkan regularisasi.
Strategi Praktis Mengatasi Overfitting
| Strategi | Tujuan |
|---|---|
| Tambah data / augmentasi | Menambah generalisasi |
| Kurangi arsitektur (layer/neuron) | Menurunkan kompleksitas |
| Dropout / L2 regularization | Menstabilkan bobot |
| Early stopping | Mencegah pelatihan berlebih |
| Cross-validation | Mengevaluasi generalisasi model |
| BatchNorm | Stabilisasi & efek regularisasi tambahan |
7. Contoh Singkat (Keras)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from tensorflow.keras.regularizers import l2
model = Sequential([
Dense(128, activation=’relu’, kernel_regularizer=l2(0.001), input_shape=(100,)),
Dropout(0.5),
Dense(64, activation=’relu’, kernel_regularizer=l2(0.001)),
Dropout(0.3),
Dense(10, activation=’softmax’)
])
Di sini:
-
L2 menstabilkan bobot,
-
Dropout mengurangi co-adaptation,
-
Kombinasi keduanya membantu generalisasi.

Kesimpulan
| Aspek | Overfitting | Regularisasi |
|---|---|---|
| Makna | Model terlalu menyesuaikan data latih | Teknik untuk membatasi kompleksitas model |
| Dampak | Generalisasi buruk | Generalisasi membaik |
| Penyebab | Data kecil, model besar, training lama | — |
| Solusi | Regularisasi, augmentasi, early stopping | — |
