Materi
Model overfitting menghafal data latih, termasuk kebetulan dan galatnya, sehingga skor latihnya tinggi tetapi skor ujinya jauh lebih rendah. Model underfitting terlalu sederhana untuk polanya, sehingga skor latih dan skor ujinya sama-sama rendah. Contoh resmi scikit-learn "Underfitting vs. Overfitting" menunjukkannya dengan polinomial: derajat 1 tidak cukup mengikuti kurva, derajat 15 mengikuti setiap titik latih dan meleset jauh di antara titik.
Pada pohon keputusan, pengaturnya max_depth. Tanpa batas, pohon bercabang sampai setiap daun murni, dan skor latihnya 1,0. Halaman Validation curves di User Guide menjelaskan cara membacanya: bandingkan skor latih dan skor validasi untuk beberapa nilai pengatur, lalu pilih nilai tempat skor validasi tertinggi.
# pola membaca skor latih vs skor uji
for kedalaman in [1, 3, None]:
m = DecisionTreeClassifier(max_depth=kedalaman, random_state=0)
m.fit(X_latih, y_latih)
print(kedalaman, m.score(X_latih, y_latih), m.score(X_uji, y_uji))Kedalaman terbaik dipilih dari skor data yang tidak dipakai untuk fit. Memilihnya berulang kali dari data uji yang sama pelan-pelan membuat data uji ikut "dihafal"; pelajaran berikutnya memakai validasi silang untuk itu.