#xgboost #amazon-sagemaker
#xgboost #amazon-sagemaker
Вопрос:
Я построил модель XGBoost с помощью Amazon Sagemaker, но мне не удалось найти ничего, что помогло бы мне интерпретировать модель и проверить, изучила ли она правильные зависимости.
Как правило, мы можем увидеть важность функции для XGBoost с помощью функции get_fscore() в API python (https://xgboost.readthedocs.io/en/latest/python/python_api.html ) Я не вижу ничего подобного в API sagemaker (https://sagemaker.readthedocs.io/en/stable/estimators.html ).
Я знаю, что могу создать свою собственную модель, а затем развернуть ее с помощью sagemaker, но мне любопытно, сталкивался ли кто-нибудь с этой проблемой и как они ее преодолели.
Спасибо.
Ответ №1:
По состоянию на 2019-06-17 модель Sagemaker XGBoost хранится на S3 в названном архиве model.tar.gz
. Этот архив состоит из одного маринованного файла модели с именем xgboost-model
.
Чтобы загрузить модель непосредственно из S3 без загрузки, вы можете использовать следующий код:
import s3fs
import pickle
import tarfile
import xgboost
model_path = 's3://<bucket>/<path_to_model_dir>/xgboost-2019-06-16-09-56-39-854/output/model.tar.gz'
fs = s3fs.S3FileSystem()
with fs.open(model_path, 'rb') as f:
with tarfile.open(fileobj=f, mode='r') as tar_f:
with tar_f.extractfile('xgboost-model') as extracted_f:
xgbooster = pickle.load(extracted_f)
xgbooster.get_fscore()
Ответ №2:
В настоящее время SageMaker XGBoost не предоставляет интерфейс для извлечения важности функции из модели. Вы можете написать некоторый код, чтобы получить информацию о важности функции из модели XGBoost. Вы должны получить артефакты объекта booster из модели в S3, а затем использовать следующий фрагмент
import pickle as pkl
import xgboost
booster = pkl.load(open(model_file, 'rb'))
booster.get_score()
booster.get_fscore()
Обратитесь к XGBoost doc за методами получения важности функции из объекта Booster , такими как get_score()
или get_fscore()
.
Ответ №3:
Хотя вы можете написать собственный скрипт, как предложили Раджеш и Лукас, и использовать XGBoost в качестве основы для запуска скрипта (о том, как использовать «режим сценария», см. В разделе «Как использовать Amazon SageMaker XGBoost«), SageMaker недавно запустил отладчик SageMaker, который позволяет извлекать важность функций из XGBoost в режиме реального времени.
Notebook демонстрирует, как использовать отладчик SageMaker для извлечения важности функции.