XGBoost
XGBoost[1]は、 C++、Java、Python[2]、R[3]、Julia[4]、Perl [5]、Scala用の正則化勾配ブースティングフレームワークを提供するオープンソースソフトウェアライブラリ。 Linux、Windows[6]、macOSで動作する[7]。 プロジェクトの説明によると、「スケーラブルでポータブルな分散型勾配ブースティング(GBM、GBRT、GBDT)ライブラリ」を提供することを目的としている。 単一のマシンだけでなく、分散処理フレームワークであるApache Hadoop、Apache Spark、Apache Flink、Daskでも動作する[8][9]。
機械学習コンテストの優勝チームの多くが選択するアルゴリズムとして、人気と注目を集めている[10]。
同様に勾配ブースティングに基づくアルゴリズムとして、LightGBMとCatBoostが存在する。
歴史
XGBoostは、Distrubuted (Deep) Machine Learning Community (DMLC) グループの一員であるTianqi Chen氏の研究プロジェクトとしてスタートした[11]。当初は、libsvmの設定ファイルで設定可能なターミナル・アプリケーションだった。 Higgs Machine Learning Challenge で優勝した際に使用されたことで、機械学習コンテストの世界で広く知られるようになった。その後すぐにPythonとRのパッケージが作られ、Java、Scala、Julia、Perl、その他の言語のパッケージ実装ができた。これにより、XGBoost はより多くの開発者に利用されるようになり、Kaggleコミュニティでも人気を博し、多くのコンペティションで利用されている[10]。
すぐに他の多くのパッケージと統合され、それぞれのコミュニティでの使用が容易になった。 Pythonユーザーにはscikit-learn、Rユーザーにはcaretパッケージと統合された。 また、抽象化されたRabit[12]とXGBoost4Jを使って、Apache Spark、 Apache Hadoop、Apache FLINK[13] などのデータフローフレームワークに統合することもできる。XGBoostは、OpenCL for FPGAでも利用できる[14] 。 XGBoostの効率的でスケーラブルな実装は、Tianqi ChenとCarlos Guestrinによって発表された[15]。
特徴
XGBoostは、他の勾配ブースティングアルゴリズムとは異なる、以下の様な特徴を持っている[16][17][18]。
- Clever penalization of trees
- A proportional shrinking of leaf nodes
- Newton Boosting
- Extra randomization parameter
- Implementation on single, distributed systems and out-of-core computation
- Automatic Feature selection
アルゴリズム
XGBoostは、関数空間でニュートンラフソンとして動作する。関数空間で勾配降下法として機能する勾配ブースティングとは異なり、損失関数に2次テイラー近似を使用してニュートンラフソン法との関連性を持たせている。
一般的な非正則化 XGBoost アルゴリズムは次の通り。テンプレート:枠の始まり Input: training set , a differentiable loss function , a number of weak learners and a learning rate .
Algorithm:
- Initialize model with a constant value:
- For テンプレート:Mvar = 1 to テンプレート:Mvar:
- Compute the 'gradients' and 'hessians':
- Fit a base learner (or weak learner, e.g. tree) using the training set by solving the optimization problem below:
- Update the model:
- Compute the 'gradients' and 'hessians':
- Output
賞
- 2006年
関連項目
脚注
外部リンク
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ 10.0 10.1 テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite conference
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web