ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Дерево решений: разбиения, глубина и интерпретация

Автор: · Обновлено

Дерево решений строит последовательность вопросов о признаках и приходит к прогнозу в листе. Такой алгоритм умеет описывать пороги и взаимодействия без ручного создания формул,…

Дерево решений строит последовательность вопросов о признаках и приходит к прогнозу в листе. Такой алгоритм умеет описывать пороги и взаимодействия без ручного создания формул, но глубокое дерево легко запоминает обучающие примеры и теряет устойчивость.

Как появляется узел

На каждом шаге алгоритм перебирает возможные признаки и пороги, например age <= 25.5. Он выбирает разбиение, после которого дочерние группы становятся более однородными по целевому ответу. Для классификации часто используют impurity по Gini или энтропии, для регрессии — уменьшение квадратной ошибки.

Выбор жадный: дерево находит хороший следующий шаг, но не перебирает все возможные конструкции целиком. Поэтому небольшое изменение данных способно поменять верхний узел и последующие ветви.

Первое дерево в scikit-learn

from sklearn.datasets import load_wine
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_text

X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.25, random_state=42, stratify=y
)

tree = DecisionTreeClassifier(
    max_depth=3,
    min_samples_leaf=5,
    random_state=42,
)
tree.fit(X_train, y_train)

print('accuracy:', accuracy_score(y_test, tree.predict(X_test)))
print(export_text(tree, max_depth=2))

Дереву не требуется стандартизация числовых признаков: порядок значений и пороги не меняются от линейного масштабирования. Пропуски и категории всё равно требуют обработки в соответствии с возможностями конкретной реализации.

Почему дерево переобучается

Без ограничений дерево может продолжать делить выборку, пока листья не станут почти уникальными. Train-ошибка уменьшается, но вопросы начинают описывать шум: редкое значение, случайную комбинацию или единичный выброс.

Основные регуляторы сложности:

Значения подбирают кросс-валидацией. Нельзя выбирать глубину по финальному test и затем сообщать эту же метрику как независимую.

Интерпретация пути

Для одного объекта можно проследить признаки и пороги от корня до листа. Это точное описание вычисления конкретного дерева, но не полное объяснение мира. Соседнее дерево, обученное на другой выборке, может принять тот же прогноз по иному пути.

Встроенная feature_importances_ суммирует уменьшение impurity и способна предпочитать признаки с большим числом возможных разбиений. Для проверки общей зависимости полезно сравнить её с permutation importance на независимой выборке.

Практика: найдите границу переобучения

Обучите деревья с глубиной от 1 до 15 и сохраните accuracy на train и validation. Постройте таблицу или график двух кривых. Найдите первую глубину, после которой обучение продолжает улучшаться, а проверка перестаёт расти. Измените min_samples_leaf и сравните устойчивость.

Что важно запомнить

Частые вопросы

Почему порог может заканчиваться на .5?

Алгоритм размещает границу между соседними наблюдаемыми значениями. Если целочисленные значения равны 25 и 26, удобный разделяющий порог находится посередине, хотя исходный признак остаётся целым.

Можно ли считать правила дерева бизнес-правилами?

Только после предметной проверки. Ветви описывают закономерности конкретных данных и могут опираться на смещения или прокси-признаки. Они не заменяют нормативные условия и причинный анализ.

Почему одинаковый random_state не всегда даёт одинаковое дерево?

Фиксированный integer seed обеспечивает повторяемость одного дерева при неизменных данных, их порядке, параметрах и версии библиотеки. Если любой из этих входов изменился, дерево тоже может измениться. Параллельные численные эффекты относятся к некоторым ансамблям и другим алгоритмам, а не к этому одиночному дереву.

Источники