Лекция 10: Деревья решений (Decision Trees). Математика выбора
Цели лекции
- Понять принцип “Жадного алгоритма” (Greedy Algorithm): как машина строит дерево вопросов.
- Разобрать метрики неопределенности: Gini Impurity и Entropy.
- Осознать главную проблему деревьев — Переобучение (Overfitting).
- Научиться “стричь” деревья (Pruning) с помощью гиперпараметров.
Часть 1: Логика Дерева. Игра “20 вопросов”
Дерево решений — это модель White Box (Белый ящик). В отличие от нейросетей, где внутри “магия матриц”, здесь мы всегда можем проследить путь решения.
1.1. Аналогия
Представьте игру “Акинатор” или “20 вопросов”. Вы загадали животное.
- Вопрос 1: “Оно живет в воде?” -> Нет. (Мы отсекли рыб).
- Вопрос 2: “Оно лает?” -> Да. (Мы отсекли кошек).
- Ответ: Собака.
В терминах машинного обучения структура выглядит так:
- Root Node (Корень): Вся выборка. Первый вопрос.
- Internal Node (Узел): Условие проверки (например,
Возраст < 18). - Leaf Node (Лист): Конечный вердикт (Класс или Число).
1.2. Пространство признаков
Геометрически дерево нарезает пространство на прямоугольные области. Если линейная регрессия проводит одну диагональную линию, то дерево проводит множество линий, параллельных осям (ортогональных).
Огромный плюс деревьев
Поскольку дерево просто ищет пороги по осям (например, ), ему абсолютно плевать на масштаб данных. Использование StandardScaler перед обучением деревьев не требуется.
Часть 2: Критерии разбиения. Gini vs Entropy
Как компьютер понимает, какой вопрос задать первым? Спросить про “Возраст” или про “Доход”? Он использует Жадный алгоритм: перебирает все возможные вопросы и ищет тот, который лучше всего уменьшает Хаос.
2.1. Понятие “Чистоты” (Purity)
Наша цель — чтобы в каждом листе оказались объекты только одного класса.
- Идеальный лист: 100 “Больных”, 0 “Здоровых”. (Чистота максимума).
- Плохой лист: 50 “Больных”, 50 “Здоровых”. (Максимальный Хаос).
2.2. Метрики хаоса
Практический совет
На практике Gini и Entropy дают почти одинаковые результаты в 98% случаев. Не тратьте время на долгий выбор между ними, используйте Gini по умолчанию.
2.3. Information Gain (Прирост информации)
Чтобы выбрать лучший вопрос, алгоритм считает, насколько снизится “грязь” после разбиения:
Вопрос, который дает максимальный Gain, становится новым узлом дерева.
Часть 3: Проклятие Деревьев — Переобучение
Если не остановить дерево, оно будет задавать вопросы до тех пор, пока в каждом листе не останется по 1 человеку.
Пример правила: “Если Возраст=25 И Доход=50к И Имя=‘Ivan’ -> Вернуть кредит”.
Overfitting (Переобучение)
Это классический пример Overfitting. Дерево выучило шум и конкретных людей в обучающей выборке, а не глобальные закономерности. На тестовых данных оно с треском провалится.
Симптомы переобучения:
- Accuracy на Train = 100%.
- Accuracy на Test = 70%.
- Дерево выглядит как гигантский куст с глубиной в 50 уровней.
Часть 4: Регуляризация (Стрижка дерева)
В библиотеке sklearn.tree.DecisionTreeClassifier есть встроенные “тормоза” (гиперпараметры), которые не дают дереву расти бесконечно. Этот процесс называется Pruning (стрижка).
4.1. Ключевые параметры контроля
max_depth(Максимальная глубина): Самый важный параметр. Запрещаем дереву расти глубже, чем на заданное количество уровней (например, 3-5-10).min_samples_leaf(Мин. объектов в листе):- Правило: “Лист не может быть создан, если в него попадает меньше 5 человек”. Это жестко запрещает создавать персонализированные правила под “одиночек” (выбросы).
min_samples_split:- Правило: “Если в узле меньше 20 человек, прекращаем делить, принимаем решение большинством”.
Часть 5: Визуализация
Главное преимущество дерева — его можно нарисовать и показать бизнесу.
В sklearn есть функция plot_tree.
В каждом узле полученной блок-схемы вы увидите:
- Условие разделения (например,
Petal Width <= 0.8). gini(текущий уровень хаоса в этом узле).samples(сколько объектов из выборки дошло до этого шага).value(расклад количества объектов по целевым классам).