モデル性能の評価

R での tidymodels によるモデリング

David Svancer

Data Scientist

yardstick関数の入力

すべての yardstick 関数はモデル結果のtibbleを必要とする

  • 真の目的変数の列
    • mpgデータでは hwy
  • 予測値の列
    • .pred
mpg_test_results
# A tibble: 57 x 3
     hwy   cty .pred
   <int> <int> <dbl>
 1    29    18  25.0
 2    31    20  27.7
 3    27    18  25.0
 4    26    18  25.0
 5    25    16  22.3
# ... with 47 more rows
R での tidymodels によるモデリング

二乗平均平方根誤差(RMSE)

RMSEは平均予測誤差を推定する

  • yardstickrmse() で計算
    • モデル結果のtibbleを渡す
    • truth は真の値の列
    • estimate は予測値の列
mpg_test_results %>% 
  rmse(truth = hwy, estimate = .pred)
# A tibble: 1 x 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 rmse    standard        1.93
R での tidymodels によるモデリング

R二乗指標

実測値と予測値の相関の二乗を測る指標

  • 決定係数とも呼ばれる
  • 0〜1の範囲
    • すべての予測が真の値と一致するとR二乗は1
  • yardstickrsq() で計算
mpg_test_results %>% 
  rsq(truth = hwy, estimate = .pred)
# A tibble: 1 x 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 rsq     standard       0.904
R での tidymodels によるモデリング

R二乗プロット

決定係数(R二乗)の可視化

  • 予測値と真の値の比較
  • 直線 y = x
    • R二乗が1を表す
  • モデル性能の問題点を発見するために使用
    • 非線形パターン
    • 予測が悪い領域

MpgモデルのR二乗プロット

R での tidymodels によるモデリング

R二乗プロットの描画

ggplot2でR二乗プロットを作成

  • モデル結果のtibble
  • geom_point()
  • geom_abline()
  • coord_obs_pred()
ggplot(mpg_test_results, aes(x = hwy, y = .pred)) +

geom_point() +
geom_abline(color = 'blue', linetype = 2) +
coord_obs_pred() + labs(title = 'R-Squared Plot', y = 'Predicted Highway MPG', x = 'Actual Highway MPG')

MpgモデルのR二乗プロット

R での tidymodels によるモデリング

モデル当てはめの効率化

last_fit() 関数

  • モデル仕様、モデル式、データ分割オブジェクトを受け取る
  • 実行内容:
    1. 学習用とテスト用データを作成
    2. 学習データにモデルを当てる
    3. テストデータで指標と予測を算出
    4. 結果を含むオブジェクトを返す
lm_last_fit <- lm_model %>% 
  last_fit(hwy ~ cty, 
           split = mpg_split)
R での tidymodels によるモデリング

指標の収集

collect_metrics() 関数

  • last_fit() の結果を受け取り、テストデータで得た性能指標のtibbleを返す
  • 回帰モデルのデフォルト指標
    • RMSE
    • R二乗
lm_last_fit %>% 
  collect_metrics()
# A tibble: 2 x 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 rmse    standard       1.93 
2 rsq     standard       0.904
R での tidymodels によるモデリング

予測の収集

collect_predictions() 関数

  • last_fit() の結果を受け取り、テストデータの予測を含むtibbleを返す
    • 予測列名は .pred
    • 目的変数と行ID列も含む
lm_last_fit %>% 
  collect_predictions()
# A tibble: 57 x 4
   id               .pred  .row   hwy
   <chr>            <dbl> <int> <int>
 1 train/test split  25.0     1    29
 2 train/test split  27.7     3    31
 3 train/test split  25.0     7    27
 4 train/test split  25.0     8    26
 5 train/test split  22.3     9    25
# ... with 47 more rows
R での tidymodels によるモデリング

モデルを評価してみましょう!

R での tidymodels によるモデリング

Preparing Video For Download...