You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R mlr3提取Pipeline中各模型预测及AutoTuner集成问题

问题解答

一、提取集成前单个模型的预测

因为你在创建AutoTuner时设置了store_models = TRUE,训练完成后可以直接从训练好的图学习器中获取每个基模型,进而生成它们的预测结果,具体步骤如下:

  1. 取出训练后的图学习器实例:
trained_graph = at$learner$model
  1. 获取单个训练好的基模型:
# 获取训练后的ranger模型
trained_ranger = trained_graph$pipeops$ranger$learner
# 获取训练后的xgboost模型
trained_xgboost = trained_graph$pipeops$xgboost$learner
  1. 生成单个模型的预测,并与集成模型对比性能:
# 生成各模型预测
pred_ranger = trained_ranger$predict(task)
pred_xgboost = trained_xgboost$predict(task)
pred_ensemble = at$predict(task)

# 计算MSE对比性能
mse_ranger = pred_ranger$score(msr("regr.mse"))[[1]]
mse_xgboost = pred_xgboost$score(msr("regr.mse"))[[1]]
mse_ensemble = pred_ensemble$score(msr("regr.mse"))[[1]]

# 输出结果
cat(sprintf("Ranger MSE: %.4f\nXGBoost MSE: %.4f\nEnsemble MSE: %.4f\n", mse_ranger, mse_xgboost, mse_ensemble))

二、单个模型作为AutoTuner集成到Pipeline

完全可以给单个模型单独创建AutoTuner,再将这些带调参的模型集成到Pipeline中,具体实现如下:

步骤1:为单个模型创建AutoTuner

分别给ranger和xgboost定义调参空间并创建AutoTuner:

# Ranger的调参空间和AutoTuner
ranger_tune_space = ps(
  max.depth = p_fct(levels = c(2L, 3L))
)
at_ranger = auto_tuner(
  tuner = tnr("grid_search"),
  learner = lrn("regr.ranger", id = "tuned_ranger"),
  resampling = rsmp("holdout"),
  measure = msr("regr.mse"),
  search_space = ranger_tune_space,
  term_evals = 2,
  store_models = TRUE
)

# XGBoost的调参空间和AutoTuner
xgboost_tune_space = ps(
  max_depth = p_int(lower = 1L, upper = 3L),
  eta = p_dbl(lower = 0.1, upper = 0.3)
)
at_xgboost = auto_tuner(
  tuner = tnr("grid_search"),
  learner = lrn("regr.xgboost", id = "tuned_xgboost"),
  resampling = rsmp("holdout"),
  measure = msr("regr.mse"),
  search_space = xgboost_tune_space,
  term_evals = 2,
  store_models = TRUE
)

步骤2:将AutoTuner集成到Pipeline

把两个带调参的模型用gunion组合,再接入回归平均节点:

# 创建包含AutoTuner的Pipeline
tuned_graph = gunion(list(
  tuned_ranger = at_ranger,
  tuned_xgboost = at_xgboost
)) %>% po("regravg", innum = 2)

# 转换为学习器并训练
tuned_graph_learner = as_learner(tuned_graph)
tuned_graph_learner$train(task)

# 生成集成模型预测
pred_tuned_ensemble = tuned_graph_learner$predict(task)
cat(sprintf("Tuned Ensemble MSE: %.4f\n", pred_tuned_ensemble$score(msr("regr.mse"))[[1]]))

说明

  • 每个AutoTuner会独立完成自身模型的超参数调优,再将调优后的模型输出给后续的集成节点。
  • 如果需要查看单个调优模型的结果,可以通过trained_graph$pipeops$tuned_ranger$learner访问训练后的AutoTuner实例,再进一步获取最优模型。

内容的提问来源于stack exchange,提问作者Mislav Sagovac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:45:02