XGBoost

提供: testwiki
ナビゲーションに移動 検索に移動

テンプレート:Infobox Software

XGBoost[1]は、 C++JavaPython[2]R[3]Julia[4]Perl [5]Scala用の正則化勾配ブースティングフレームワークを提供するオープンソースソフトウェアライブラリ。 LinuxWindows[6]macOSで動作する[7]。 プロジェクトの説明によると、「スケーラブルでポータブルな分散型勾配ブースティング(GBM、GBRT、GBDT)ライブラリ」を提供することを目的としている。 単一のマシンだけでなく、分散処理フレームワークであるApache HadoopApache Spark、Apache Flink、Daskでも動作する[8][9]

機械学習コンテストの優勝チームの多くが選択するアルゴリズムとして、人気と注目を集めている[10]

同様に勾配ブースティングに基づくアルゴリズムとして、LightGBMCatBoostが存在する。

歴史

XGBoostは、Distrubuted (Deep) Machine Learning Community (DMLC) グループの一員であるTianqi Chen氏の研究プロジェクトとしてスタートした[11]。当初は、libsvmの設定ファイルで設定可能なターミナル・アプリケーションだった。 Higgs Machine Learning Challenge で優勝した際に使用されたことで、機械学習コンテストの世界で広く知られるようになった。その後すぐにPythonとRのパッケージが作られ、JavaScala、Julia、Perl、その他の言語のパッケージ実装ができた。これにより、XGBoost はより多くの開発者に利用されるようになり、Kaggleコミュニティでも人気を博し、多くのコンペティションで利用されている[10]

すぐに他の多くのパッケージと統合され、それぞれのコミュニティでの使用が容易になった。 Pythonユーザーにはscikit-learnRユーザーにはcaretパッケージと統合された。 また、抽象化されたRabit[12]とXGBoost4Jを使って、Apache SparkApache 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 {(xi,yi)}i=1N, a differentiable loss function L(y,F(x)), a number of weak learners M and a learning rate α.

Algorithm:

  1. Initialize model with a constant value:
    f^(0)(x)=argminθi=1NL(yi,θ).
  2. For テンプレート:Mvar = 1 to テンプレート:Mvar:
    1. Compute the 'gradients' and 'hessians':
      g^m(xi)=[L(yi,f(xi))f(xi)]f(x)=f^(m1)(x).
      h^m(xi)=[2L(yi,f(xi))f(xi)2]f(x)=f^(m1)(x).
    2. Fit a base learner (or weak learner, e.g. tree) using the training set {xi,g^m(xi)h^m(xi)}i=1N by solving the optimization problem below:
      ϕ^m=argminϕΦi=1N12h^m(xi)[g^m(xi)h^m(xi)ϕ(xi)]2.
      f^m(x)=αϕ^m(x).
    3. Update the model:
      f^(m)(x)=f^(m1)(x)+f^m(x).
  3. Output f^(x)=f^(M)(x)=m=0Mf^m(x).

テンプレート:枠の終わり

2006年
  • ジョン・チェンバース賞[19]
  • High Energy Physics Meets Machine Learning Award(HEP Meets ML[20]

関連項目

脚注

テンプレート:Reflist

外部リンク