クロスバリデーションの性能測定

Tidyverse で学ぶ Machine Learning

Dmitriy (Dima) Gorenshteyn

Lead Data Scientist, Memorial Sloan Kettering Cancer Center

性能測定

Tidyverse で学ぶ Machine Learning

性能測定 - 真値

Tidyverse で学ぶ Machine Learning

性能測定 - 真値

Tidyverse で学ぶ Machine Learning

性能測定 - 真値

Tidyverse で学ぶ Machine Learning

性能測定 - 予測

Tidyverse で学ぶ Machine Learning

性能測定 - 予測

Tidyverse で学ぶ Machine Learning

性能測定 - 予測

Tidyverse で学ぶ Machine Learning

性能測定

Tidyverse で学ぶ Machine Learning

平均絶対誤差

Tidyverse で学ぶ Machine Learning

性能測定に必要な要素

1) life_expectancy の実測値
2) life_expectancy の予測値
3) 1) と 2) を比較する指標

Tidyverse で学ぶ Machine Learning

1) 実測値の抽出

cv_prep_lm <- cv_models_lm %>% 
  mutate(validate_actual = map(validate, ~.x$life_expectancy))
Tidyverse で学ぶ Machine Learning

predict() と map2() 関数

predict(model, data)
map2(.x = model, .y = data, .f = ~predict(.x, .y))
Tidyverse で学ぶ Machine Learning

2) 予測値の準備

cv_prep_lm <- cv_eval_lm %>% 
  mutate(validate_actual = map(validate, ~.x$life_expectancy),
         validate_predicted = map2(model, validate, ~predict(.x, .y)))
Tidyverse で学ぶ Machine Learning

3) MAE の計算

library(Metrics)
cv_eval_lm <- cv_prep_lm %>% 
  mutate(validate_mae = map2_dbl(validate_actual, validate_predicted, 
                                ~mae(actual = .x, predicted = .y)))

cv_eval_lm
#  5-fold cross-validation 
# A tibble: 5 x 8
splits       id    train validate model validate_a. validate_p validate_mae
<S3: rsplit> Fold1 <tib. <tib.   <S3.   <dbl.       <dbl.       1.47
<S3: rsplit> Fold2 <tib. <tib.   <S3.   <dbl.       <dbl.       1.51
<S3: rsplit> Fold3 <tib. <tib.   <S3.   <dbl.       <dbl.       1.44
<S3: rsplit> Fold4 <tib. <tib.   <S3.   <dbl.       <dbl.       1.48
<S3: rsplit> Fold5 <tib. <tib.   <S3.   <dbl.       <dbl.       1.68
Tidyverse で学ぶ Machine Learning

練習しましょう!

Tidyverse で学ぶ Machine Learning

Preparing Video For Download...