St_Hakky’s blog

Data Science / Human Resources / Web Applicationについて書きます

Boosting(ブースティング)について調べたのでまとめる:AdaBoost / Gradient Boosting / XGBoostなど

こんにちは。

最近、アンサンブル学習について勉強しているんですが、この記事ではBoostingについて調べたことを書きます。以下がその他のアンサンブル学習とか全般的な話とかについて書いた記事なので、バギングとか知りたい人は以下の記事をどうぞ。

st-hakky.hatenablog.com

◯Boostingとは

Boostingとは、弱学習器をboostして、そのアルゴリズムよりも強い学習アルゴリズムをつくることです.ブースティングの一般的な考え方は、学習器を連続的に学習させて、より精度が向上するように修正していくことです。

学習した予測器をより良いものにするためには、単純に間違えたものにより注意を払って次の学習を行えばいいと考えられます(以下の図参照)。

f:id:St_Hakky:20170728171209j:plain
引用:Géron, Aurélien. "Hands on Machine Learning with scikit-learn and Tensorflow." (2017).

これが概観ですが、それぞれの手法について見ていくのが良いと思うので、早速見ていこうと思います。ぶっちゃけ、ここでグダグダ外観を説明するよりも、以下の記事を読むほうが良いと思いますので、メモがてら紹介いたします。

○PAC learning(確率的近似学習)

[工事中]

○AdaBoost

長くなったので、次の記事に分けました。

st-hakky.hatenablog.com

○Gradient Boosting / Gradient Tree Boosting

長くなったので、次の記事に分けました。

st-hakky.hatenablog.com

○XGBoost

[工事中]

○LightGBM

LightGBMの詳細な解説記事みたいなのは理解するためにも今書いているんですが、以下の記事が概要をつかむためにはいい感じでした。

簡単に言うと、Microsoftが開発しているGradient Boostingを高速に実行できるようにしたライブラリです。XGBoostよりも数倍高速っていう結果もあるみたいです。

ライブラリの構成とか、特徴とかは後で紹介するXGBoostにとてもよく似ているんですが、アルゴリズムが違うみたいですね。下のDMTKっていうツールの中の1つです。

LightGBMのGithubやドキュメントは以下から見れます。

○DART

[工事中]

○catboost

[工事中]