tidymodels / bonsai

parsnip wrappers for tree-based models
https://bonsai.tidymodels.org
Other
51 stars 7 forks source link

`aorsf` - engine: model fit fails if `mtry` is specified #90

Open MasterLuke84 opened 1 month ago

MasterLuke84 commented 1 month ago

Hi,

the model fit fails if mtry is specified for the aorsf-engine. If it is not specified, it works with the default engine values.

library(bonsai)
#> Loading required package: parsnip

# This works with default mtry value
rf_mod <- 
  rand_forest() %>%
  set_engine(engine = "aorsf") %>%
  set_mode(mode = "regression") %>% 
  set_args(min_n = 1, trees = 2, importance = "permute") %>% 
  fit(
    formula = mpg  ~ . , 
    data = mtcars 
  )

rf_mod
#> parsnip model object
#> 
#> ---------- Oblique random regression forest
#> 
#>      Linear combinations: Accelerated Linear regression
#>           N observations: 32
#>                  N trees: 2
#>       N predictors total: 10
#>    N predictors per node: 4
#>  Average leaves per tree: 7.5
#> Min observations in leaf: 1
#>           OOB stat value: 0.27
#>            OOB stat type: RSQ
#>      Variable importance: permute
#> 
#> -----------------------------------------

# Error occurs...
rf_mod_w_mtry <- 
  rand_forest() %>%
  set_engine(engine = "aorsf") %>%
  set_mode(mode = "regression") %>% 
  set_args(mtry = 3, min_n = 1, trees = 2, importance = "permute") %>% 
  fit(
    formula = mpg  ~ . , 
    data = mtcars 
  )
#> Error in ncol(source): object 'x' not found

Created on 2024-08-08 with reprex v2.0.2



Thank you in advance and best regards
simonpcouch commented 1 month ago

Thanks for the issue! Just confirming that I can reproduce this and 1) it does seem to be aorsf-specific (i.e. xgboost is not an issue) and 2) it doesn't seem to be due to any changes in parsnip (issue persists with parsnip v1.0.0). min_cols() seems to be evaluated in a different environment than its usual.