Derinlik
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 55/112
- 5 dk
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
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
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.
m = DecisionTreeClassifier(____=3)
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 |