finetune
現在tune
パッケージに含まれているものを拡張するモデル調整用の追加関数がいくつか含まれています。次のコードを使用して、CRAN バージョンのパッケージをインストールできます。
install.packages( " finetune " )
パッケージの開発バージョンをインストールするには、次を実行します。
# install.packages("pak")
pak :: pak( " tidymodels/finetune " )
パッケージには、シミュレーテッド アニーリングとレーシングという2 つの主要なツール セットがあります。
シミュレーテッド アニーリング最適化によるチューニングは、適切な値を見つけるための反復検索ツールです。
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>
2 番目のメソッド セットはレース用です。まず、すべてのグリッド ポイントに対して小さなセットのリサンプルを実行し、次に統計的にテストして、どのグリッド ポイントを削除するか、さらに調査する必要があるかを確認します。ここでの 2 つの方法は、Kuhn (2014) の推奨事項に基づいています。
たとえば、ANOVA タイプの分析を使用してパラメーターの組み合わせを除外します。
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()
も使用できます。チューニング パラメーターをトーナメントのスポーツ チームとして扱い、勝敗統計を計算します。
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…
このプロジェクトは、貢献者の行動規範とともにリリースされています。このプロジェクトに貢献すると、その規約に従うことに同意したことになります。
tinymodels パッケージ、モデリング、機械学習に関する質問やディスカッションについては、Posit コミュニティに投稿してください。
バグに遭遇したと思われる場合は、問題を送信してください。
いずれにしても、コードについて明確に伝えるために、reprex (最小限の再現可能な例) を作成して共有する方法を学びましょう。
tinymodels パッケージの貢献ガイドラインとヘルプの入手方法に関する詳細を確認してください。