Ответ
Увеличение глубины дерева напрямую повышает дисперсию (variance) модели и снижает ее смещение (bias). Глубокое дерево может идеально подогнаться под обучающие данные, включая их шум и случайные флуктуации. Это приводит к переобучению: высокая точность на тренировочном наборе, но плохая способность обобщать на новые, невидимые данные.
Практическая демонстрация на синтетических данных:
import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split
# Генерируем данные с шумом
np.random.seed(42)
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel() + np.random.normal(0, 0.1, X.shape[0])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# Модель с высокой дисперсией (глубокое дерево)
deep_tree = DecisionTreeRegressor(max_depth=10)
deep_tree.fit(X_train, y_train)
train_score_deep = deep_tree.score(X_train, y_train) # Будет близко к 1.0
test_score_deep = deep_tree.score(X_test, y_test) # Существенно ниже
# Модель с низкой дисперсией (мелкое дерево)
shallow_tree = DecisionTreeRegressor(max_depth=3)
shallow_tree.fit(X_train, y_train)
train_score_shallow = shallow_tree.score(X_train, y_train) # Ниже, чем у deep_tree
test_score_shallow = shallow_tree.score(X_test, y_test) # Выше, чем у deep_tree
Вывод: Слишком большая глубина увеличивает сложность модели и дисперсию. Оптимальную глубину находят через кросс-валидацию, балансируя смещение и дисперсию.