XGBoost [ 2 ] (eXtreme Gradient Boosting) は、 C++、Java、Python [ 3 ]、R [ 4 ]、Julia [ 5 ]、Perl [ 6 ]、Scala用の正則化勾配ブースティング フレームワークを提供するオープン ソース ソフトウェア ライブラリです。Linux、Microsoft Windows [ 7 ]、macOS [ 8 ]で動作します。プロジェクトの説明によると、「スケーラブルでポータブルな分散型勾配ブースティング (GBM、GBRT、GBDT) ライブラリ」を提供することを目指しています。単一のマシンだけでなく、分散処理フレームワークであるApache Hadoop、Apache Spark、Apache Flink、Dask [ 9 ] [ 10 ]でも動作します。
XGBoostは、機械学習コンテストで優勝した多くのチームが採用したアルゴリズムとして、2010年代半ばに大きな人気と注目を集めました。[ 11 ]
XGBoost は、ワシントン大学の分散 (深層) 機械学習コミュニティ (DMLC) グループの一員としてTianqi Chen [ 12 ]による研究プロジェクトとして始まりました。当初は、 libsvm設定ファイルを使用して設定できるターミナル アプリケーションとして始まりました。Higgs機械学習チャレンジの優勝ソリューションで使用されたことで、機械学習コンペティション界で広く知られるようになりました。その後すぐに Python と R パッケージが作成され、現在では XGBoost は Java、Scala、Julia、Perlなどの言語のパッケージ実装を持っています。これにより、ライブラリはより多くの開発者に届き、 Kaggleコミュニティでの人気に貢献し、多数のコンペティションで使用されています。[ 11 ]
すぐに他の多くのパッケージと統合され、それぞれのコミュニティで使いやすくなりました。現在では、Pythonユーザー向けにはscikit-learnと、 Rユーザー向けには caret パッケージと統合されています。また、抽象化された Rabit [ 13 ]と XGBoost4J [ 14 ]を使用して、 Apache Spark、Apache Hadoop、Apache Flinkなどのデータ フロー フレームワークにも統合できます。XGBoostは、 FPGA用のOpenCLでも利用可能です。[ 15 ] Tianqi Chen とCarlos Guestrinによって、効率的でスケーラブルな XGBoost の実装が公開されています。[ 16 ]
XGBoostモデルは単一の決定木よりも高い精度を達成することが多いものの、決定木本来の解釈可能性を犠牲にする。例えば、決定木が決定を下すまでの過程を追うのは簡単で自明だが、数百、数千もの決定木の過程を追うのははるかに困難である。
XGBoost が他の勾配ブースティング アルゴリズムと異なる主な特徴は次のとおりです。[ 17 ] [ 18 ] [ 16 ]
XGBoostは関数空間でニュートン・ラフソン法として動作しますが、勾配ブースティングは関数空間で勾配降下法として動作します。XGBoostでは、損失関数に2次テイラー近似を使用してニュートン・ラフソン法との関連性を持たせています。
一般的な非正則化XGBoostアルゴリズムは次のとおりです。
入力: トレーニングセット微分可能な損失関数学習能力の低い生徒多数学習率。
アルゴリズム:
XGBoostには、その機能やパフォーマンスに影響を与えるように指定できるパラメータがあります。いくつかのパラメータには次のものがあります。[ 19 ]