我正在尝试提取makeStackedLearner函数(mlr包)的结果的系数,其中元学习器正在拟合GLM或类似的函数。了解系数对于了解哪些单个模型对最终预测的贡献最大非常有用。
我已经通过mlr github issues (https://github.com/mlr-org/mlr/issues/2598)提出了这个问题。
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的回归系数?
> names(tmp$learner.model)
[1] "method" "base.learners" "super.model" "pred.train" 发布于 2019-09-16 18:31:33
多亏了mlr包开发人员,这个问题现在已经得到了解决。最简单的做法是使用super.learner = "regr.glm"设置,以便可以轻松解释最终的超级学习器模型:
> 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: 2654https://stackoverflow.com/questions/56501025
复制相似问题