Mengestimasi kinerja dengan validasi silang

Pemodelan dengan tidymodels di R

David Svancer

Data Scientist

Data latih dan uji

 

Membuat data latih dan uji adalah langkah pertama dalam pemodelan

  • Mencegah overfitting
    • Data latih untuk menyesuaikan model
    • Data uji untuk evaluasi model

 

Kekurangan

  • Hanya satu estimasi kinerja model

 

Diagram partisi untuk membuat data latih dan uji

Pemodelan dengan tidymodels di R

Validasi silang K-fold

Teknik resampling untuk mengeksplorasi kinerja model

  • Memberikan estimasi kinerja sebanyak K selama proses pelatihan model

 

Partisi data menjadi data latih dan uji

Pemodelan dengan tidymodels di R

Validasi silang K-fold

Teknik resampling untuk mengeksplorasi kinerja model

  • Memberikan estimasi kinerja sebanyak K selama proses pelatihan model
  • Data latih dipartisi acak menjadi K set berukuran kira-kira sama
  • Fold digunakan untuk melakukan K iterasi pelatihan dan evaluasi model

 

Partisi data latih menjadi fold validasi silang

Pemodelan dengan tidymodels di R

Machine learning dengan validasi silang

Melakukan validasi silang 5-fold

  • Lima iterasi pelatihan dan evaluasi model

 

Iterasi pertama dari validasi silang 5-fold

Pemodelan dengan tidymodels di R

Machine learning dengan validasi silang

Melakukan validasi silang 5-fold

  • Lima iterasi pelatihan dan evaluasi model
  • Iterasi 1
    • Fold 1 untuk evaluasi model dan fold 2–5 untuk pelatihan

 

Iterasi pertama dari validasi silang 5-fold

Pemodelan dengan tidymodels di R

Machine learning dengan validasi silang

Melakukan validasi silang 5-fold

  • Lima iterasi pelatihan dan evaluasi model
  • Iterasi 1
    • Fold 1 untuk evaluasi model dan fold 2–5 untuk pelatihan
  • Iterasi 2
    • Fold 2 untuk evaluasi model

 

Iterasi kedua dari validasi silang 5-fold

Pemodelan dengan tidymodels di R

Machine learning dengan validasi silang

Melakukan validasi silang 5-fold

  • Lima iterasi pelatihan dan evaluasi model
  • Iterasi 1
    • Fold 1 untuk evaluasi model dan fold 2–5 untuk pelatihan
  • Iterasi 2
    • Fold 2 untuk evaluasi model

 

Total lima estimasi kinerja model

 

Iterasi kelima dari validasi silang 5-fold

Pemodelan dengan tidymodels di R

Membuat fold validasi silang

Fungsi vfold_cv()

  • Data latih
  • Jumlah fold, v
  • Variabel stratifikasi, strata
  • Jalankan set.seed() sebelum vfold_cv() untuk reprodusibilitas
  • splits
    • Kolom list berisi objek pemisahan data untuk membuat fold
set.seed(214)
leads_folds <- vfold_cv(leads_training,

v = 10,
strata = purchased)
leads_folds
#  10-fold cross-validation using stratification 
# A tibble: 10 x 2
   splits            id    
   <list>            <chr> 
 1 <split [896/100]> Fold01
 2 <split [896/100]> Fold02
 3 <split [896/100]> Fold03
 . ................  ......
 9 <split [897/99]>  Fold09
10 <split [897/99]>  Fold10
Pemodelan dengan tidymodels di R

Pelatihan model dengan validasi silang

Fungsi fit_resamples()

  • Melatih model parsnip atau objek workflow
  • Berikan fold validasi silang, resamples
  • Fungsi metrik kustom opsional, metrics
    • Bawaan: akurasi dan ROC AUC

 

Setiap metrik diestimasi 10 kali

  • Satu estimasi per fold
  • Rata-rata pada kolom mean
leads_rs_fit <- leads_wkfl %>%

fit_resamples(resamples = leads_folds,
metrics = leads_metrics)
leads_rs_fit %>% collect_metrics()
# A tibble: 3 x 5
  .metric .estimator  mean     n std_err
  <chr>   <chr>      <dbl> <int>   <dbl>
1 roc_auc binary     0.823    10  0.0147
2 sens    binary     0.786    10  0.0203
3 spec    binary     0.855    10  0.0159
Pemodelan dengan tidymodels di R

Hasil validasi silang terperinci

Fungsi collect_metrics()

  • Mengatur summarize = FALSE akan menampilkan semua estimasi metrik untuk setiap fold validasi silang
  • Total 30 kombinasi (3 metrik x 10 fold)
    • Kolom .metric mengidentifikasi metrik
    • Kolom .estimate memberi nilai estimasi per fold
rs_metrics <- leads_rs_fit %>% 
  collect_metrics(summarize = FALSE)

rs_metrics
# A tibble: 30 x 4
   id     .metric .estimator .estimate
   <chr>  <chr>   <chr>          <dbl>
 1 Fold01 sens    binary         0.861
 2 Fold01 spec    binary         0.891
 3 Fold01 roc_auc binary         0.885
 4 Fold02 sens    binary         0.778
 5 Fold02 spec    binary         0.969
 6 Fold02 roc_auc binary         0.885
# ... with 24 more rows
Pemodelan dengan tidymodels di R

Merangkum hasil validasi silang

Fungsi collect_metrics() mengembalikan tibble

  • Hasil dapat diringkas dengan dplyr
    • Mulai dari rs_metrics
    • Kelompokkan berdasarkan nilai .metric
    • Hitung ringkasan dengan summarize()
rs_metrics %>%

group_by(.metric) %>%
summarize(min = min(.estimate), median = median(.estimate), max = max(.estimate), mean = mean(.estimate), sd = sd(.estimate))
# A tibble: 3 x 6
 .metric   min  median   max   mean     sd
  <chr>   <dbl>  <dbl>  <dbl>  <dbl>   <dbl>
1 roc_auc 0.758  0.806  0.885  0.823   0.0466
2 sens    0.667  0.792  0.861  0.786   0.0642
3 spec    0.810  0.843  0.969  0.855   0.0502
Pemodelan dengan tidymodels di R

Metodologi validasi silang

Model yang dilatih dengan fit_resamples() tidak dapat memberi prediksi pada data baru

  • Fungsi predict() tidak menerima objek resample

Tujuan fit_resample()

  • Menjelajah dan membandingkan profil kinerja berbagai tipe model
  • Pilih tipe model terbaik dan fokuskan upaya pelatihan
predict(leads_rs_fit,
        new_data = leads_test)

Error in UseMethod("predict") : 
  no applicable method for 'predict' applied to 
  an object of class 
  "c('resample_results', 
      'tune_results',  
      'tbl_df', 
      'tbl', 'data.frame')"
Pemodelan dengan tidymodels di R

Ayo berlatih!

Pemodelan dengan tidymodels di R

Preparing Video For Download...