我一直在阅读并尝试为我的一些模型创建一些SHAP图,但我一生都找不到与caret
集成的包。
我只需要检测一下方向的功能是否合理。
假设我构建了一个简单的xgboost
模型
model_1 <- train(
sales~.,
data=example_df,
method="xgbTree",
preProcess=c('center', 'scale', 'zv'),
trControl=trainControl(method="repeatedcv", number=5, repeats=2),
na.action = na.omit
)
我已经做过几次了,也做了一些功能工程和选择,但现在想看看shap值。我该如何做到这一点?
caret::train
返回的train对象包含一个元素finalModel
,该元素属于该方法生成的类型。在这种情况下,它是一个xgboost
对象。您可以在此对象上使用xgboost
包中的所有实用程序。
要绘制形状值,请调用xgb.plot.shap(data = example_df, model = model_1$finalModel, top_n = 15)
。要获得shap值本身,您可以使用plot = FALSE
调用相同的函数,如shap_values <- xgb.plot.shap(data = example_df, model = model_1$finalModel, top_n = 15, plot = FALSE)