Trực quan hóa hiệu suất mô hình

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

David Svancer

Data Scientist

Vẽ ma trận nhầm lẫn

Heatmap với autoplot()

  • Truyền đối tượng ma trận nhầm lẫn vào autoplot()
  • Đặt type'heatmap'
  • Hiển thị trực quan các số đếm phổ biến nhất

 

conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>%

autoplot(type = 'heatmap')

Bản đồ nhiệt ma trận nhầm lẫn

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

Biểu đồ mosaic

Biểu đồ mosaic với autoplot()

  • Đặt type'mosaic'
  • Mỗi cột dọc biểu thị 100% giá trị kết quả thực trong cột
  • Hiển thị trực quan
    • sensitivity

 

conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>% 
  autoplot(type = 'mosaic')

Biểu đồ mosaic ma trận nhầm lẫn thanh sensitivity

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

Biểu đồ mosaic

Biểu đồ mosaic với autoplot()

  • Đặt type'mosaic'
  • Mỗi cột dọc biểu thị 100% giá trị kết quả thực trong cột
  • Hiển thị trực quan
    • sensitivity
    • specificity
conf_mat(leads_results,
         truth = purchased,
         estimate = .pred_class) %>% 
  autoplot(type = 'mosaic')

Biểu đồ mosaic ma trận nhầm lẫn thanh specificity

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

Ngưỡng xác suất

Ngưỡng xác suất mặc định trong phân loại nhị phân là 0.5

  • Nếu xác suất ước tính của lớp dương ≥ 0.5, dự đoán lớp dương

 

leads_results

  • Nếu .pred_yes ≥ 0.5 thì .pred_class được đặt là 'yes' bởi hàm predict() trong tidymodels
leads_results
# A tibble: 332 x 4
   purchased .pred_class .pred_yes .pred_no
   <fct>     <fct>           <dbl>    <dbl>
 1 no        no             0.134     0.866
 2 yes       yes            0.729     0.271
 3 no        no             0.133     0.867
 4 no        no             0.0916    0.908
 5 yes       yes            0.598     0.402
 6 no        no             0.128     0.872
 7 yes       no             0.112     0.888
 8 no        no             0.169     0.831
 9 no        no             0.158     0.842
10 yes       yes            0.520     0.480
# ... with 322 more rows
Mô hình hóa với tidymodels trong R

Khám phá hiệu suất theo ngưỡng

Mô hình phân loại hoạt động thế nào trên nhiều ngưỡng?

  • Ngưỡng xác suất duy nhất trong cột .pred_yes của kết quả tập kiểm tra
    • Tính specificity và sensitivity cho từng ngưỡng

 

threshold specificity sensitivity
0 0 1
0.11 0.01 0.98
0.15 0.05 0.97
... ... ...
0.84 0.89 0.08
0.87 0.94 0.02
0.91 0.99 0
1 1 0
Mô hình hóa với tidymodels trong R

Trực quan hóa hiệu suất theo ngưỡng

Đường cong ROC (receiver operating characteristic)

  • Dùng để trực quan hóa hiệu suất theo các ngưỡng xác suất

 

  • Sensitivity so với (1 - specificity) trên các ngưỡng duy nhất trong kết quả tập kiểm tra

Sensitivity so với 1 trừ specificity

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

Trực quan hóa hiệu suất theo ngưỡng

Đường cong ROC (receiver operating characteristic)

  • Dùng để trực quan hóa hiệu suất theo các ngưỡng xác suất

 

  • Sensitivity so với (1 - specificity) trên các ngưỡng duy nhất trong kết quả tập kiểm tra
    • Tỷ lệ đúng trong số dương tính thực sự so với tỷ lệ sai trong số âm tính thực sự

Đường cong ROC

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

Đường cong ROC

Hiệu suất tối ưu tại điểm (0, 1)

  • Lý tưởng: mô hình phân loại cho các điểm gần mép trên bên trái ở mọi ngưỡng

Đường cong ROC lý tưởng

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

Đường cong ROC

Hiệu suất tối ưu tại điểm (0, 1)

  • Lý tưởng: mô hình phân loại cho các điểm gần mép trên bên trái ở mọi ngưỡng

 

Hiệu suất kém

  • Sensitivity và (1 - specificity) bằng nhau ở mọi ngưỡng
    • Tương ứng với mô hình dự đoán như tung đồng xu công bằng ngẫu nhiên

Đường cong ROC hiệu suất kém

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

Tóm tắt đường cong ROC

Diện tích dưới đường cong ROC (ROC AUC) tóm tắt thông tin đường cong ROC của mô hình phân loại trong một con số

Cách hiểu hữu ích như điểm chữ cái cho hiệu suất phân loại

  • A - [0.9, 1]
  • B - [0.8, 0.9)
  • C - [0.7, 0.8)
  • D - [0.6, 0.7)
  • F - [0.5, 0.6)

Diện tích dưới đường cong ROC

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

Tính hiệu suất theo ngưỡng

Hàm roc_curve()

  • Nhận tibble kết quả làm đối số đầu tiên
  • Cột truth với nhãn thực
  • Cột xác suất ước tính cho lớp dương
    • .pred_yes trong tibble leads_results

 

  • Trả về tibble gồm specificity và sensitivity cho mọi ngưỡng duy nhất trong .pred_yes
leads_results %>% 
  roc_curve(truth = purchased, .pred_yes)
# A tibble: 331 x 3
   .threshold specificity sensitivity
        <dbl>       <dbl>       <dbl>
 1     -Inf       0             1    
 2     0.0871     0             1    
 3     0.0888     0.00472       1    
 4     0.0893     0.00943       1    
 5     0.0896     0.0142        1    
 6     0.0902     0.0142        0.992
 7     0.0916     0.0142        0.983
 8     0.0944     0.0189        0.983
# ... with 323 more rows
Mô hình hóa với tidymodels trong R

Vẽ đường cong ROC

Truyền kết quả của roc_curve() vào autoplot() sẽ trả về biểu đồ đường cong ROC

 

leads_results %>% 
  roc_curve(truth = purchased, .pred_yes) %>% 
  autoplot()

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

Tính ROC AUC

Hàm roc_auc() từ yardstick sẽ tính ROC AUC

  • Tibble kết quả mô hình
  • Cột truth
  • Cột xác suất ước tính cho lớp dương
roc_auc(leads_results,
        truth = purchased,
        .pred_yes)
# A tibble: 1 x 3
  .metric  .estimator .estimate
  <chr>      <chr>       <dbl>
1 roc_auc    binary      0.763
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...