XGBoost 101

В предыдущей статье мы познакомились с XGBoost и узнали о различных причинах его широкого признания в соревнованиях по машинному обучению, а также выяснили, что привело к тому, что XGBoost стал таким отличным исполнителем алгоритма. В этой статье мы узнаем об установке XGBoost в Anaconda с помощью Amazon SageMaker. Мы также узнаем о различных типах проблем, которые можно решить с помощью XGBoost, и о преимуществах использования XGBoost в Amazon SageMaker. Чтобы узнать об основах XGBoost, прочитайте предыдущую статью XGBoost - Выбор большинства чемпионов.

Типы проблем, решаемых XGBoost

XGBoost хорошо подходит для решения ряда различных типов задач машинного обучения с основными возможностями для решения проблем, в частности, классификации, регрессии и ранжирования. Остановимся на каждом из них подробнее.

Классификация

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

Регресс

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

Рейтинг

Ранжирование - это процесс определения важности документа в порядке релевантности. XGBoost очень хорошо справляется с проблемами, связанными с ранжированием. Одной из хороших аналогий может быть ранжирование различных видео на YouTube. Данные результатов поиска, времени просмотра и кликов по рекомендации могут помочь изучить и применить XGBoost для обучения. Это создаст модели различных типов видео с оценками релевантности в зависимости от пользователя. Это поможет создать механизм рекомендаций для видео по вкусу пользователя. TikTok и Spotify используют похожий подход. Более того, даже сайты электронной коммерции, такие как Amazon и Ebday, широко используют ранжирование в своей основе.

Библиотеку XGBoost можно легко использовать как в локальном движке, так и в облаке с помощью таких сервисов, как Amazon SageMaker. Давайте научимся устанавливать XGBoost в Anaconda.

Анаконда

Anaconda - это дистрибутив для научных вычислений, который представляет собой простой в установке бесплатный менеджер пакетов и менеджер среды с огромной коллекцией из более чем 720 пакетов с открытым исходным кодом, предлагающих бесплатную поддержку сообществом языков программирования R и Python, которые поддерживают Windows, Linux и Mac. ОС, а также поставляется с Jupyter Notebook.

Как установить XGBoost в Anaconda

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

После установки откройте терминал Anaconda Prompt и проверьте, есть ли обновления.

conda update –all

После этого вы можете использовать следующую команду для установки пакета xgboost для python в среде anaconda.

conda install -c anaconda py-xgboost

Теперь, когда XGBoost настроен, вы можете использовать модули из xgboost, вызывая их с import в своем Jupyter Notebook. Этот пакет может поддерживать языки программирования Python, R, C ++, Scala и Java и может работать на одной машине, а также на Spark, Hadoop, DataFlow и Flink.

Использование XGBoost в Amazon SageMaker

Amazon SageMaker позволяет специалистам по обработке данных и инженерам по машинному обучению получать доступ к алгоритмам XGBoost в основном двумя способами: одним из них как встроенными алгоритмами, а другим - как фреймворком. При использовании XGBoost в качестве алгоритма существует большая гибкость по сравнению с использованием встроенных алгоритмов, и, следовательно, можно также получить доступ к еще более сложным сценариям, например, перекрестная проверка в k-кратном размере, поскольку сценарии обучения также могут быть настроены.

Использование XGBoost в качестве фреймворка

XGBoost можно использовать в качестве фреймворка, а настраиваемые обучающие сценарии можно легко запускать. В следующем примере показано, как SageMaker Python SDK предоставляет XGBoost API в качестве платформы, аналогичной той, что предоставляется для PyTorch и TensorFlow.

import boto3
import sagemaker
from sagemaker.xgboost.estimator import XGBoost
from sagemaker.session import s3_input, Session
#initializing the hyperparameters
hyperparameters = {
        "max_depth":"5",
        "eta":"0.2",
        "gamma":"4",
        "min_child_weight":"6",
        "verbosity":"1",
        "objective":"reg:linear",
        "subsample":"0.7",
        "num_round":"50"}
#output path is set to the s3 bucketwhere the trained model will be saved
bucket = sagemaker.Session().default_bucket()
prefix = 'DEMO-xgboost-as-a-framework'
output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-framework')
#construct a SageMaker XGBoost estimator
#entry_point to the xgboost training script is specified
estimator = XGBoost(entry_point = "your_xgboost_abalone_script.py",
                    framework_version='1.2-2',
                    hyperparameters=hyperparameters,
                    role=sagemaker.get_execution_role(),
                    instance_count=1,
                    instance_type='ml.m5.2xlarge',
                    output_path=output_path)
#paths and data type and defined to the training and validation datasets
content_type = "libsvm"
train_input = s3_input("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type)
validation_input = s3_input("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type)
# execution of the XGBoost training job
estimator.fit({'train': train_input, 'validation': validation_input})

Преимущества внедрения XGBoost через Amazon SageMaker

Внедрение XGBoost через Amazon SageMaker дает множество преимуществ. Узнав об этих ключевых преимуществах, любой наверняка обнаружит прибыльные перспективы использования XGBoost через SageMaker.

Масштабируемость и распределенная система

С помощью XGBoost в Amazon SageMaker можно обучить огромный объем данных на множестве машин. Это так же просто, как установить количество машин и размер, до которого нужно масштабировать. Обо всем остальном, касающемся распространения и масштабируемости, позаботится Amazon SageMaker.

Фрагментация

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

A / B тестирование

Многочисленные модели XGBoost могут запускаться одновременно, каждая с разным весом для вывода. Это A / B-тестирование, изначально поддерживаемое Amazon SageMaker, может помочь клиентам определить лучшие модели из множества протестированных для их использования.

Читать статью полностью: