Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
MasterLuke84 opened this issue Aug 8, 2024 · 2 comments
Open

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

MasterLuke84 opened this issue Aug 8, 2024 · 2 comments

Comments

@MasterLuke84
Copy link

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
@MasterLuke84 MasterLuke84 changed the title aorsf - enginemodel fit fails if mtry is specified aorsf - engine: model fit fails if mtry is specified Aug 8, 2024
@simonpcouch
Copy link
Contributor

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.

@bcjaeger
Copy link
Contributor

bcjaeger commented Sep 21, 2024

Just saw this and thought I"d check it out. The issue appears to occur in parsnip:::make_form_call:

If we modify:

  if (object$engine == "spark") {
    env$x <- env$data
  }

to

  if (object$engine %in% c("spark", "aorsf")) {
    env$x <- env$data
  }

the x object will be recognized when you specify mtry.

@simonpcouch - would this solution be too hacky? A more general approach might change the call to aorsf::orsf, making it so that instead of mtry = min_cols(~3, x) we use mtry = min_cols(~3, data)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants