Важность функции для XGBoost в Sagemaker - PullRequest
1 голос
/ 11 апреля 2019

Я построил модель XGBoost с помощью Amazon Sagemaker, но мне не удалось найти ничего, что помогло бы мне интерпретировать модель и проверить, выучила ли она правильные зависимости.

Как правило, мы можем видеть важность функцийдля XGBoost с помощью функции get_fscore () в Python API (https://xgboost.readthedocs.io/en/latest/python/python_api.html) я не вижу ничего подобного в API Sagemaker (https://sagemaker.readthedocs.io/en/stable/estimators.html).

) Я знаю, что могу построить свою собственную модель и затем развернуть ееиспользуя sagemaker, но мне любопытно, сталкивался ли кто-нибудь с этой проблемой и как они ее преодолели.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

SageMaker XGBoost в настоящее время не предоставляет интерфейс для извлечения важности функций из модели. Вы можете написать некоторый код, чтобы получить важность функции из модели XGBoost. Вы должны получить артефакты объекта-носителя из модели в 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().

0 голосов
/ 17 июня 2019

По состоянию на 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()
...