Tinh chỉnh siêu tham số với caret

Tinh chỉnh siêu tham số trong R

Dr. Shirin Elsinghorst

Senior Data Scientist

Bộ dữ liệu cử tri từ bầu cử Mỹ 2016

  • Chia thành tập huấn luyện và kiểm tra
library(tidyverse)
glimpse(voters_train_data)
Observations: 6,692
Variables: 42
$ turnout16_2016       <chr> "Did not vote", "Did not vote", "Did not vote", "Did not vote", ...
$ RIGGED_SYSTEM_1_2016 <int> 2, 2, 3, 2, 2, 3, 3, 1, 2, 3, 4, 4, 4, 3, 1, 2, 2, 2, 3, 2, 1, 2, 3, 2, 1, ...
$ RIGGED_SYSTEM_2_2016 <int> 3, 3, 2, 2, 3, 3, 2, 2, 1, 2, 4, 2, 3, 2, 3, 4, 3, 2, 2, 2, 4, 1, 2, 2, 3, ...
$ RIGGED_SYSTEM_3_2016 <int> 1, 1, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 2, 3, 1, 3, 2, 1, 1, ...
$ RIGGED_SYSTEM_4_2016 <int> 2, 1, 2, 2, 2, 2, 2, 2, 1, 3, 3, 1, 3, 3, 1, 3, 3, 2, 1, 1, 1, 2, 1, 2, 2, ...
$ RIGGED_SYSTEM_5_2016 <int> 1, 2, 2, 2, 2, 3, 1, 1, 2, 3, 2, 2, 1, 3, 1, 1, 2, 2, 1, 2, 1, 2, 2, 2, 1, ...
$ RIGGED_SYSTEM_6_2016 <int> 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, ...
$ track_2016           <int> 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 1, 2, 1, 1, 2, 2, 3, 2, 2, 2, 2, 3, 2, 2, ...
...
Tinh chỉnh siêu tham số trong R

Huấn luyện thêm mô hình với caret

  • Tăng cường độ dốc ngẫu nhiên
library(caret)
library(tictoc)
fitControl <- trainControl(method = "repeatedcv", number = 3, repeats = 5)
tic()
set.seed(42)
gbm_model_voters <- train(turnout16_2016 ~ ., 
                   data = voters_train_data, 
                   method = "gbm", 
                   trControl = fitControl,
                   verbose = FALSE)
toc()
32.934 sec elapsed
Tinh chỉnh siêu tham số trong R

Huấn luyện thêm mô hình với caret

gbm_model_voters
Stochastic Gradient Boosting 
...
Kết quả lấy mẫu lại theo siêu tham số:
  interaction.depth  n.trees  Accuracy   Kappa        
  1                   50      0.9604603  -0.0001774346
 ...
Siêu tham số 'shrinkage' được giữ cố định ở 0.1
Siêu tham số 'n.minobsinnode' được giữ cố định ở 10

Accuracy được dùng để chọn mô hình tối ưu theo giá trị lớn nhất.
Giá trị cuối cùng: n.trees = 50,
interaction.depth = 1, shrinkage = 0.1 và n.minobsinnode = 10.
Tinh chỉnh siêu tham số trong R

Tìm kiếm lưới Cartesian với caret

  • Xác định lưới Cartesian các siêu tham số:
man_grid <-  expand.grid(n.trees = c(100, 200, 250), interaction.depth = c(1, 4, 6), 
                         shrinkage = 0.1, n.minobsinnode = 10)

fitControl <- trainControl(method = "repeatedcv", number = 3, repeats = 5) tic() set.seed(42) gbm_model_voters_grid <- train(turnout16_2016 ~ ., data = voters_train_data, method = "gbm", trControl = fitControl, verbose = FALSE, tuneGrid = man_grid) toc()
85.745 sec elapsed
Tinh chỉnh siêu tham số trong R

Tìm kiếm lưới Cartesian với caret

gbm_model_voters_grid
Stochastic Gradient Boosting 
...
Kết quả lấy mẫu lại theo siêu tham số:
  interaction.depth  n.trees  Accuracy   Kappa      
  1                  100      0.9603108  0.000912769
 ...
Siêu tham số 'shrinkage' được giữ cố định ở 0.1
Siêu tham số 'n.minobsinnode' được giữ cố định ở 10

Accuracy được dùng để chọn mô hình tối ưu theo giá trị lớn nhất.
Giá trị cuối cùng: n.trees = 100, 
interaction.depth = 1, shrinkage = 0.1 và n.minobsinnode = 10.
Tinh chỉnh siêu tham số trong R

Vẽ mô hình theo siêu tham số

plot(gbm_model_voters_grid)

plot(gbm_model_voters_grid, 
     metric = "Kappa", 
     plotType = "level")

Tinh chỉnh siêu tham số trong R

Tự thử ngay!

Tinh chỉnh siêu tham số trong R

Preparing Video For Download...