Используйте классы повышения градиента в Scikit-Learn для решения различных задач классификации и регрессии.

В первой части этой статьи мы представили алгоритм повышения градиента и показали его реализацию в псевдокоде.

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

Хотя библиотека XGBoost (о которой будет рассказано в следующей статье) обеспечивает более оптимизированную и хорошо масштабируемую реализацию повышения градиента, для небольших и средних наборов данных часто проще использовать классы повышения градиента в Scikit-Learn, которые имеют более простой интерфейс и значительно меньшее количество гиперпараметров для настройки.

Повышение градиента в Scikit-Learn

Scikit-Learn предоставляет следующие классы, реализующие модель деревьев решений с градиентным усилением (GBDT):

  1. GradientBoostingClassifier используется для задач классификации.
  2. GradientBoostingRegressor используется для задач регрессии.

В дополнение к стандартным параметрам деревьев решений, таким как criterion, max_depth (по умолчанию установлено значение 3) и min_samples_split, эти классы указать следующие параметры:

  1. потери — оптимизируемая функция потерь. В GradientBoostingClassifier эта функция может быть log_loss (по умолчанию) или экспоненциальной (что заставит усиление градиента вести себя как AdaBoost). В GradientBoostingRegressor эта функция может быть squared_loss (по умолчанию), absolute_loss, huber или quantile (см. эту статью о различиях между этими функциями потерь).
  2. n_estimators — количество итераций бустинга (по умолчанию 100).
  3. learning_rate — коэффициент, уменьшающий вклад каждого дерева (по умолчанию 0,1).
  4. подвыборка — доля выборок, используемых для обучения каждого дерева (по умолчанию 1,0).
  5. max_features — количество функций, которые следует учитывать при поиске лучшего разделения в каждом…