首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提取使用mlr包生成的模型的超级学习器/元学习器系数?

如何提取使用mlr包生成的模型的超级学习器/元学习器系数?
EN

Stack Overflow用户
提问于 2019-06-08 04:46:05
回答 1查看 89关注 0票数 2

我正在尝试提取makeStackedLearner函数(mlr包)的结果的系数,其中元学习器正在拟合GLM或类似的函数。了解系数对于了解哪些单个模型对最终预测的贡献最大非常有用。

我已经通过mlr github issues (https://github.com/mlr-org/mlr/issues/2598)提出了这个问题。

代码语言:javascript
复制
library(mlr)
data(BostonHousing, package = "mlbench")
tsk = makeRegrTask(data = BostonHousing, target = "medv")
base = c("regr.rpart", "regr.svm")
lrns = lapply(base, makeLearner)
m = makeStackedLearner(base.learners = lrns,
predict.type = "response", method = "compress")
tmp = train(m, tsk)

哪里可以找到super.model的回归系数?

代码语言:javascript
复制
> names(tmp$learner.model)
[1] "method"        "base.learners" "super.model"   "pred.train" 
EN

回答 1

Stack Overflow用户

发布于 2019-09-16 18:31:33

多亏了mlr包开发人员,这个问题现在已经得到了解决。最简单的做法是使用super.learner = "regr.glm"设置,以便可以轻松解释最终的超级学习器模型:

代码语言:javascript
复制
> data(BostonHousing, package = "mlbench")
> tsk = makeRegrTask(data = BostonHousing, target = "medv")
> BostonHousing$chas = as.numeric(BostonHousing$chas)
> base = c("regr.rpart", "regr.svm", "regr.ranger")
> lrns = lapply(base, makeLearner)
> m = makeStackedLearner(base.learners = lrns,
+                        predict.type = "response", method = "stack.cv", super.learner = "regr.glm")
> tmp = train(m, tsk)
> tmp$learner.model$super.model$learner.model

Call:  stats::glm(formula = f, family = family, data = d, control = ctrl, 
    model = FALSE)

Coefficients:
(Intercept)   regr.rpart     regr.svm  regr.ranger  
   -2.49071     -0.05411      0.28542      0.88404  

Degrees of Freedom: 505 Total (i.e. Null);  502 Residual
Null Deviance:      42720 
Residual Deviance: 5506     AIC: 2654
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56501025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档