CodeBlanks Logo Icon CodeBlanks

Derinlik

Ağacın derinliği (max_depth) aşırı öğrenmeyi önler.

max_depth

Sınırsız bir ağaç, her yaprakta tek bir sınıf kalana kadar bölmeyi sürdürür ve eğitim verisini ezberler. max_depth soru zincirinin en fazla kaç adım olacağını belirler:

for d in [1, 2, 3, None]:
    m = DecisionTreeClassifier(max_depth=d, random_state=0).fit(X_train, y_train)
    print(d, m.score(X_train, y_train), m.score(X_test, y_test))

Sığ ağaçlar daha genel, derin ağaçlar daha ayrıntılı kurallar öğrenir.

Diğer sınırlar

Derinliğin yanında başka durdurma kuralları da vardır:

DecisionTreeClassifier(
    max_depth=4,
    min_samples_split=10,   # bölmek için en az 10 örnek
    min_samples_leaf=5,     # her yaprakta en az 5 örnek
    max_leaf_nodes=12,      # en fazla 12 yaprak
)

min_samples_leaf, tek bir aykırı örnek için ayrı bir yaprak açılmasını engellediği için özellikle etkilidir.

Uygulama Derinliği dene

Iris üzerinde max_depth 1, 2 ve 3 için DecisionTreeClassifier(random_state=0) eğit. Her satırda derinliği ve test doğruluğunu round(..., 3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0, stratify=y)

for d in [1, 2, 3]:
    m = DecisionTreeClassifier(max_depth=d, random_state=0).fit(X_train, y_train)
    print(d, round(m.score(X_test, y_test), 3))

Beklenen çıktı

1 0.667
2 0.956
3 0.956

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>max_depth=None</code> ne demektir?

  • Derinlik sınırı yoktur Doğru cevap
  • Derinlik 0'dır
  • Ağaç kurulmaz
  • Derinlik 1'dir

Açıklama: Varsayılan None'dır; ağaç yapraklar saf olana kadar büyür.

2 Ağacı en fazla 3 seviyeyle sınırla.

Soru
m = DecisionTreeClassifier(____=3)
Cevap
m = DecisionTreeClassifier(max_depth=3)

Açıklama: max_depth kökten yaprağa en uzun yolun uzunluğudur.

3 Parametreleri eşleştir.

Kavram Anlamı
max_depth En fazla derinlik
min_samples_split Bölme için en az örnek
min_samples_leaf Yaprakta en az örnek
max_leaf_nodes En fazla yaprak

Başlangıç bölümündeki tüm dersler