XGBoost
XGBoost[2]は、 C++、Java、Python[3]、R[4]、Julia[5]、Perl [6]、Scala用の正則化勾配ブースティングフレームワークを提供するオープンソースソフトウェアライブラリ。 Linux、Windows[7]、macOSで動作する[8]。 プロジェクトの説明によると、「スケーラブルでポータブルな分散型勾配ブースティング(GBM、GBRT、GBDT)ライブラリ」を提供することを目的としている。 単一のマシンだけでなく、分散処理フレームワークであるApache Hadoop、Apache Spark、Apache Flink、Daskでも動作する[9][10]。
開発元 | The XGBoost Contributors |
---|---|
初版 | 2014年3月27日 |
最新版 | |
リポジトリ | |
プログラミング 言語 | C++ |
対応OS | |
種別 | 機械学習 |
ライセンス | Apache License 2.0 |
公式サイト |
xgboost |
機械学習コンテストの優勝チームの多くが選択するアルゴリズムとして、人気と注目を集めている[11]。
歴史
編集XGBoostは、Distrubuted (Deep) Machine Learning Community (DMLC) グループの一員であるTianqi Chen氏の研究プロジェクトとしてスタートした[12]。当初は、libsvmの設定ファイルで設定可能なターミナル・アプリケーションだった。 Higgs Machine Learning Challenge で優勝した際に使用されたことで、機械学習コンテストの世界で広く知られるようになった。その後すぐにPythonとRのパッケージが作られ、Java、Scala、Julia、Perl、その他の言語のパッケージ実装ができた。これにより、XGBoost はより多くの開発者に利用されるようになり、Kaggleコミュニティでも人気を博し、多くのコンペティションで利用されている[11]。
すぐに他の多くのパッケージと統合され、それぞれのコミュニティでの使用が容易になった。 Pythonユーザーにはscikit-learn、Rユーザーにはcaretパッケージと統合された。 また、抽象化されたRabit[13]とXGBoost4Jを使って、Apache Spark、 Apache Hadoop、Apache FLINK[14] などのデータフローフレームワークに統合することもできる。XGBoostは、OpenCL for FPGAでも利用できる[15] 。 XGBoostの効率的でスケーラブルな実装は、Tianqi ChenとCarlos Guestrinによって発表された[16]。
特徴
編集XGBoostは、他の勾配ブースティングアルゴリズムとは異なる、以下の様な特徴を持っている[17][18][19]。
- 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 m = 1 to M:
- 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年
関連項目
編集脚注
編集- ^ “Release 2.1.2” (23 10月 2024). 27 10月 2024閲覧。
- ^ “GitHub project webpage”. 2021年10月6日閲覧。
- ^ “Python Package Index PYPI: xgboost”. 2016年8月1日閲覧。
- ^ “CRAN package xgboost”. 2016年8月1日閲覧。
- ^ “Julia package listing xgboost”. 2016年8月1日閲覧。
- ^ “CPAN module AI::XGBoost”. 2020年2月9日閲覧。
- ^ “Installing XGBoost for Anaconda in Windows”. 2016年8月1日閲覧。
- ^ “Installing XGBoost on Mac OSX”. 2016年8月1日閲覧。
- ^ “Dask Homepage”. 2021年10月6日閲覧。
- ^ “Distributed XGBoost with Dask — xgboost 1.5.0-dev documentation”. xgboost.readthedocs.io. 2021年7月15日閲覧。
- ^ a b “XGBoost - ML winning solutions (incomplete list)”. 2016年8月1日閲覧。
- ^ “Story and Lessons behind the evolution of XGBoost”. 2016年8月1日閲覧。
- ^ “Rabit - Reliable Allreduce and Broadcast Interface”. 2016年8月1日閲覧。
- ^ “XGBoost4J”. 2016年8月1日閲覧。
- ^ “XGBoost on FPGAs”. 2019年8月1日閲覧。
- ^ Chen, Tianqi; Guestrin, Carlos (13 August 2016). Krishnapuram, Balaji; Shah, Mohak; Smola, Alexander J.; Aggarwal, Charu C. (eds.). XGBoost: A Scalable Tree Boosting System. the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. San Francisco, California, USA: Association for Computing Machinery. pp. 785–794. doi:10.1145/2939672.2939785。
- ^ Gandhi (2019年5月24日). “Gradient Boosting and XGBoost” (英語). Medium. 2020年1月4日閲覧。
- ^ “Boosting algorithm: XGBoost” (英語). Towards Data Science (2017年5月14日). 2020年1月4日閲覧。
- ^ “Tree Boosting With XGBoost – Why Does XGBoost Win "Every" Machine Learning Competition?” (英語). Synced (2017年10月22日). 2020年1月4日閲覧。
- ^ “John Chambers Award Previous Winners”. 2016年8月1日閲覧。
- ^ “HEP meets ML Award”. 2016年8月1日閲覧。