Переобучение — это когда дерево слишком хорошо запоминает обучающие данные и плохо работает на новых.
Признаки переобученного дерева:
- Очень глубокое (много уровней)
- Много листьев с одним примером
- 100% точность на обучении, но плохо на тесте
Методы борьбы:
1. Ограничение глубины (max_depth)
if depth >= self.max_depth:
return create_leaf()
2. Минимум примеров для разделения (min_samples_split)
if len(samples) < min_samples_split:
return create_leaf()
3. Минимум примеров в листе (min_samples_leaf)
if len(left_samples) < min_samples_leaf or
len(right_samples) < min_samples_leaf:
return create_leaf()
4. Минимальная информационная выгода
if information_gain < min_gain:
return create_leaf()