### 5.8 Overfitting dan Underfitting

Tujuan _machine learning_ adalah membuat model yang mampu memprediksi
_data_  yang belum pernah dilihat ( _unseen instances_ ) dengan tepat; disebut sebagai
generalisasi ( _generalization_ ). Seperti yang sudah dijelaskan pada bab
pertama, kita dapat membagi dataset menjadi _training_, _validation_, dan _testing_ _dataset_.
Ketiga dataset ini berasal dari populasi yang sama dan dihasilkan
oleh distribusi yang sama ( _identically and independently distributed_ ). Dalam
artian, ketiga jenis dataset mampu melambangkan (merepresentasikan) karakteristik
yang sama.^7 Dengan demikian, kita ingin _loss_ atau _error_ pada _training_, _validation_,
dan _testing_ bernilai kurang lebih bernilai sama (i.e., kinerja
yang sama untuk data dengan karakteristik yang sama). Akan tetapi, _underfitting_ dan _overfitting_ mungkin
terjadi.
_Underfitting_ adalah keadaan ketika kinerja model bernilai buruk baik pada
_training_  atau _validation_ maupun testing data. _Overfitting_ adalah keadaan
ketika kinerja model bernilai baik untuk _training_ tetapi buruk pada unseen
_data_. Hal ini diilustrasikan pada Gambar 5.13. _Underfitting_ terjadi akibat
_model_  yang terlalu tidak fleksibel, yaitu memiliki kemampuan yang rendah
untuk mengestimasi variasi fungsi. Sedangkan, _overfitting_ terjadi ketika

(^7) Baca teknik _sampling_ pada buku statistika.
(^8) Rekonstruksi https://www.inf.ed.ac.uk/teaching/courses/iaml/slides/
eval-2x2.pdf


```
5.8 Overfitting dan Underfitting 77
```
```
Gambar 5.13: _Underfitting_ vs _Overfitting_.^8
```
_model_  terlalu fleksibel, yaitu memiliki kemampuan yang terlalu tinggi untuk
mengestimasi banyak fungsi atau terlalu mencocokkan diri terhadap _training_ data.
Perhatikan kembali Gambar 5.13, dataset asli diambil ( _sampled_ )
dari fungsi polinomial orde-3. Model _underfitting_ hanya mampu mengestimasi
dalam orde-1 (kemampuan terlalu rendah), sedangkan model _overfitting_
mampu mengestimasi sampai orde-9 (kemampuan terlalu tinggi).
Apabila kita gambarkan grafik kinerja terhadap konfigurasi model ( _model_
order), fenomena underfitting dan overfitting dapat diilustrasikan seperti
Gambar 5.14. Model yang ideal adalah model yang memiliki kinerja yang baik
pada _training_, _validation_, dan _testing_ data. Artinya, kita ingin perbedaan kinerja
_model_  pada berbagai dataset bernilai sekecil mungkin. Untuk menghindari _overfitting_ atau _underfitting_,
kita dapat menambahkan fungsi _noise/bias_
(selanjutnya disebut _noise/bias_ saja) dan regularisasi (subbab 5.9). Hal yang
paling perlu pembaca pahami adalah untuk jangan merasa senang ketika
_model_  _machine learning_ yang kamu buat memiliki kinerja baik pada _training_
_data_. Kamu harus mengecek pada _validation_ dan _testing_ data, serta memastikan
kesamaan karakteristik data, e.g., apakah _training_ dan _testing_ data benar
diambil dari distribusi yang sama. Selain itu, kamu juga harus memastikan
apakah data yang digunakan mampu merepresentasikan kompleksitas pada
permasalahan asli/dunia nyata. Sering kali, dataset yang digunakan pada
banyak eksperimen adalah _toy dataset_, semacam simplifikasi permasalahan
dengan banyak sampel yang relatif sedikit. Kamu harus hati-hati terhadap


78 5 Model Linear

```
_Error_ 
```
```
Model order
```
```
_Training_  Error
```
```
Generalization (Testing) Error
```
```
_Underfitting_ Area Overfitting Area
```
```
Optimal Performance (Optimal Model)
```
```
Gambar 5.14:Selection Error.
```
_overclaiming_, i.e., menjustifikasi model dengan performa baik pada _toy dataset_
sebagai model yang baik secara umum.

