仕事やプライベートで調べたことのメモ書きなど(@札幌)

仕事やプライベートで調べたこと、興味ある事のメモ書きです。2016年4月から札幌で働いてます。※このブログは個人によるもので、団体を代表するものではありません。

勾配ブースティング (Gradient Boosting) について勉強する

はじめに

機械学習での回帰や分類問題に適用されるアルゴリズムで、勾配ブースティング (Gradient Boosting) とやらがなかなかよいらしいというのをいろんなところで見かけたのでちょっとお勉強。基本的には同じっぽいので、以下では回帰問題を前提にして考える。

なお、以下の記事が非常にわかりやすかったので、以下の記事を読んで理解できる方は私の記事を見る必要はありません。
woodyzootopia.github.io

勾配ブースティングを理解する上でのキーワード

  • アンサンブル学習
  • 回帰木

の二つ。

アンサンブル学習

アンサンブル学習は、複数の(あまり精度のよくない)学習器を組み合わせることで、全体として高い精度の学習器を作り出す仕組みのことです。詳細は以下などをご覧ください。

www.codexa.net

アンサンブル学習には、その組み合わせ方によりいくつかの手法があるようです。勾配ブースティングはその名の通り、アンサンブル学習の中のブースティングという手法を用います。ブースティングではまずある学習器で学習をやった後、残った誤差に対して、新たな学習を行う、というのが基本的な流れ。
勾配ブースティングでは、誤差の勾配にフィットさせるような学習器を作った後に、勾配降下法的な流れで繰り返し学習させていくようです。

回帰木

勾配ブースティングの基本的な基本的な考え方では、使用する学習器は任意のものを使うことができるようですが、ほとんどのケースで回帰木を使うようです。
回帰木の説明も世の中にたくさんありますが、以下のようなPythonコードを参考にするとわかりやすいかもしれませんね。

https://fisproject.jp/2016/07/regression-tree-in-python/


で、上記2点を踏まえた上で、以下を読んでみると非常に面白いですヨ

woodyzootopia.github.io