Как работает дерево решений
Что проверяют
Понимаете ли вы, что дерево это жадный рекурсивный перебор порогов по критерию чистоты, и знаете ли его границы: переобучение, неустойчивость, отсутствие экстраполяции.
Как отвечать
- Построение: в каждом узле перебираются признаки и пороги, выбирается разбиение с максимальным приростом чистоты, затем рекурсия по потомкам до критериев остановки (
max_depth,min_samples_leaf, нулевой прирост). - Критерии: для классификации Джини или энтропия, они дают близкие деревья; для регрессии уменьшение дисперсии (MSE) или MAE. В листе предсказывается доля классов или среднее значение.
- Борьба с переобучением: ограничения глубины и размера листа плюс постобрезка по сложности (
ccp_alphaв scikit-learn) с подбором параметра по валидации. - Масштабирование не нужно: монотонное преобразование признака дерево не замечает. Выбросы по признакам почти не мешают, выбросы целевой переменной в регрессии мешают.
- Категориальные признаки в scikit-learn напрямую не поддерживаются, нужно кодирование. One-hot дробит выборку и ухудшает деревья, лучше ordinal или target encoding. Нативно категории умеют LightGBM, CatBoost и
HistGradientBoosting. - Пропуски:
DecisionTreeClassifierобрабатывает NaN с версии 1.3, отправляя их в ту ветку, где выше прирост; бустинги делают то же через выученное направление по умолчанию. - Одно дерево неустойчиво: смена нескольких объектов меняет структуру. Отсюда ансамбли: бэггинг и случайный лес гасят дисперсию, бустинг последовательно уменьшает смещение.
Где спотыкаются
Говорят, что дерево работает с категориями из коробки. Это зависит от библиотеки, в scikit-learn такой поддержки нет.
Называют встроенную важность признаков объективной мерой. Она смещена в пользу признаков с большим числом уникальных значений, честнее permutation importance или SHAP.
Ждут от регрессионного дерева экстраполяции. За пределами обучающей выборки оно отдаёт константу листа, тренд не продолжается.
Считают, что глубокое дерево просто точнее. Без обрезки оно доводит ошибку на обучении до нуля, запоминая шум.