Введение в ML: Ансамбли. Random Forest
Цель: На практике убедиться в превосходстве ансамблей над одиночными моделями. Мы сравним неустойчивое Дерево Решений с мощным Случайным Лесом, научимся использовать OOB Score для валидации без отложенной выборки и визуализируем важность признаков для картинок.
Инструменты:
sklearn.ensemble: RandomForestClassifier.sklearn.tree: DecisionTreeClassifier.sklearn.datasets: load_digits (Рукописные цифры).
Данные: Digits Dataset. Это набор изображений 8x8 пикселей (всего 64 признака), где каждая картинка — это рукописная цифра от 0 до 9.
Часть 1: Одиночное Дерево vs Случайный Лес
Деревья склонны к переобучению (высокая дисперсия). Лес усредняет множество деревьев, снижая дисперсию.
Задание 1.1:
- Загрузите датасет
load_digits. - Разделите на Train/Test (75/25,
random_state=42).
Важное правило
Масштабирование (StandardScaler) для деревьев и леса не требуется.
Часть 2: Out-of-Bag (OOB) Score
При бутстрэпе (создании подвыборок для каждого дерева) часть данных (~37%) не попадает в обучение. Лес может использовать их как валидационную выборку. Это позволяет оценить качество модели прямо в процессе обучения.
Задание 2.1: Включаем OOB
- Создайте Random Forest с параметром
oob_score=True. - Обучите его на X_train.
- Сравните атрибут
oob_score_с реальным скором наX_test. Они должны быть близки.
Преимущество OOB Score
Вывод: OOB Score дает отличную оценку обобщающей способности без выделения отдельной валидационной выборки.
Часть 3: Важность признаков (Feature Importance)
У нас 64 признака (пикселя). Какие из них важны для распознавания цифры?
В Random Forest мы можем посмотреть на feature_importances_. Так как признаки — это пиксели картинки 8x8, мы можем нарисовать важность как тепловую карту.
Задание 3.1: Визуализация важности пикселей
- Извлеките массив важностей из обученной модели
forest. - Измените его форму (
reshape) обратно в 8x8. - Постройте
sns.heatmap.
Пища для размышлений
Почему края картинки (черные/темные области) имеют почти нулевую важность? А где находится центр принятия решений?
Часть 4: Влияние количества деревьев
Работает ли правило "Больше — лучше"?
Задание 4.1: Кривая обучения
Проверьте, как меняется качество при увеличении числа деревьев от 10 до 200.
Инженерный вывод
Обычно график быстро растет и выходит на плато. Ставить 1000 деревьев редко имеет смысл — качество не вырастет, а время расчета увеличится.