问题描述
我正在尝试在 R 中使用 LIME 来解释目标为“count:poisson”的 xgboost 模型。它似乎适用于标准的“reg:linear”。有没有解决的办法?这个问题之前曾在此处提出过,但没有被接受的答案。
Can the R version of lime explain xgboost models with count:poisson objective function?
require(dplyr)
require(xgboost)
require(lime)
#generate data
df_train <- data.frame(
x1 = rnorm(n = 1000),x2 = rnorm(n = 1000),x3 = rnorm(n = 1000)) %>%
mutate(y = rpois(1000,pmax(0,x1 + 2*x2 - 0.5*x3)))
df_hold_out <- data.frame(
x1 = rnorm(n = 5),x2 = rnorm(n = 5),x3 = rnorm(n = 5)) %>%
mutate(y = rpois(5,x1 + 2*x2 - 0.5*x3)))
#set matrix
dmat <- xgb.DMatrix(data = as.matrix(df_train[,c("x1","x2","x3")]),label = df_train[["y"]])
#train with linear objective
mod_linear <- xgboost(data = dmat,nrounds = 100,params = list(objective = "reg:linear"))
#train with poisson objective
mod_poisson <- xgboost(data = dmat,params = list(objective = "count:poisson"))
#explain linear model
explainer_linear <- lime(x = df_hold_out,model = mod_linear,n_bins = 5)
explanation_linear <- lime::explain(
x = df_hold_out[,"x3")],explainer = explainer_linear,n_permutations = 5000,dist_fun = "gower",kernel_width = .75,n_features = 10,feature_select = "highest_weights")
#plot
plot_features(explanation_linear)
#explain poisson model
explainer_poisson <- lime(x = df_hold_out,model = mod_poisson,n_bins = 5)
explanation_poisson <- lime::explain(
x = df_hold_out[,explainer = explainer_poisson,feature_select = "highest_weights")
#plot
plot_features(explanation_poisson)
Error: Unsupported model type
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)