Chọn mô hình tốt nhất

Mô hình hóa với tidymodels trong R

David Svancer

Data Scientist

Kết quả tinh chỉnh chi tiết

Hàm collect_metrics() mặc định trả về kết quả đã tóm tắt

  • Truyền summarize = FALSE để lấy toàn bộ kết quả tinh chỉnh siêu tham số
dt_tuning %>% 
  collect_metrics(summarize = FALSE)
# A tibble: 150 x 8
 id     cost_complexity tree_depth min_n .metric  ...  .estimate  .config
<chr>        <dbl>         <int>   <int>  <chr>   ...    <dbl>      <chr>  
Fold01    0.0000000758     14       39    sens    ...     0.75     Model1 
Fold01    0.0000000758     14       39    spec    ...     0.906    Model1 
Fold01    0.0000000758     14       39    roc_auc ...     0.888    Model1 
.....     ............     ..       ..    ......  ...     .....    ......
Fold10    0.00380          5        36    roc_auc ...     0.789    Model5
Mô hình hóa với tidymodels trong R

Khám phá kết quả tinh chỉnh

Chọn summarise = FALSE trong collect_metrics() trả về một tibble

  • Dễ khám phá kết quả với dplyr
  • Khám phá ROC AUC
    • Chọn chỉ số roc_auc
    • Nhóm theo cột id
    • Tính thống kê tóm tắt cho .estimate
dt_tuning %>% 
  collect_metrics(summarize = FALSE) %>% 

filter(.metric == 'roc_auc') %>%
group_by(id) %>%
summarize(min_roc_auc = min(.estimate), median_roc_auc = median(.estimate), max_roc_auc = max(.estimate))
# A tibble: 10 x 4
 id     min_roc_auc  median_roc_auc  max_roc_auc
<chr>      <dbl>          <dbl>       <dbl>
Fold01     0.830          0.885       0.888
Fold02     0.857          0.882       0.885
Fold03     0.818          0.836       0.836
......     ....           ....        ....
Fold10     0.762          0.790       0.813
Mô hình hóa với tidymodels trong R

Xem các mô hình tốt nhất

Hàm show_best()

  • Hiển thị top n mô hình theo giá trị trung bình của metric
  • Model1 là mô hình tốt nhất
dt_tuning %>% 
  show_best(metric = 'roc_auc', n = 5)
# A tibble: 5 x 9
cost_complexity  tree_depth  min_n  .metric .estimator   mean    n    std_err  .config
    <dbl>           <int>    <int>    <chr>   <chr>      <dbl>  <int>  <dbl>    <chr>
0.0000000758         14       39     roc_auc  binary     0.827   10   0.0147   Model1 
0.00380               5       36     roc_auc  binary     0.825   10   0.0146   Model5 
0.0243                5       34     roc_auc  binary     0.823   10   0.0147   Model2 
0.00000443           11       8      roc_auc  binary     0.816   10   0.00786  Model3 
0.000000600           3       5      roc_auc  binary     0.814   10   0.0131   Model4
Mô hình hóa với tidymodels trong R

Chọn mô hình

Hàm select_best()

  • Truyền kết quả dt_tuning vào select_best()
  • Chọn metric dùng để đánh giá hiệu năng

 

Trả về một tibble với mô hình và giá trị siêu tham số tốt nhất

best_dt_model <- dt_tuning %>% 
  select_best(metric = 'roc_auc')

best_dt_model

 

# A tibble: 1 x 4
cost_complexity tree_depth  min_n  .config
     <dbl>         <int>    <int>   <chr>  
0.0000000758        14       39     Model1
Mô hình hóa với tidymodels trong R

Hoàn tất workflow

Hàm finalize_workflow() sẽ hoàn tất một workflow chứa mô hình có tham số cần tinh chỉnh

  • Truyền đối tượng workflow
  • Một tibble 1 dòng với các siêu tham số cuối cùng
    • Tên cột phải khớp siêu tham số trong mô hình

 

Trả về đối tượng workflow với các siêu tham số đã đặt

final_leads_wkfl <- leads_tune_wkfl %>% 
  finalize_workflow(best_dt_model)

final_leads_wkfl
== Workflow ========================================
Preprocessor: Recipe
Model: decision_tree()
-- Preprocessor ------------------------------------
3 Recipe Steps
* step_corr()
* step_normalize()
* step_dummy()
-- Model --------------------------------------------
Decision Tree Model Specification (classification)
Main Arguments:
  cost_complexity = 0.0000000758
  tree_depth = 14
  min_n = 39
Computational engine: rpart
Mô hình hóa với tidymodels trong R

Huấn luyện mô hình

workflow đã hoàn tất có thể được huấn luyện với last_fit() và đối tượng chia dữ liệu gốc leads_split

 

Bên trong quy trình

  • Tạo tập huấn luyện và kiểm tra
  • recipe được huấn luyện và áp dụng
  • Cây quyết định đã tinh chỉnh được huấn luyện trên toàn bộ tập huấn luyện
  • Dự đoán và tính chỉ số trên tập kiểm tra
leads_final_fit <- final_leads_wkfl %>% 
  last_fit(split = leads_split)

leads_final_fit %>% collect_metrics()

 

# A tibble: 2 x 3
  .metric  .estimator .estimate
  <chr>    <chr>          <dbl>
1 accuracy binary         0.771
2 roc_auc  binary         0.793
Mô hình hóa với tidymodels trong R

Ayo berlatih!

Mô hình hóa với tidymodels trong R

Preparing Video For Download...