Kursus
Apakah Anda tahu mengapa model Anda meraih akurasi 99% pada data pelatihan tetapi seolah tak bisa menebak satu hal pun dengan benar di produksi?
Ada perbedaan antara model yang menghafal dan model yang belajar. Generalisasi adalah inti dari machine learning—Anda menginginkan prediksi yang tetap kuat pada data yang belum pernah dilihat model, bukan hanya data yang digunakan saat pelatihan. Ketika itu tidak terjadi, hampir selalu jatuh ke salah satu dari dua arah.
Dua arah itu adalah overfitting dan underfitting. Anda harus tahu mana yang sedang dihadapi sebelum bisa memperbaikinya.
Dalam artikel ini, saya akan memandu Anda mengenali overfitting dan underfitting, mengapa keduanya terjadi, dan langkah-langkah praktis untuk membantu Anda mencapai keseimbangan.
Apa Itu Underfitting?
Underfitting terjadi ketika model Anda terlalu sederhana untuk merepresentasikan apa yang sebenarnya terjadi pada data.
Bayangkan mencoba memprediksi harga rumah dengan satu aturan: "setiap rumah harganya $300.000." Aturan itu akan salah hampir di mana-mana. Ia tidak mampu melihat lingkungan, luas bangunan, jumlah kamar tidur, garasi, atau tahun pembangunan. Modelnya sama sekali tidak cukup fleksibel untuk mengikuti polanya.
Anda bisa mengenali underfitting dengan cara yang sama setiap saat. Akurasi pelatihan rendah, dan akurasi uji juga rendah. Keduanya buruk, tetapi yang penting adalah keduanya buruk bersama-sama.
Contoh klasiknya adalah memasangkan garis lurus pada data yang melengkung. Garisnya memotong di tengah dan meleset dari bentuk aslinya. Berapa pun tambahan data pelatihan tidak akan menyelamatkannya, karena modelnya sendiri tidak bisa merepresentasikan hubungan tersebut.

Contoh underfitting
Apa Itu Overfitting?
Overfitting adalah masalah kebalikan. Modelnya terlalu kompleks.
Alih-alih mempelajari pola umum, ia menghafal set pelatihan. Setiap titik noise, outlier aneh, setiap puncak dan lembah, setiap kebetulan dalam data mendapat perhatian seolah-olah itu pola nyata. Model menjadi hampir sempurna untuk data tempat ia dilatih.
Hal baiknya, overfitting mudah dikenali. Akurasi pelatihan terlihat sangat bagus, tetapi akurasi uji buruk sekali.
Bayangkan siswa yang menghafal jawaban ujian kata demi kata tetapi tidak pernah mempelajari materi dasarnya. Mereka mendapat nilai bagus pada tes latihan dan kemungkinan gagal pada ujian sebenarnya.

Contoh overfitting
Overfitting vs Underfitting: Perbedaan Utama
Sekarang setelah Anda melihat keduanya, perbedaannya lebih mudah dikenali. Model underfitting tidak mampu berkinerja pada data yang sudah dilihat. Model overfitting tidak mampu berkinerja pada data yang belum dilihat.
Keduanya terlihat berbeda selama pelatihan:
- Underfitting muncul sebagai kinerja datar dan medioker di semua sisi—model tidak pernah banyak belajar dari apa pun
- Overfitting muncul sebagai kesenjangan, ketika skor pelatihan terus naik sementara skor uji mandek atau memburuk seiring waktu
Penyebabnya juga saling bercermin. Underfitting berasal dari melakukan terlalu sedikit: model sederhana dan fitur yang kurang. Overfitting berasal dari melakukan terlalu banyak: model kompleks dan terlalu banyak fitur.
Berikut rekap keduanya:

Perbandingan underfitting dan overfitting
Cara Mengidentifikasi Overfitting dan Underfitting
Mengetahui seperti apa underfitting dan overfitting secara teori adalah satu hal, tetapi menemukannya pada model Anda sendiri adalah hal lain.
Hal termudah yang bisa dilakukan adalah membandingkan error pelatihan dengan error uji, dan melihat kurva pembelajaran.
Error pelatihan vs uji
Pemeriksaan tercepat adalah membagi data menjadi set pelatihan dan set uji, melatih model, lalu melihat error pada masing-masing.
Untuk underfitting, kedua error akan tinggi. Model tidak mempelajari data pelatihan dengan baik, dan tidak akan berkinerja lebih baik pada data yang belum pernah dilihat. Hasil buruk yang sama di kedua sisi.
Untuk overfitting, error pelatihan akan sangat rendah sementara error uji tetap tinggi. Model telah menghafal data pelatihan, tetapi pengetahuan itu tidak dapat ditransfer.

Visualisasi error pelatihan vs uji
Anda ingin menganalisis kesenjangan antara dua angka ini. Kesenjangan kecil dengan error tinggi mengarah ke underfitting. Kesenjangan besar dengan error pelatihan rendah dan error uji tinggi mengarah ke overfitting. Kesenjangan kecil dengan error rendah pada keduanya adalah tujuannya, karena itu berarti model mempelajari representasi data yang sebenarnya.
Kurva pembelajaran
Kurva pembelajaran memplot error pelatihan dan validasi terhadap ukuran set pelatihan, atau terhadap iterasi pelatihan. Kurva ini menunjukkan apa yang terjadi saat model belajar.
Pada model underfit, kedua kurva dengan cepat mendatar pada error tinggi. Menambahkan lebih banyak data tidak membantu karena model tidak bisa merepresentasikan polanya sejak awal. Kedua kurva tetap tinggi.

Kurva model underfit
Pada model overfit, kurva pelatihan turun mendekati nol sementara kurva validasi tetap tinggi. Kesenjangan di antara keduanya melebar seiring pelatihan berlanjut. Kesenjangan yang tumbuh itulah yang tampak sebagai overfitting pada grafik.

Kurva model overfit
Model yang sehat menunjukkan kedua kurva turun dan bertemu pada error rendah, dengan kesenjangan kecil di antara keduanya.
Mengapa Overfitting dan Underfitting Terjadi
Setelah Anda tahu cara mengenalinya, pertanyaan berikutnya adalah mengapa keduanya muncul. Keduanya berasal dari ketidaksesuaian antara model dan masalah, tetapi dalam arah yang berlawanan.
Penyebab underfitting
Underfitting hampir selalu bermuara pada salah satu dari tiga hal.
- Model terlalu sederhana: Model linear tidak bisa merepresentasikan hubungan yang melengkung. Kapasitas model tidak memenuhi kebutuhan masalah yang sebenarnya.
- Fitur tidak memadai: Bahkan model yang mampu pun akan underfit jika Anda memberinya masukan yang salah. Memprediksi harga rumah dari kode pos tidak masuk akal, dan melewatkan luas bangunan, jumlah kamar, kondisi, usia, dan luas tanah. Model tidak punya sesuatu yang berguna untuk dikerjakan.
- Pelatihan tidak cukup: Model tidak memiliki kedalaman, iterasi, epoch, atau penyesuaian laju pembelajaran yang cukup untuk mencapai solusi yang baik. Pelatihan berhenti terlalu dini.
Penyebab overfitting
Overfitting muncul karena memberi model kebebasan lebih dari yang dibutuhkan data.
- Model terlalu kompleks: Jaringan saraf dalam dengan jutaan parameter yang dilatih pada dataset kecil punya banyak ruang untuk menghafal. Kapasitasnya melebihi kebutuhan masalah.
- Terlalu banyak fitur: Ketika Anda memiliki lebih banyak fitur daripada pola bermakna dalam data, model mempelajari korelasi yang kebetulan ada pada sampel pelatihan Anda tetapi tidak tergeneralisasi.
- Dataset terlalu kecil: Dengan data pelatihan terbatas, bahkan kompleksitas model yang moderat dapat menghafal seluruh set. Tidak ada cukup contoh untuk digeneralisasi oleh model.
- Pelatihan berlangsung terlalu lama: Model terus menyesuaikan bobot setelah ia mempelajari pola sebenarnya, dan mulai menyesuaikan noise. Sejak saat itu, pelatihan lebih lanjut justru memperburuk keadaan.
Trade-off Bias-Variance
Trade-off bias-variance menjelaskan mengapa kinerja model bergantung pada menemukan titik manis di mana model Anda melakukan generalisasi dengan baik ke data yang belum terlihat tanpa menyederhanakan masalah secara berlebihan atau melakukan overfitting pada set pelatihan.
Bias tinggi
Bias adalah error yang berasal dari asumsi model tentang data. Model dengan bias tinggi memiliki asumsi yang kuat dan sederhana. Ia tidak dapat merepresentasikan kompleksitas sebenarnya dari apa yang terjadi dalam data.
Inilah yang dimaksud dengan underfitting. Model terlalu kaku untuk menyesuaikan pola, sehingga menghasilkan prediksi yang meleset, sebesar apa pun data yang Anda berikan.
Jika Anda melatih model bias tinggi 100 kali pada sampel berbeda, semua 100 versinya akan membuat kesalahan serupa. Prediksinya berkumpul di sekitar jawaban yang salah.
Varians tinggi
Varians adalah error yang muncul ketika model terlalu sensitif terhadap data spesifik yang digunakan untuk pelatihan. Model dengan varians tinggi menangkap setiap pola kecil, biasanya noise.
Inilah yang dimaksud dengan overfitting. Model menyesuaikan set pelatihan dengan sangat erat, tetapi sedikit perubahan pada data pelatihan menghasilkan prediksi yang sangat berbeda.
Jika Anda melatih model varians tinggi 100 kali pada sampel berbeda, Anda akan mendapatkan 100 model yang sangat berbeda. Prediksinya tersebar ke mana-mana, bahkan pada masukan yang sama.
Trade-off
Anda tidak bisa sepenuhnya menghilangkan bias atau varians; Anda hanya bisa menggeser di antara keduanya.
Mengurangi bias dengan membuat model lebih kompleks akan meningkatkan varians. Mengurangi varians dengan menyederhanakan model akan meningkatkan bias. Tujuannya adalah menemukan titik tengah, di mana total error berada pada tingkat terendah.

Contoh trade-off bias-variance
Cara Memperbaiki Underfitting
Setelah Anda mendiagnosis underfitting, ada beberapa cara untuk memperbaikinya. Semuanya memberi model lebih banyak kapasitas untuk merepresentasikan pola dalam data Anda.
- Tingkatkan kompleksitas model: Beralih ke model yang lebih fleksibel. Dari regresi linear ke regresi polinomial, atau dari pohon dangkal ke pohon yang lebih dalam.
- Tambahkan lebih banyak fitur: tambahkan masukan baru yang benar-benar bernilai. Buat term interaksi, fitur polinomial, atau fitur spesifik domain yang sebelumnya tidak diakses model.
- Latih lebih lama: Model mungkin belum punya waktu cukup untuk konvergen. Beri lebih banyak epoch atau skema laju pembelajaran yang berbeda.
- Kurangi regularisasi: Regularisasi menjaga model tetap sederhana, yang berlawanan dengan kebutuhan underfitting. Turunkan kekuatan regularisasi atau hilangkan sepenuhnya, agar model lebih leluasa.
Beberapa fitur yang baik sering kali berdampak lebih besar daripada mengganti arsitektur. Mulailah dari sana sebelum mengubah modelnya.
Cara Memperbaiki Overfitting
Memperbaiki overfitting memerlukan pendekatan sebaliknya. Anda ingin membatasi model agar berhenti menghafal data pelatihan.
- Kumpulkan lebih banyak data: Dataset yang lebih besar membuat model jauh lebih sulit menghafal. Lebih banyak contoh memaksanya menemukan pola yang berlaku di seluruh set, bukan hanya segelintir baris.
- Terapkan regularisasi: Regularisasi L1 dan L2 menambahkan penalti untuk bobot besar, yang menjaga model agar tidak terlalu bergantung pada satu fitur. Ini salah satu perbaikan paling andal.
- Kurangi kompleksitas model: Jika model terlalu besar untuk datanya, perkecil. Gunakan lebih sedikit parameter, pohon yang lebih dangkal, atau jaringan yang lebih kecil.
- Gunakan cross-validation: Cross-validation memberi Anda pembacaan yang lebih jujur tentang bagaimana model akan berkinerja pada data yang belum terlihat. Ini memberi lebih banyak pembagian pelatihan-uji dari satu dataset.
- Terapkan dropout untuk neural network: Dropout secara acak menonaktifkan persentase neuron selama pelatihan. Ini memaksa jaringan mempelajari representasi redundan, yang mengurangi ketergantungan pada satu neuron mana pun.
- Hentikan pelatihan lebih awal: Amati error validasi dan hentikan pelatihan saat mulai meningkat, meskipun error pelatihan masih menurun. Ini disebut early stopping, dan merupakan salah satu perubahan termudah untuk diterapkan.
Regularisasi dan early stopping biasanya menjadi hal pertama yang dicoba. Biayanya nihil dan hampir selalu membantu.
Overfitting dan Underfitting pada Berbagai Model
Keluarga model yang berbeda menunjukkan underfitting dan overfitting dengan caranya masing-masing. Berikut bagaimana tiga yang umum dapat gagal ke dua arah.
Model linear
- Underfit: Model linear mengasumsikan hubungan garis lurus. Ketika pola sebenarnya melengkung, model tidak bisa mengikutinya, sebesar apa pun data yang Anda berikan.
- Overfit: Saat Anda menambahkan cukup banyak term polinomial atau interaksi, bahkan regresi linear dapat menghafal noise. Metode regularisasi seperti Ridge dan Lasso ada terutama untuk menangani ini.
Decision tree
- Underfit: Pohon yang dangkal hanya dapat membuat beberapa pemisahan. Dengan dua atau tiga keputusan, ia tidak bisa merepresentasikan pola yang membutuhkan nuansa lebih.
- Overfit: Pohon yang dalam cenderung overfit. Pohon yang terus membelah sampai setiap daun berisi satu contoh pelatihan akan memperoleh akurasi pelatihan sempurna dan akurasi uji buruk. Itulah mengapa parameter seperti
max_depth,min_samples_split, dan pruning ada.
Neural network
- Underfit: Jaringan yang terlalu kecil untuk masalahnya akan underfit. Begitu juga jaringan yang pelatihannya berhenti terlalu dini, atau ketika optimizer terjebak pada solusi suboptimal.
- Overfit: Ini lebih umum pada deep learning. Jaringan dengan jutaan parameter dapat menghafal bahkan dataset besar jika diberi epoch yang cukup. Dropout, weight decay, augmentasi data, dan early stopping semuanya ada untuk mencegahnya.
Contoh Tambahan Overfitting vs Underfitting
Sekarang saya akan memandu Anda melalui dua contoh klasik dengan kode yang akan memudahkan melihat pola-pola ini.
Regresi polinomial
Gelombang sinus dengan noise adalah kasus uji yang bagus. Ketika Anda memasangkan polinomial dengan derajat berbeda, Anda bisa melihat perilaku model berubah.
import numpy as np
# Data
np.random.seed(7)
X = np.linspace(0, 1, 30)
y_true = np.sin(2 * np.pi * X)
y = y_true + np.random.normal(0, 0.2, X.shape)
# Fit polynomials of three degrees
X_smooth = np.linspace(0, 1, 300)
degrees = [1, 3, 15]
for degree in degrees:
coefs = np.polyfit(X, y, deg=degree)
y_pred = np.polyval(coefs, X_smooth)

Contoh regresi polinomial
Derajat 1 adalah garis lurus yang underfit. Ia sama sekali tidak bisa mengikuti kurva. Derajat 3 merepresentasikan bentuk sebenarnya. Ia menyerap sebagian noise tetapi tetap dekat dengan kebenaran. Derajat 15 overfit karena menenun melalui setiap titik pelatihan dan menghasilkan osilasi besar di antaranya.
Decision tree dengan kedalaman bervariasi
Kisah yang sama muncul pada decision tree. Anda bisa melatih pohon dengan kedalaman meningkat pada data yang sama dan mengukur error pada set pelatihan dan uji.
import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# Data
np.random.seed(11)
X = np.linspace(0, 10, 250).reshape(-1, 1)
y = np.sin(X).ravel() + np.random.normal(0, 0.3, 250)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=0
)
depths = range(1, 21)
train_errors = []
test_errors = []
for depth in depths:
tree = DecisionTreeRegressor(max_depth=depth, random_state=0)
tree.fit(X_train, y_train)
train_errors.append(mean_squared_error(y_train, tree.predict(X_train)))
test_errors.append(mean_squared_error(y_test, tree.predict(X_test)))

Contoh decision tree
Error pelatihan berkurang seiring pohon bertambah dalam, akhirnya mendekati nol ketika setiap daun berisi satu titik pelatihan. Error uji turun pada awalnya saat pohon menangkap hubungan sebenarnya dalam data, lalu naik kembali ketika pembelahan lebih dalam mulai menyesuaikan noise. Titik minimum berada pada kedalaman yang menyeimbangkan keduanya.
Kesalahan Umum Saat Mendiagnosis Kinerja Model
Bahkan jika Anda memilih metrik yang tepat, mudah untuk menarik kesimpulan yang salah. Berikut hal-hal yang sebaiknya tidak Anda lakukan saat mengevaluasi kinerja model:
- Hanya mengevaluasi akurasi pelatihan: Akurasi pelatihan memberi tahu Anda seberapa baik model menyesuaikan data yang sudah dilihat. Itu tidak memberi tahu apa pun tentang bagaimana model akan berkinerja pada masukan baru. Selalu ukur pada set terpisah sebelum menarik kesimpulan.
- Mengabaikan data validasi: Data validasi digunakan untuk menyetel pilihan model seperti arsitektur, hyperparameter, dan titik penghentian. Model akan melakukan overfit terhadap set pelatihan dan set uji yang telah Anda gunakan terlalu sering.
- Menganggap lebih kompleks selalu lebih baik: Model yang lebih besar tidak otomatis berarti lebih mumpuni. Jika data Anda kecil atau hubungan dalam data sederhana, kompleksitas hanya akan menurunkan kinerja. Mulailah dari yang sederhana dan tambahkan kapasitas hanya saat diagnostik menuntutnya.
- Menyamakan noise dengan sinyal: Tidak setiap pola dalam data pelatihan layak dipelajari. Fluktuasi acak, bias pengambilan sampel, outlier, dan artefak pengumpulan dapat terlihat bermakna bagi model yang fleksibel. Jika Anda tidak dapat menjelaskan mengapa suatu hubungan seharusnya ada, perlakukan dengan hati-hati.
Anda sebaiknya selalu memeriksa keempatnya sebelum menetapkan sebuah model. Sebagian besar kegagalan produksi terkait dengan satu (atau lebih) di antaranya.
Kesimpulan
Underfitting dan overfitting adalah dua cara model gagal melakukan generalisasi. Yang satu terlalu sederhana untuk mempelajari pola. Yang lain mencoba mempelajari setiap titik dalam dataset Anda.
Tujuan sebenarnya dari pelatihan adalah berada di antara keduanya, di mana bias dan varians seimbang dan total error berada pada titik terendah.
Kinerja validasi adalah metrik yang memberi tahu posisi Anda. Pantau selama pelatihan dan biarkan perbedaan antara error pelatihan dan validasi memandu keputusan Anda. Jika error validasi berhenti membaik sementara error pelatihan terus turun, Anda telah melewati titik manis. Jika keduanya tetap tinggi, Anda belum mencapainya.
Ingin mempelajari konsep data science tingkat lanjut dan siap kerja pada 2026? Daftarlah di Machine Learning Engineer track untuk beranjak dari dasar hingga MLOps.
FAQs
Apa perbedaan antara overfitting dan underfitting?
Underfitting terjadi ketika model terlalu sederhana untuk merepresentasikan pola dalam data Anda, sehingga berkinerja buruk pada set pelatihan dan uji. Overfitting adalah kebalikannya: model mempelajari data pelatihan terlalu baik, termasuk noise, sehingga berkinerja sangat baik saat pelatihan tetapi gagal pada data baru. Keduanya menghasilkan prediksi lemah, tetapi karena alasan yang berbeda.
Bagaimana saya tahu apakah model saya overfitting atau underfitting?
Bandingkan error pelatihan dengan error uji. Jika keduanya tinggi, Anda mengalami underfitting. Jika error pelatihan sangat rendah tetapi error uji tinggi, Anda mengalami overfitting. Kurva pembelajaran juga membantu, karena error pelatihan dan validasi akan menyimpang pada model overfit dan tetap datar pada error tinggi pada model underfit.
Apa itu trade-off bias-variance?
Bias adalah error dari model yang terlalu sederhana, dan varians adalah error dari model yang terlalu sensitif terhadap data pelatihannya. Mengurangi salah satunya biasanya meningkatkan yang lain, sehingga tujuannya adalah menemukan keseimbangan di mana total error berada pada titik terendah. Model dengan keseimbangan terbaik paling mampu melakukan generalisasi ke data baru.
Apakah mengumpulkan lebih banyak data dapat memperbaiki overfitting?
Biasanya membantu, tetapi bukan jaminan perbaikan. Lebih banyak data membuat model lebih sulit menghafal, sehingga harus menemukan pola yang berlaku di seluruh set. Namun jika model Anda terlalu kompleks untuk masalahnya, atau fitur-fitur Anda sebagian besar berisi noise, lebih banyak data tidak akan sepenuhnya menyelesaikannya. Regularisasi dan model yang lebih sederhana sering kali lebih efektif dalam kasus tersebut.
Bisakah saya menggunakan early stopping untuk mencegah overfitting pada neural network?
Ya, dan ini salah satu perbaikan termudah untuk diterapkan. Amati error validasi selama pelatihan dan hentikan ketika ia mendatar atau mulai meningkat, meskipun error pelatihan terus menurun. Ini menangkap titik ketika model telah mempelajari pola sebenarnya dan mulai menyesuaikan noise. Sebagian besar framework deep learning memiliki callback early stopping bawaan.

