偏差-變異權衡

R 的樹狀模型機器學習

Sandro Raabe

Data Scientist

超參數

  • 由建模者設定
  • 例如:tree_depth
  • 查看文件!
?decision_tree

多個超參數

R 的樹狀模型機器學習

簡單模型

simple_spec <- decision_tree(tree_depth = 2) %>% 
    set_mode("regression")

simple_spec %>% fit(final_grade ~ .,
                    data = training_data)

複雜模型

complex_spec <- decision_tree(tree_depth = 15) %>% 
    set_mode("regression")

complex_spec %>% fit(final_grade ~ .,
                     data = training_data)

深度為 2 的樹

深度為 30 的樹

R 的樹狀模型機器學習

複雜模型-過度擬合-高變異

訓練集預測:表現不錯!

訓練集誤差小

mae(train_results, 
    estimate = .pred,
    truth = final_grade)
# A tibble: 1 x 3
  .metric  .estimate
1 mae          0.204

測試集預測:差很大!

測試集誤差大

mae(test_results, 
    estimate = .pred,
    truth = final_grade)
# A tibble: 1 x 3
  .metric  .estimate
1 mae          0.947
R 的樹狀模型機器學習

簡單模型-欠擬合-高偏差

訓練集與測試集都有「很大」誤差:

bind_rows(training = mae(train_results, estimate = .pred, truth = final_grade),
          test     = mae(test_results,  estimate = .pred, truth = final_grade),
          .id = "dataset")
# A tibble: 2 x 4
  dataset    .metric  .estimate
  <chr>      <chr>        <dbl>
1 training   mae          0.754
2 test       mae          0.844
R 的樹狀模型機器學習

偏差-變異權衡

偏差-變異權衡

 

  • 簡單模型 -> 高偏差
  • 複雜模型 -> 高變異
  • 偏差與變異之間的權衡
  • 把模型調在「最佳點」附近
R 的樹狀模型機器學習

偵測過度擬合

樣本外/CV:

collect_metrics(cv_fits)


# A tibble: 1 x 3
  .metric    mean     n 
1 mae       2.432     5
  • CV 誤差高
  • 過度擬合高變異
  • 降低複雜度!

樣本內:

mae(training_pred, 
    estimate = .pred, 
    truth = final_grade)
# A tibble: 1 x 2
  .metric  .estimate
1 mae          0.228
  • 訓練誤差小
R 的樹狀模型機器學習

偵測欠擬合

樣本內:

mae(training_pred, estimate = .pred, truth = final_grade)
# A tibble: 1 x 2
  .metric .estimate
  <chr>       <dbl>
1 mae         2.432
  • 樣本內/訓練誤差很大
  • 欠擬合高偏差
  • 提高複雜度!
R 的樹狀模型機器學習

來做權衡吧!

R 的樹狀模型機器學習

Preparing Video For Download...