tidymodelsによる線形回帰

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

David Svancer

Data Scientist

parsnipによるモデル適合

parsnipによるモデル適合

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

線形回帰モデル

ctyを予測変数としてhwyを予測する  

$$hwy = \beta_{0} + \beta_{1} cty$$

モデルパラメータ

  • $ \beta_{0} $ は切片
  • $ \beta_{1} $ は傾き

 

高速道路と市街地の燃費

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

線形回帰モデル

ctyを予測変数としてhwyを予測する  

$$hwy = \beta_{0} + \beta_{1} cty$$

モデルパラメータ

  • $ \beta_{0} $ は切片
  • $ \beta_{1} $ は傾き

 

訓練データからの推定パラメータ

$$\small hwy = 0.77 + 1.35(cty)$$

 

線形回帰直線付きのmpgデータ

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

モデル式

parsnipのモデル式

  • 列の役割を割り当てるために使用する
    • 目的変数
    • 予測変数

一般形

outcome ~ predictor_1 + predictor_2 + ...

短縮表記

outcome ~ .

ctyを予測変数としてhwyを予測する

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

parsnipパッケージ

Rにおけるモデル仕様の統一構文

  1. モデルタイプを指定する

    • 線形回帰などのモデルタイプ
  2. エンジンを指定する

    • エンジンごとに異なるRパッケージを使用
  3. モードを指定する

    • 回帰または分類

Parsnipパッケージ

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

線形回帰モデルの適合

 

parsnipでモデル仕様を定義する

  • linear_reg()

 

lm_modelfit()関数に渡す

  • モデル式を指定する
  • モデル適合に使用するdata

 

lm_model <- linear_reg() %>%

set_engine('lm') %>%
set_mode('regression')

 

lm_fit <- lm_model %>% 
  fit(hwy ~ cty, data = mpg_training)
R での tidymodels によるモデリング

推定パラメータの取得

 

tidy()関数

  • 学習済みのparsnipモデルオブジェクトを受け取る
  • モデルの要約tibbleを作成する
  • term列とestimate列が推定パラメータを提供する

 

tidy(lm_fit)
# A tibble: 2 x 5
  term        estimate std.error statistic  p.value
  <chr>          <dbl>     <dbl>     <dbl>    <dbl>
1 (Intercept)    0.769    0.528       1.46 1.47e- 1
2 cty            1.35     0.0305     44.2  6.32e-97
R での tidymodels によるモデリング

予測の実行

学習済みparsnipモデルをpredict()関数に渡す

  • new_dataで予測対象のデータセットを指定する

 

predict()の標準化された出力

  1. tibbleを返す
  2. new_data入力と同じ行順を保持する
  3. 予測列を.predと命名する
hwy_predictions <- lm_fit %>% 
  predict(new_data = mpg_test)

hwy_predictions
# A tibble: 57 x 1
   .pred
   <dbl>
 1  25.0
 2  27.7
 3  25.0
 4  25.0
 5  22.3
# ... with 47 more rows
R での tidymodels によるモデリング

テストデータへの予測値の追加

bind_cols()関数

  • 2つ以上のtibbleを列方向に結合する
  • モデル結果のtibble作成に有用

手順

  • mpg_testからhwyctyを選択する
  • bind_cols()に渡して予測列を追加する
mpg_test_results <- mpg_test %>%
  select(hwy, cty) %>%

bind_cols(hwy_predictions) 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 によるモデリング

モデルを作成しましょう!

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

Preparing Video For Download...