finetune
มีฟังก์ชันพิเศษสำหรับการปรับแต่งโมเดลซึ่งจะขยายสิ่งที่อยู่ในแพ็คเกจ tune
ในปัจจุบัน คุณสามารถติดตั้งแพ็คเกจเวอร์ชัน CRAN ด้วยรหัสต่อไปนี้:
install.packages( " finetune " )
หากต้องการติดตั้งเวอร์ชันการพัฒนาของแพ็คเกจ ให้รัน:
# install.packages("pak")
pak :: pak( " tidymodels/finetune " )
มีชุดเครื่องมือหลักสองชุดในแพ็คเกจ: การหลอมจำลอง และ การแข่งรถ
การปรับแต่งด้วยการเพิ่มประสิทธิภาพ การอบอ่อนจำลอง เป็นเครื่องมือค้นหาซ้ำเพื่อค้นหาค่าที่ดี:
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>
วิธีชุดที่สองมีไว้สำหรับ การแข่งรถ เราเริ่มต้นด้วยการสุ่มตัวอย่างชุดเล็กๆ สำหรับจุดกริดทั้งหมด จากนั้นทดสอบทางสถิติเพื่อดูว่าจุดใดควรถูกทิ้งหรือตรวจสอบเพิ่มเติม ทั้งสองวิธีในที่นี้อิงตามที่ควรใน 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…
โครงการนี้เผยแพร่พร้อมกับจรรยาบรรณของผู้ร่วมให้ข้อมูล การมีส่วนร่วมในโครงการนี้แสดงว่าคุณตกลงที่จะปฏิบัติตามข้อกำหนดของโครงการ
สำหรับคำถามและการอภิปรายเกี่ยวกับแพ็คเกจที่เป็นระเบียบ การสร้างโมเดล และการเรียนรู้ของเครื่อง โปรดโพสต์บนชุมชน Posit
หากคุณคิดว่าคุณพบข้อบกพร่อง โปรดส่งปัญหา
ไม่ว่าจะด้วยวิธีใด เรียนรู้วิธีสร้างและแบ่งปัน reprex (ตัวอย่างขั้นต่ำที่สามารถทำซ้ำได้) เพื่อสื่อสารเกี่ยวกับโค้ดของคุณอย่างชัดเจน
ดูรายละเอียดเพิ่มเติมเกี่ยวกับแนวทางการสนับสนุนสำหรับแพ็คเกจ tidymodels และวิธีรับความช่วยเหลือ