Рубрики
Без рубрики

Усиление градиента с использованием Python Xgboost

Что такое градиентное усиление? Экстремальная градиентное усиление, свет GBM, Catboost

Автор оригинала: Pankaj Kumar.

Усиление градиента с использованием Python Xgboost

Я присоединился к многим конкурсам Kaggle в прошлом, и в течение последних 3-4 лет все лучшие выигрышные представления используют некоторую форму укрепления градиента. Поэтому мы будем внимательно посмотреть на это внимательно сегодня.

Что такое градиентное усиление?

Ансамбль обучения : Для получения улучшенной эффективности прогнозирования, чем можно извлечь из любого из любых составляющих алгоритмов обучения, подходы ансамбля используют несколько алгоритмов обучения.

Очень распространено, что в отдельной модели есть смещения или отклонения, поэтому нам нужно изучить ансамбль обучения.

Мешок и Усиление являются двумя наиболее распространенными методами ансамблей.

  • Мешок : Параллельное обучение с большим количеством моделей. Каждая модель обучается случайным подмножеством данных.
  • Усиление : Последовательно преподавание многих дополнительных моделей. Из ошибок, сделанных предыдущей моделью, каждая конкретная модель учится.

Пока вы уже узнали мешок Методы ранее (как Случайное лес ), давайте посмотрим, что такое повышение.

Категория Алгоритмы обучения машины которые объединяют несколько слабых учебных моделей, чтобы произвести сильную прогнозную модель, называемую Усиление градиента Отказ

При выполнении градиентного усиления деревьев решения обычно используются. Из-за их эффективности в классификации сложных наборов данных модели усиления градиента становятся обычными, и недавно использовались для победы нескольких соревнований в Kaggle Наука данных!

Scikit – Учите , Библиотека учебной машины Python поддерживает различные реализации классификатора градиента, в том числе XGBOOST, усиление градиента света, Catboosting и т. Д.

Что такое xgboost?

XGBOOST является ведущей моделью для работы со стандартными табличными данными (в отличие от более экзотических типов данных, таких как изображения и видео, тип данных, которые вы храните в PandaS DataFrames). Многие конкурсы Kaggle доминируют модели XGBOOST.

Модели XGBOOST требуют большему количеству экспертизы и моделей настройки для достижения оптимальной точности, чем стратегии, такие как случайный лес.

И это супер легко.

Реализация градиентного усиления на DataSet цен на дом

Я использую очень популярный набор данных из Kaggle.com называется DataSet Price Price Price (HPP) Отказ

С 79 пояснительными переменными, описывающими (почти) каждый аспект жилых домов в AMES, IOWA, этот конкурс бросает вызов вам предсказать окончательную цену каждого дома.

Давайте начнем!

1. Импорт необходимых пакетов

Давайте импортируем наши важные пакеты:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from xgboost import XGBRegressor

Помощник используется для «вмешательства» (замена) значения NAN в набор данных с средним, режимом или любым другим способом выбора.

2. Настройка данных

Давайте импомнем в наши учебные данные:

data_train = pd.read_csv('train.csv')
data_train.dropna(axis=0, subset=['SalePrice'], inplace=True)
data_train.head(1)

Мы бросаем эти ряды, которые имеют нан в Saleprice Потому что это наша самая важная мера.

Дом набора данных Прогноз цен с градиентным усилением

Мы назначаем SalePrice как на этикетки (I.E., формат):

y = data_train.SalePrice
X = data_train.drop(['SalePrice'], axis=1).select_dtypes(exclude=['object'])

Мы разделяем данные в поезд и тестируемые данные в соотношении 3: 1, используя функцию rain_test_split Sklearn:

train_X, test_X, train_y, test_y = train_test_split(X.values, y.values, test_size=0.25)
Прогноз цен на поезд

Давайте вмешиваться NAN значения в набор данных:

my_imputer = SimpleImputer()
train_X = my_imputer.fit_transform(train_X)
test_X = my_imputer.transform(test_X)

И мы закончили с предварительной обработкой на данный момент. Мы могли бы очевидно настроить каждый столбец набора данных, найти выбросы, регулярно и т. Д. Но это ваша домашняя работа!

3. Создание модели

Давайте создадим нашу модель:

my_model = XGBRegressor()

my_model.fit(train_X, train_y, verbose=True)

Как вы можете видеть на своем выходе, это все параметры, которые мы можем указать, чтобы настроить нашу модель:

XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1, gamma=0, importance_type='gain', learning_rate=0.1, max_delta_step=0, max_depth=3, min_child_weight=1, missing=None, n_estimators=100, n_jobs=1, nthread=None, objective='reg:linear', random_state=0, reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None, silent=None, subsample=1, verbosity=1)

Мы можем сделать наши прогнозы сейчас:

predictions = my_model.predict(test_X)
predictions

И это дает нам:

Предсказанные результаты цен на дом в Айове Кагл

Мы также можем найти нашу ошибку регрессии, которая выходит на нас ~ 17000.

from sklearn.metrics import mean_absolute_error
print("Mean Absolute Error : " + str(mean_absolute_error(predictions, test_y)))

Полная реализация кода для усиления градиента

Если вы пропустили на любой шаг, вы найдете полный код здесь вместе с набором данных:

https://github.com/arkaprabha-majumdar/house-price-prediction

Другие формы – свет GBM и Catboost

Использование Exacctly так же, как XGB:

from lightgbm import LGBMRegressor
my_model = LGBMRegressor()
my_model.fit(train_X, train_y, verbose=True)

а также

from catboost import CatBoostRegressor
my_model = CatBoostRegressor()
my_model.fit(train_X, train_y, verbose=True)

Процесс одинаково.

Lightgbm : Light GBM, основанный на алгоритме дерева решений, является быстрой, распределенной, высокопроизводительной системой усиления градиента, используемой для ранжирования, классификации и многих других задач в машинном обучении.

Он разделяет лист дерева для лучшего матча, в то время как другие алгоритмы усиления нарушают глубину дерева или мудрым, а не листья.

Следовательно, листовой алгоритм может минимизировать больше потерь, чем уровень-мудрый алгоритм, при увеличении на одном листе в светлом GBM, что приводит к гораздо более высокой точности, который может редко быть достигнут любым из текущих алгоритмов усиления.

Это также удивительно очень быстро. Существует значительная разница в выполнении времени для процедуры обучения LightGBM, поэтому в настоящее время он более предпочтительнее как « Quick Fix »

Catboost : В качестве лучшего усиления градиентного усиления Catboost реализует упорядоченное усиление, но самое большое прогресс в Catboost – это то, как он занимается категорической информацией. Поскольку ему необходимо обеспечить числовую кодировку, категорические данные представляют многие проблемы.

CatBoost использует целевой вариант кодирования, который определяет целевую кодировку с имеющейся историей и случайную перестановку для кодирования наших категорических данных и обработать его. Вместо того, чтобы использовать среднее, Catboost использует доступный контекст, поскольку модель работает в режиме реального времени, не знает истинного среднего для его цели.

Существует несколько тестов, которые люди сделали для всех вышеуказанных алгоритмов. Пройти через них:

https://www.kaggle.com/nholloway/catboost-v-xgboost-v-lightgbm

Тем не менее, это общее повествование, что Catboost медленно и не очень эффективен. Попробуйте выполнить свои собственные тесты по тестам, и дайте нам знать в комментариях, которые вы предпочитаете.

Заключение

Усиление градиента – это мощный механизм классификации и регрессии данных и может ускорить ваш путь к изучению новых Алгоритмы обучения машины Отказ