Градиентный бустинг
Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 43 из 58.
Лес выращивает деревья бок о бок. Градиентный бустинг выращивает их одно за другим: каждое новое дерево учится на том, в чём деревья до него всё ещё ошибаются.
Здесь он подбирает модель для продаж в баре смузи, дерево за деревом:
Для задач классификации используется модель GradientBoostingClassifier:
from sklearn.ensemble import GradientBoostingClassifier
boost = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=0)
boost.fit(X_train, y_train)learning_rate задаёт, какую долю каждого исправления сохранять. Маленькие шаги осторожны, поэтому для них нужно больше деревьев.
Задание
СреднеВыращиватель орхидей хочет знать, какие растения зацветут. Стартовый код разделяет данные из orchids.csv, оценивает лес и считывает количество деревьев.
- Для каждого значения из
ratesобучи модель бустинга с таким количеством деревьев (random_state=0) и выведи точность на тестовых данных. - Выведи лучшее значение. При равенстве оставь более раннее.
Для другого выращивателя и значения 20:
Forest: 0.860
Boosting at rate 0.01: 0.600
Boosting at rate 0.1: 0.860
Boosting at rate 1.0: 0.900
Best rate for 20 trees: 1.0Затем попробуй несколько значений количества деревьев: при каком из них бустинг превосходит лес?
Попробуйте сами
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
# Орхидеи на полках цветовода: цвели в этом году (1) или нет (0)
orchids = pd.read_csv("orchids.csv")
X = orchids.drop(columns="bloomed")
y = orchids["bloomed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())
rates = [0.01, 0.1, 1.0]
# Не меняйте строки ниже: это случайный лес для сравнения
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
print(f"Forest: {forest.score(X_test, y_test):.3f}")
# Напишите свой код ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Обучение с учителем
1Ваша первая модель
Обучение на примерахОбучающая и тестовая выборкиОбучение и предсказаниеОценка моделиПовторение: сортировщик семян4Логистическая регрессия
Предсказания «да» или «нет»Порог принятия решенияВеса как свидетельстваНесколько классовПовторение: спам-фильтр2Метод ближайших соседей
Как работает k-NNВыбор kГраницы принятия решенийМасштабирование признаков для поиска соседейПовторение: соседи для вин5Оценка классификаторов
Матрица ошибокТочность и полнотаF1-мераНесбалансированные классыROC-кривыеПовторение: скрининговый тест8Кросс-валидация
K-блочная проверкаСправедливое сравнение моделейПоиск по сеткеПовторение: ремонт скейтбордов11Проект: виды пингвинов
Знакомство с пингвинамиПодготовка данныхВыбор моделиНастройка лучшей моделиЗапуск моделиПотренируйтесь самостоятельно: Онлайн-компилятор Python