Upgrade to Pro — share decks privately, control downloads, hide ads and more …

フルスクラッチで最強の決定木を実装する

 フルスクラッチで最強の決定木を実装する

Transcript

  1. 1 はじめに • ⼤きな⽬標 ◦ 最強の決定⽊をフルスクラッチで作る! • 前回まで ◦ ランダムフォレストの実装を⾏った

    ▪ https://speakerdeck.com/nearme_tech/jue-ding-mu-woshi-zhuang-suru • 今回のスコープ ◦ ⾃作ランダムフォレストの性能評価および改善ポイントの考察
  2. 2 性能評価⽅法 • Kaggleの常設の⼊⾨コンテスト「Spaceship Titanic」のデータセットを使う ◦ https://www.kaggle.com/competitions/spaceship-titanic • Spaceship Titanicの主な特徴

    ◦ チュートリアル問題として有名な「Titanic」の派⽣コンテスト ◦ 本家「Titanic」よりデータ数が多いが,⽋損値も多い • ⾃作RandomForestで学習して性能を評価する ◦ ⾃作RandomForestの実装コード ▪ https://github.com/kakky-hacker/algorithm_sandbox ◦ ⽐較対象は,scikit-learnのRandomForestClassifier ▪ https://github.com/scikit-learn/scikit-learn/tree/main
  3. 4 考察 scikit-learnのRandomForestにaccuracyで 0.6% ほど負けてしまった。 ただ,アルゴリズムの実装⾃体は問題なくできてそう。 結果に対する考察 • ⾃作RandomForestは計算速度が圧倒的に遅かった(数100倍レベル) ◦

    よって,⽊の数や深さをそこまで拡張できなかったので若⼲精度が下がった可能性 今後の展望 • 計算速度を上げる⼯夫をする ◦ 計算が重い処理の特定および改善 • Borutaなどの特徴量選択アルゴリズムを導⼊ ◦ 実装済みではあるが,現状,計算速度がネックとなって,使えていない • 勾配ブースティングを導⼊ ◦ ブースティングの仕組みを理解し実装