finetune
contiene algunas funciones adicionales para el ajuste del modelo que amplían lo que se encuentra actualmente en el paquete tune
. Puede instalar la versión CRAN del paquete con el siguiente código:
install.packages( " finetune " )
Para instalar la versión de desarrollo del paquete, ejecute:
# install.packages("pak")
pak :: pak( " tidymodels/finetune " )
Hay dos conjuntos principales de herramientas en el paquete: recocido simulado y carreras .
El ajuste mediante optimización de recocido simulado es una herramienta de búsqueda iterativa para encontrar buenos valores:
library( tidymodels )
library( finetune )
# Syntax very similar to `tune_grid()` or `tune_bayes()`:
# # -----------------------------------------------------------------------------
data( two_class_dat , package = " modeldata " )
set.seed( 1 )
rs <- bootstraps( two_class_dat , times = 10 ) # more resamples usually needed
# Optimize a regularized discriminant analysis model
library( discrim )
rda_spec <-
discrim_regularized( frac_common_cov = tune(), frac_identity = tune()) % > %
set_engine( " klaR " )
# # -----------------------------------------------------------------------------
set.seed( 2 )
sa_res <-
rda_spec % > %
tune_sim_anneal( Class ~ . , resamples = rs , iter = 20 , initial = 4 )
# > Optimizing roc_auc
# > Initial best: 0.86480
# > 1 ♥ new best roc_auc=0.87327 (+/-0.004592)
# > 2 ♥ new best roc_auc=0.87915 (+/-0.003864)
# > 3 ◯ accept suboptimal roc_auc=0.87029 (+/-0.004994)
# > 4 + better suboptimal roc_auc=0.87171 (+/-0.004717)
# > 5 ◯ accept suboptimal roc_auc=0.86944 (+/-0.005081)
# > 6 ◯ accept suboptimal roc_auc=0.86812 (+/-0.0052)
# > 7 ♥ new best roc_auc=0.88172 (+/-0.003647)
# > 8 ◯ accept suboptimal roc_auc=0.87678 (+/-0.004276)
# > 9 ◯ accept suboptimal roc_auc=0.8627 (+/-0.005784)
# > 10 + better suboptimal roc_auc=0.87003 (+/-0.005106)
# > 11 + better suboptimal roc_auc=0.87088 (+/-0.004962)
# > 12 ◯ accept suboptimal roc_auc=0.86803 (+/-0.005195)
# > 13 ◯ accept suboptimal roc_auc=0.85294 (+/-0.006498)
# > 14 ─ discard suboptimal roc_auc=0.84689 (+/-0.006867)
# > 15 ✖ restart from best roc_auc=0.85021 (+/-0.006623)
# > 16 ◯ accept suboptimal roc_auc=0.87607 (+/-0.004318)
# > 17 ◯ accept suboptimal roc_auc=0.87245 (+/-0.004799)
# > 18 + better suboptimal roc_auc=0.87706 (+/-0.004131)
# > 19 ◯ accept suboptimal roc_auc=0.87213 (+/-0.004791)
# > 20 ◯ accept suboptimal roc_auc=0.86218 (+/-0.005773)
show_best( sa_res , metric = " roc_auc " , n = 2 )
# > # A tibble: 2 × 9
# > frac_common_cov frac_identity .metric .estimator mean n std_err .config
# > <dbl> <dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
# > 1 0.308 0.0166 roc_auc binary 0.882 10 0.00365 Iter7
# > 2 0.121 0.0474 roc_auc binary 0.879 10 0.00386 Iter2
# > # ℹ 1 more variable: .iter <int>
El segundo conjunto de métodos es para carreras . Comenzamos haciendo un pequeño conjunto de remuestreos para todos los puntos de la cuadrícula y luego probamos estadísticamente para ver cuáles deberían descartarse o investigarse más. Los dos métodos aquí se basan en los que deberían utilizarse en Kuhn (2014).
Por ejemplo, utilizando un análisis tipo ANOVA para filtrar combinaciones de parámetros:
set.seed( 3 )
grid <-
rda_spec % > %
extract_parameter_set_dials() % > %
grid_max_entropy( size = 20 )
ctrl <- control_race( verbose_elim = TRUE )
set.seed( 4 )
grid_anova <-
rda_spec % > %
tune_race_anova( Class ~ . , resamples = rs , grid = grid , control = ctrl )
# > ℹ Evaluating against the initial 3 burn-in resamples.
# > ℹ Racing will maximize the roc_auc metric.
# > ℹ Resamples are analyzed in a random order.
# > ℹ Bootstrap10: 14 eliminated; 6 candidates remain.
# >
# > ℹ Bootstrap04: 2 eliminated; 4 candidates remain.
# >
# > ℹ Bootstrap03: All but one parameter combination were eliminated.
show_best( grid_anova , metric = " roc_auc " , n = 2 )
# > # A tibble: 1 × 8
# > frac_common_cov frac_identity .metric .estimator mean n std_err .config
# > <dbl> <dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
# > 1 0.831 0.0207 roc_auc binary 0.881 10 0.00386 Preproce…
tune_race_win_loss()
también se puede utilizar. Trata los parámetros de ajuste como equipos deportivos en un torneo y calcula estadísticas de victorias y derrotas.
set.seed( 4 )
grid_win_loss <-
rda_spec % > %
tune_race_win_loss( Class ~ . , resamples = rs , grid = grid , control = ctrl )
# > ℹ Racing will maximize the roc_auc metric.
# > ℹ Resamples are analyzed in a random order.
# > ℹ Bootstrap10: 3 eliminated; 17 candidates remain.
# >
# > ℹ Bootstrap04: 2 eliminated; 15 candidates remain.
# >
# > ℹ Bootstrap03: 2 eliminated; 13 candidates remain.
# >
# > ℹ Bootstrap01: 1 eliminated; 12 candidates remain.
# >
# > ℹ Bootstrap07: 1 eliminated; 11 candidates remain.
# >
# > ℹ Bootstrap05: 1 eliminated; 10 candidates remain.
# >
# > ℹ Bootstrap08: 1 eliminated; 9 candidates remain.
show_best( grid_win_loss , metric = " roc_auc " , n = 2 )
# > # A tibble: 2 × 8
# > frac_common_cov frac_identity .metric .estimator mean n std_err .config
# > <dbl> <dbl> <chr> <chr> <dbl> <int> <dbl> <chr>
# > 1 0.831 0.0207 roc_auc binary 0.881 10 0.00386 Preproce…
# > 2 0.119 0.0470 roc_auc binary 0.879 10 0.00387 Preproce…
Este proyecto se publica con un Código de conducta para colaboradores. Al contribuir a este proyecto, usted acepta cumplir con sus términos.
Si tiene preguntas y debates sobre los paquetes de tidymodels, el modelado y el aprendizaje automático, publique en Posit Community.
Si cree que ha encontrado un error, envíe un problema.
De cualquier manera, aprenda a crear y compartir un reprex (un ejemplo mínimo y reproducible) para comunicar claramente su código.
Consulte más detalles sobre las pautas de contribución para paquetes tidymodels y cómo obtener ayuda.