使用 LIME 预测 R 中的 logit 模型?

Posted

技术标签:

【中文标题】使用 LIME 预测 R 中的 logit 模型?【英文标题】:Using LIME for predictions of a logit model in R? 【发布时间】:2019-01-21 10:05:21 【问题描述】:

所以我正在尝试使用 LIME 来理解 R 中 logit 模型的预测。我知道我不需要,但我试图说明它对一个可以简单理解为的模型的作用演示文稿的起点。

但我无法正常工作。我确信这是由于 model.predict 方面,但我的几个解决方案都没有奏效。

基本上这是我想做的:

model.logit <- glm(formula = formula, data = build.dat, family = binomial(link = "logit"))


train.x <- build.dat[ , all.vars(formula[[3]])] 
test.x <- reject.dat[1:100, all.vars(formula[[3]])]

explainer <- lime(train.x, as_classifier(model.logit ), n_bins = 20, quantile_bins = TRUE)

explain.me <- lime::explain(test.x[2 , ], explainer, n_labels = 1, n_features = 8, n_permutations = 5000, 
                        feature_select = "forward_selection", type = "response" )

现在我得到了错误

Error in match.arg(type) :'arg' should be one of “link”, “response”, “terms”

但是将我的 'type = "response"' 移动到 'lime' 代码中并不能解决它。

我已经尝试创建一个函数“predict_model.glm”,我认为可能会纠正这个问题,因为我认为在使用 randomForest 并让它工作时发生了什么:

predict_model.glm <- function(x, newdata, type = "response" ) 
res <- as.data.frame(c(predict(x, newdata = newdata, type = type), 1-predict(x, newdata = newdata, type = type)))


但这似乎只会增加错误。

我确信这是因为我错过了 'lime' 方面正在寻找的确切内容(因此我无法使用 'predict_model.glm' 函数更正此问题),但我似乎无法在任何地方找到澄清。

任何帮助都会很棒,谢谢!

【问题讨论】:

所以更新了。如果我在函数'predict_model.glm 中直接调用'type = "response"',我发现此错误已解决 但是,现在内部使用的 glm.fit 函数似乎不像我的预测,我得到: glm.fit(x = x_fit, y = y, weights = weights, family = gaussian()) 中的错误:V(mu) 中的 NA。我已尝试通过更改“predict_model.glm”中数据框中的输出格式来解决此问题,但似乎无法解决此问题。我确实有一个 'model_type.glm 【参考方案1】:

您必须在 predict_model.glm 内转换 predict 的输出。作为第一步,我建议打印type 和调用predict 的结果的第一行。根据传入的类型,对 glm 的调用和返回的结果会有所不同 - ?predict_model 暗示:对于“原始”,它是一个单一的资源,对于“概率”,它是概率(或对于真正的线性模型:数字结果)。

总的来说,就我(希望)了解您的情况而言,类似于该功能的功能可能会让您向前迈出一步:

predict_model.glm <- function(x, newdata, type, ...)  
  print(type)
  res <- predict(x, newdata);
  print(res[1])
  data.frame(Response = res)

【讨论】:

以上是关于使用 LIME 预测 R 中的 logit 模型?的主要内容,如果未能解决你的问题,请参考以下文章

R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释一个iris数据样本的预测结果LIME解释器进行模型预测结果解释并可视化

R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理构建词袋模型构建xgboost文本分类模型基于文本训练数据以及模型构建LIME解释器解释一个测试语料的预测结果并可视化

R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理构建词袋模型构建xgboost文本分类模型基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化

如何在R语言中使用Logistic回归模型

Lime 包无法获得 CaretStack 的预测

`object` 和 `newdata` 中存储的特征名称不同!使用 LIME 包解释 R 中的 xgboost 模型时