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

RandomForestSRC回归模型多参数组合网格搜索实现方案咨询

RandomForestSRC网格搜索参数调优实现方案

报错原因

rfsrc()单次调用仅支持接收单组参数值,直接传入多值向量时函数会尝试用向量整体做条件判断,因此触发「条件长度大于1,仅使用第一个元素」的警告。

高效实现方案

无需手动遍历参数组合,通过参数网格生成+批量映射的方式即可完成全参数组合训练,同时原生支持后续的调优可视化需求,代码实现如下:

步骤1:加载依赖包、生成参数网格

# 加载依赖包
library(randomForestSRC)
library(purrr)
library(dplyr)
library(ggplot2)

# 自动生成所有参数的组合网格
param_grid <- expand.grid(
  mtry = c(4,8,16),
  nodesize = c(50,150,300),
  ntrees = c(500,1000,2000),
  nodedepth = c(5,10),
  stringsAsFactors = FALSE
)

步骤2:定义单模型训练函数

train_rfsrc <- function(mtry, nodesize, ntrees, nodedepth) {
  mod <- rfsrc(
    mort_30 ~ variable1 + variable2 + variable3, # 替换为你的完整公式
    data = data.train,
    mtry = mtry,
    nodesize = nodesize,
    ntrees = ntrees,
    nodedepth = nodedepth,
    blocksize = 1,
    importance = TRUE,
    seed = 40
  )
  # 返回参数对应模型的评估指标,可按需添加测试集误差、特征重要性等
  return(tibble(
    mtry = mtry,
    nodesize = nodesize,
    ntrees = ntrees,
    nodedepth = nodedepth,
    oob_mse = mod$err.rate[ntrees] # 取训练完成后的OOB均方误差
  ))
}

步骤3:批量训练所有参数组合

# 单线程版本,适合少量参数组合
result_df <- pmap_dfr(param_grid, train_rfsrc)

# 并行加速版本(推荐),可充分利用CPU核心减少耗时
# library(furrr)
# plan(multisession, workers = 4) # workers参数设置为你的CPU可用核心数
# result_df <- future_pmap_dfr(param_grid, train_rfsrc, .options = furrr_options(seed = 40))

步骤4:调优过程可视化示例

生成的result_df为结构化的参数-指标对应表,可直接用ggplot2绘制任意维度的调优对比图:

ggplot(result_df, aes(x = factor(mtry), y = oob_mse, color = factor(nodesize), group = nodesize)) +
  geom_point(size = 2) +
  geom_line(linewidth = 1) +
  facet_grid(factor(nodedepth) ~ factor(ntrees), labeller = label_both) +
  labs(x = "mtry取值", y = "OOB均方误差", color = "nodesize取值") +
  theme_bw()

补充说明

如果需要新增参数或调整参数候选值,仅需要修改param_grid中对应参数的向量即可,无需改动其他逻辑。


内容的提问来源于stack exchange,提问作者Lærke Kjær

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:06:10