Sagemaker中XGBoost的功能重要性

时间:2019-04-10 22:06:42

标签: xgboost amazon-sagemaker

我已经使用Amazon Sagemaker构建了一个XGBoost模型,但是我找不到任何可以帮助我解释该模型并验证它是否了解正确依赖性的东西。

通常,我们可以通过python API(https://xgboost.readthedocs.io/en/latest/python/python_api.html)中的get_fscore()函数看到XGBoost的功能重要性,我在sagemaker api(https://sagemaker.readthedocs.io/en/stable/estimators.html)中看不到任何此类特征。

我知道我可以构建自己的模型,然后使用sagemaker进行部署,但是我很好奇是否有人遇到了这个问题以及他们如何克服了这个问题。

谢谢。

3 个答案:

答案 0 :(得分:2)

尽管您可以编写建议的自定义脚本(如rajesh和Lukas),并使用XGBoost作为运行脚本的框架(有关如何使用“脚本模式”的信息,请参见How to Use Amazon SageMaker XGBoost),但SageMaker最近启动了{{3 }},您可以从XGBoost实时检索功能的重要性。

以下示例笔记本演示了如何使用SageMaker Debugger检索功能的重要性:SageMaker Debugger

答案 1 :(得分:1)

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()

答案 2 :(得分:0)

自2019年6月17日起,Sagemaker XGBoost模型以名为model.tar.gz的档案存储在S3中。该存档包含名为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()