機械学習の手法のひとつ、決定木。
そのアンサンブル法として、
1.バギングを使ったランダムフォレスト、
2.ブースティングを使った勾配ブースティング
2.ブースティングを使った勾配ブースティング
がある。
これらは回帰でも分類でも非常によく使われており、
最近は、勾配ブースティングのXGBoostが有名らしい。
ランダムフォレストが、
複数の決定木を並列で使用し、その多数決や平均を取るのに対し、
勾配ブースティングは、
複数の決定木を直列で使用し、
1つ前の決定木の誤りを次の決定木が修正するのを繰り返し、
非常に高い精度を出すという。
そこで、まずは、
『Python ではじめる機械学習』を参考に、
scikit-learnのGradientBoostingClassifierを使って、
勾配ブースティングを実装してみた。
さらに、
過学習対策を2通り試し、
決定木の枝刈りのほうが学習率をいじるより、
汎化性能が向上することを確かめた。
最後に
ディープラーニングと違って、
どの特徴量が重要かが可視化できるので、
それも見てみた。
次に、
いよいよXGBoostを試す。
チュートリアルが英語なので、
いろいろググってやってみたが、
うーむ、
コードの写経だけでは実感が湧かない。
実務でもよく使われるというXGBoost。
日本語の論文解説を見つけたので、
手強そうだがチャレンジして、理解を深めたい。