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

Как работает XGBoost

Повышение — это метод, используемый в ансамблевом обучении для объединения нескольких слабых моделей, таких как деревья решений, в одну сильную модель. Идея бустинга состоит в том, чтобы итеративно добавлять в ансамбль новые модели, которые исправляют ошибки предыдущих моделей. Каждая новая модель или «дерево» обучается на остатках предыдущего дерева, которые представляют собой разницу между прогнозируемыми и фактическими значениями.

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

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

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

Пример XGBoost с данными Iris

В этом примере мы покажем, как использовать XGBoost для классификации данных Iris в Python.

Первым шагом в примере является импорт необходимых библиотек:

import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

Затем мы загружаем набор данных Iris, используя функцию load_iris() из библиотеки scikit-learn. Характеристики хранятся в атрибуте data, а целевая переменная (вид цветов ириса) хранится в атрибуте target.

iris = load_iris()
X, y = iris.data, iris.target

Затем мы разделяем данные на наборы для обучения и тестирования, используя функцию train_test_split из библиотеки scikit-learn. Эта функция случайным образом разбивает данные на указанный набор для обучения и набор для тестирования. В примере 80 % данных используются для обучения, а 20 % — для тестирования.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

Затем мы создаем модель XGBoost, используя функцию XGBClassifier() из библиотеки xgboost. Эта функция создает новую модель XGBoost для задач классификации.

model = xgb.XGBClassifier()

Затем мы обучаем модель на обучающих данных, используя функцию fit() из библиотеки xgboost. Эта функция принимает обучающие данные и соответствующую целевую переменную.

model.fit(X_train, y_train)

Наконец, мы делаем прогнозы по тестовым данным, используя функцию predict() из библиотеки xgboost. Затем мы оцениваем производительность модели, сравнивая предсказанные метки с истинными метками тестовых данных, используя функцию accuracy_score() из библиотеки scikit-learn.

# make predictions on the test data
y_pred = model.predict(X_test)

# evaluate the model's performance
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}%".format(accuracy * 100))

В этом примере точность вычисляется путем деления количества правильных прогнозов на общее количество прогнозов. Точность возвращается в виде десятичного значения от 0 до 1, поэтому она умножается на 100, чтобы отобразить ее в процентах. Результатом будет точность модели, округленная до 2 знаков после запятой.

Важно отметить, что точность не всегда может быть лучшим показателем для оценки производительности модели. Другие показатели, такие как точность, полнота, оценка f1 и ROC-AUC, могут быть более информативными в зависимости от проблемы.

Полный код показан ниже:

import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# load the iris dataset
iris = load_iris()
X, y = iris.data, iris.target

# split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# create the XGBoost model
model = xgb.XGBClassifier()

# train the model on the training data
model.fit(X_train, y_train)

# make predictions on the test data
y_pred = model.predict(X_test)

# evaluate the model's performance
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}%".format(accuracy * 100))

Выход:

Accuracy: 96.67%

Надеюсь, этот пример показал вам, как можно использовать XGBoost для решения задач классификации.

Краткое содержание

Таким образом, XGBoost — это мощная и эффективная реализация алгоритма повышения градиента, предназначенная для обработки крупномасштабных наборов данных и решения сложных задач. Это программная библиотека с открытым исходным кодом, которая предоставляет оптимизированную версию повышения градиента, которая представляет собой метод машинного обучения, который объединяет несколько слабых моделей для создания одной сильной модели. XGBoost имеет ряд преимуществ по сравнению с другими библиотеками повышения градиента, включая высокую производительность, гибкость и масштабируемость. Однако он также имеет некоторые ограничения, такие как тенденция к переобучению и непригодность для небольших наборов данных. В целом, XGBoost — популярный и широко используемый инструмент в области машинного обучения и науки о данных. Мы также показали пример использования библиотеки XGBoost для решения задачи классификации с использованием набора данных Iris.

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

Дополнительные материалы на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .

Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.