Невероятная игра деревьев!!!!!
Начнем с полной формы, XG означает расширенную версию повышения градиента. Как следует из названия, это метод бустинга, т.е. модели или деревья последовательно соединяются друг с другом в этом алгоритме, поэтому он попадает под ансамбль. Здесь алгоритм работает только с остатками и пытается минимизировать их, что, в свою очередь, уменьшает потери и повышает точность, но по мере того, как невязки уменьшаются, модель может переобучать, но у нас есть методы, чтобы справиться с этим, давайте начнем с входных данных. глубинная интуиция этого алгоритма наряду с практическим подходом.
Как другие алгоритмы берут независимые функции и пытаются предсказать зависимые, то же самое и для Xgboost, но он не берет фактическую зависимую функцию, вместо этого создает свою собственную функцию, разве это не удивительно?
Давайте проверим, как это работает с помощью этой таблицы.
Итак, это простой пример прогнозирования уровня IQ с помощью возраста, но колонка "Новая функция (прогноз)" — это та, которую Xg-boost создал, взяв среднее значение всех IQ представлен в таблице. Как уже упоминалось, он возьмет новый столбец и обучит себя, но это не основной столбец/функция. Давайте посмотрим на это
Это новая и последняя функция, с которой начинается обучение в Xg-boost. Теперь он попытается предсказать остатки с помощью деревьев решений.
Как мы знаем критерии разбиения в деревьях решений, с помощью получения информации. Таким образом, корневой узел будет разделен, если он показывает максимальный прирост информации, и это дерево будет базовым учащимся или слабым учащимся и будет предсказывать новые значения остатков, которые при добавлении к предыдущей «Новая функция (предсказанная )”выдаст новые значения IQ, теперь снова идут те же процедуры и Xg-boost учится на ошибках этого базового учащегося и будет предсказывать новые значения и так далее до тех пор, пока потери или остатки не станут минимальными , и у нас есть наш сильный ученик в конце. Преимущество этого подхода заключается в том, что новые учащиеся добавляются к модели, изучая и исправляя ошибки предыдущих учеников.
Давайте рассмотрим практический пример на Python
- !pip установить xgboost
- Импортировать xgboost как xgb
Разделение и подгонка данных
- из sklearn.model_selection импорт train_test_split
- X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0,2)
Нам нужно изменить формат, который может обрабатывать Xg-boost
- D_train = xgb.DMatrix (X_train, метка = Y_train)
- D_test = xgb.DMatrix (X_test, метка = Y_test)
мы можем определить параметры нашего ансамбля усиления градиента
- параметр = {
- «эта»: 0,3,
- «макс_глубина»: 3,
- «объективный»: «мульти: softprob»,
- ‘num_class’: 3}
steps = 10 # Количество итераций обучения
Обучение и тестирование
модель = xgb.train (параметр, D_train, шаги)
предс = модель.прогноз(D_test)
Борьба с переоснащением
Это очень распространенный случай в этом алгоритме, потому что алгоритм просматривает данные так много раз, что может очень хорошо изучить лежащую в основе логику, но у нас есть средство от этого с помощью гиперпараметра «Гамма».
Минимальное снижение потерь, необходимое для создания дальнейшего раздела на листовом узле дерева. Чем больше гамма, тем более консервативным будет алгоритм.
Ссылка - https://xgboost.readthedocs.io/
Другие параметры, на которые мы можем обратить внимание: max_depth и eta (скорость обучения).
Специальные примечания –
1. Мы можем использовать поиск по сетке для выбора оптимальных гиперпараметров
2. Хоть это и метод бустинга, но он использует все ядра процессора нашего компьютера в параллельном режиме, так что это тоже можно сказать как параллельный метод, но не напрямую, так как работа последовательная.
Использованная литература -