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

本地运行Shiny App遇Ranger报错:sample_fraction过小无样本抽取

排查Ranger随机森林sample_fraction过小错误的方向

运行Shiny App时出现以下错误:

> shinyApp(ui, server)

Listening on http://127.0.0.1:5603
Error: sample_fraction too small, no observations sampled. Ranger will EXIT now.
Warning: Error in predict.ranger.forest: User interrupt or internal error.

场景说明

数据集含17000条观测值,采用Ranger引擎构建随机森林回归模型,已尝试设置sample.fraction=1(有放回)、0.632(无放回),调参时设大于1的值也报错;也试过将sample.fraction改为sample_fraction,问题依旧。模型定义代码如下:

## Step 3: Fit (Choosing Algorithms) ====

RF <- 
  rand_forest() %>% 
  set_args(trees = tune(), 
           mtry = tune(),
           min_n = tune()
  ) %>% 
  set_engine("ranger",
             importance = "permutation",
             replace = TRUE,
             sample.fraction = 1) %>%  
  set_mode("regression") 

排查方向

  • 检查数据预处理与传递环节:

    • 在模型拟合前添加print(nrow(your_dataset)),确认实际传入模型的样本量是否正常,排查是否在Shiny的反应式逻辑、数据筛选或缺失值处理中误删了大部分数据,导致实际可用样本量趋近于0。
    • 如果使用了分组交叉验证(如group_vfold_cv),检查分组内的样本量是否过小,即使整体数据量大,单分组样本可能无法满足抽样比例要求。
  • 验证参数传递与调参逻辑:

    • 确认调参过程中未误将sample.fraction纳入调参参数列表,避免调参生成过小的取值触发错误。
    • 注意Ranger的规则:replace=TRUE时sample.fraction可设为1;replace=FALSE时必须小于1,大于1的设置本身不符合规则,必然报错。
  • 排查Shiny环境作用域问题:

    • 确保模型拟合代码所在的server函数内,数据集变量处于正确作用域(如全局环境或server内正确读取),避免出现数据集为空的情况。
  • 简化调试定位问题:

    • 脱离Shiny环境,在控制台直接运行模型拟合代码,若控制台正常则问题出在Shiny逻辑;若控制台也报错,则聚焦模型定义或数据本身。
    • 暂时固定trees、mtry、min_n的具体值(如trees=100, mtry=5, min_n=10),去掉调参逻辑,验证模型是否能正常运行,排除调参参数冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:15:59