Алгоритм повышения

Boosting — это ансамблевый алгоритм машинного обучения, который объединяет ряд слабых учеников для создания сильного ученика. Слабые ученики — это модели, которые сами по себе не очень точны, но в сочетании друг с другом они могут создать гораздо более точную модель.

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

Существует множество различных алгоритмов повышения, но некоторые из самых популярных включают в себя:

  • АдаБуст
  • Машины повышения градиента (GBM)
  • XGBoost

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

XGBoost

XGBoost, сокращение от Extreme Gradient Boosting, — это популярный алгоритм машинного обучения как для задач классификации, так и для задач регрессии. Он известен своей скоростью, точностью и гибкостью. XGBoost можно использовать для решения самых разных задач машинного обучения, в том числе:

  • Классификация. Прогнозирование принадлежности экземпляра к определенному классу, например, спам или не спам, а также вероятность того, что клиент уйдет или нет.
  • Регрессия. Прогнозирование постоянной стоимости, например цены дома или количества товаров, которые купит покупатель.
  • Рейтинг. Упорядочивание экземпляров в соответствии с их прогнозируемой ценностью, такой как релевантность результатов поиска или вероятность того, что пользователь нажмет на объявление.

XGBoost — это мощный алгоритм машинного обучения, который можно использовать для решения самых разных задач. Он прост в использовании и может быть настроен для соответствия различным наборам данных. Если вам нужен мощный, быстрый, точный, гибкий и простой в использовании алгоритм машинного обучения, XGBoost — отличный вариант.

Вот некоторые из ключевых особенностей XGBoost:

  • Усиление градиента. XGBoost использует повышение градиента для обучения своих моделей. Повышение градиента — это итерационный алгоритм, добавляющий в ансамбль новые модели, каждая из которых обучена исправлять ошибки предыдущих моделей. Этот процесс повторяется до тех пор, пока ансамбль не достигнет желаемого уровня точности.
  • Регуляризация. XGBoost использует регуляризацию для предотвращения переобучения. Регуляризация — это метод, который добавляет штраф к функции потерь, что помогает предотвратить изучение моделью шаблонов, которых нет в данных. Параметры, используемые для XGBoost, могут помочь нам справиться с переоснащением.
  • Распараллеливание. XGBoost можно распараллелить между несколькими ядрами, что делает его очень быстрым для больших наборов данных.

Параметры, используемые в XGBoost:

  • Скорость обучения. Скорость обучения — это гиперпараметр, который определяет, насколько сильно модель обновляется на каждой итерации. Более высокая скорость обучения приведет к более быстрому обучению модели, но это также может привести к тому, что модель будет соответствовать данным. Более низкая скорость обучения заставит модель обучаться медленнее, но она также может быть более устойчивой к переоснащению.
  • Количество деревьев. Количество деревьев — это гиперпараметр, определяющий сложность модели. Большее количество деревьев создаст более сложную модель, которая может быть более точной, но также с большей вероятностью будет соответствовать данным. Меньшее количество деревьев создаст более простую модель, которая может быть менее точной, но также может быть более устойчивой к переоснащению.
  • Максимальная глубина каждого дерева. Максимальная глубина каждого дерева — это гиперпараметр, который управляет сложностью каждого отдельного дерева. Более глубокое дерево сможет изучить более сложные отношения в данных, но оно также может с большей вероятностью привести к переобучению данных. Более мелкое дерево с меньшей вероятностью будет соответствовать данным, но оно также может быть менее точным.
  • Коэффициент подвыборки. Доля подвыборки — это гиперпараметр, который управляет долей данных, используемых для обучения каждого дерева. Меньшее отношение подвыборки сделает модель более устойчивой к переоснащению, но это также может привести к тому, что модель будет менее точной. Более высокий коэффициент подвыборки сделает модель более точной, но также может с большей вероятностью привести к переобучению данных.
  • Параметры регуляризации. XGBoost имеет ряд параметров регуляризации, которые можно использовать для предотвращения переобучения. Эти параметры добавляют штраф к функции потерь, что помогает предотвратить изучение моделей, отсутствующих в данных.

Помимо этого есть еще несколько параметров, которые вы можете найти в официальной документации:



Код реализации XGB в задаче регрессии приведен ниже:

#modules to import 
from xgboost import XGBRegressor

#hyperparameters to fit and select the best
n_estimators = [50, 100 , 200 , 400 ]
max_depths = [5, 10 , 20, 30]

for n_estimator in n_estimators:
    for max_depth in max_depths:
        #training the random forest regressor
        forest_regressor = XGBRegressor(n_estimators=n_estimator, max_depth= max_depth, random_state= 42)

        #predicting the outcomes
        y_pred = forest_regressor.fit(X_train, y_train).predict(X_test)

        #printing the performance metrics
        print(f"for n_estimators = {n_estimator} and max_depth = {max_depth}")
        print(f"r2_score is: {r2_score(y_test, y_pred)}")
        print(f"mse is: {mean_squared_error(y_test, y_pred)}")

для полной реализации кода с использованием XGBoost, включая все этапы предварительной обработки, посетите репозиторий github ниже: