ランダムフォレストモデル

Rによる次元削減

Matt Pickard

Owner, Pickard Predictives, LLC

ランダムフォレスト

  • アンサンブルモデル
    • 「集合知」アプローチ
  • 多数のランダム木の予測を集約
  • 相関の低いランダム木で誤差を低減
  • 過学習を回避
  • 高精度
  • 特徴量選択も実施

複数の決定木から成るアンサンブルと、その投票を最終結果に集約する図。

Rによる次元削減

ランダムフォレスト

異なる特徴量の部分集合で異なるサブツリーが生成される図。

Rによる次元削減

ランダムフォレストを学習

library(tidymodels)

rf <- rand_forest(mode = "classification", trees = 200) %>% set_engine("ranger", importance = "impurity")
rf_fit <- rf %>% fit(credit_score ~ ., data = train)
predict_df <- test %>% bind_cols(predict = predict(rf_fit, test))
Rによる次元削減

モデル評価

f_meas(predict_df, credit_score, .pred_class)
0.6895
Rによる次元削減

変数重要度

library(vip)

rf_fit %>% vip()

変数重要度の棒グラフ。

Rによる次元削減

特徴量マスク

top_features <- rf_fit %>% 
  vi(rank = TRUE) %>% 
  filter(Importance <= 10) %>% 
  pull(Variable)

top_features
 [1] "outstanding_debt"        "interest_rate"          
 [3] "delay_from_due_date"     "changed_credit_limit"   
 [5] "credit_history_months"   "num_credit_card"        
 [7] "monthly_balance"         "num_of_delayed_payment" 
 [9] "annual_income"           "amount_invested_monthly"
Rによる次元削減

データを削減

train_reduced <- train[top_features]
test_reduced <- test[top_features]
Rによる次元削減

性能

rf_fit <- rf %>% 
  fit(credit_score ~ ., data = train_reduced) 

predict_reduced_df <- test_reduced %>% bind_cols(predict = predict(rf_fit, test_reduced))
f_meas(predict_reduced_df, credit_score, .pred_class)
0.6738 

削減前モデルのFスコア:

0.6895 
Rによる次元削減

Ayo berlatih!

Rによる次元削減

Preparing Video For Download...