Overfitting

**Overfitting** adalah suatu keadaan di mana data yang digunakan untuk pelatihan itu adalah yang "terbaik". Sehingga apabila dilakukan tes dengan menggunakan data yang berbeda dapat mengurangi akurasi (hasil yang dibuat tidak sesuai yang diharapkan). Overfitting dapat terjadi ketika beberapa batasan didasarkan pada sifat khusus yang tidak membuat perbedaan pada data. Selain itu duplikasi data minor yang berlebihan juga dapat mengakibatkan terjadinya overfitting.

**Underfitting** adalah keadaan di mana model pelatihan data yang dibuat tidak mewakilkan keseluruhan data yang akan digunakan nantinya. Sehingga menghasilkan performa yang buruk dalam pelatihan data. Underfitting terjadi karena model masih mempelajari struktur dari data. Hasilnya, *tree* bekerja dengan buruk pada masa pelatihan dan tes. Sebagaimana banyaknya node dalam pohon keputusan meningkat, *tree* memiliki galat pelatihan dan tes yang lebih kecil. Pada saat *tree* berukuran sangat besar, tingkat terjadinya galat tes mulai meningkat walaupun tingkat galat pelatihannya terus menurun.

## Cara Mendeteksi Overfitting
Terdapat beberapa metode yang bisa dilakukan untuk mendeteksi Overfitting yang terjadi terutama dalam Machine Learning (ML), antara lain:

### 1. Hold-out Validation
Metode ini memerlukan proses pemisahan data menjadi dua bagian, yaitu set data pelatihan dan set data pengujian. Model akan dilatih melalui set data pelatihan dan dievaluasi melalui set pengujian. Perbedaan hasil dari dua set ini yang kemudian disebut dengan 'overfitting'.

### 2. Cross-Validation
Disebut juga dengan Validasi Silang K-Fold, metode ini dianggap sebagai metode yang paling tepat dan akurat untuk mendeteksi Overfitting. Proses dimulai dengan pembagian data menjadi beberapa subset dan dilatih lebih dari satu kali.

Subset yang digunakan dalam proses validasi adalah subset yang berbeda. Misal data dibagi menjadi tiga set, maka model harus dilatih sebanyak tiga kali. Jika model yang dilatih menghasilkan kinerja yang baik namun memburuk pada lipatan validasi, itu lah yang disebut dengan 'overfitting'.

### 3. Learning Curves
Metode ini memanfaatkan kurva pembelajaran di mana melibatkan perbandingan antara kesalahan pelatihan dan kesalahan validasi. Bila kesalahan pelatihan yang terjadi lebih rendah dari kesalahan validasi, ditemukan adanya 'overfitting'. Sementara itu, bila tidak terjadi 'overfitting', kesalahan pelatihan dan validasi akan tetap berkonvergensi meski ukuran set pelatihan bertambah.

## Cara Menghindari Overfitting-Underfitting
Ada dua pendekatan yang bisa dilakukan untuk menghindari  Overfitting maupun Underfitting, antara lain:

### 1. Prepruning
Pendekatan *prepruning* dilakukan dengan menghentikan pembuatan *tree* di awal. Pengguna tidak diperbolehkan melakukan pemisahan node jika *goodness measure* dibawah *threshold*, meski dapat menyebabkan sulitnya menentukan threshold.

### 2. Postpruning
Berbeda dari *prepruning, postpruning* membutuhkan pengguna untuk membuang cabang setelah *tree* selesai dibuat. Pendekatan ini dilakukan dengan menggunakan data yang berbeda pada pelatihan untuk menentukan *pruned tree* yang terbaik.

## Cara Mengatasi Overfitting-Underfitting
Bila Overfitting dan Underfitting telah terjadi, ada beberapa cara yang bisa dilakukan, antara lain:
* Gunakan teknik sampel ulang untuk memperkirakan akurasi model. Di mana nantinya akan melakukan validasi beberapa kali dengan perbandingan data yang berbeda sampai menemukan akurasi yang cukup optimal.
* Cek kembali validitas dari set data.

## Bacaan lanjutan

* 
## Pranala luar
* Overfitting: when accuracy measure goes wrong - an introductory video tutorial.
* The Problem of Overfitting Data
* CSE546: Linear Regression Bias / Variance Tradeoff