公開日:2024年5月9日
寄稿者: Eda Kavlakoglu、Erika Russi
XGBoost(eXtreme Gradient Boosting)は、勾配降下法による教師ありブースティング・アルゴリズムである勾配ブースティング決定木を使用した、分散型のオープンソース機械学習ライブラリーです。スピードと効率、そして大規模なデータ・セットで適切に拡張できる点が強みです。
ワシントン大学のTianqi Chen氏によって開発されたXGBoostは、同じ一般的なフレームワークによる勾配ブースティングの高度な実装です。残余を足し合わせることで、弱い学習器を強い学習器に結合します。このライブラリーは、C++、Python、R、Java、Scala、Juliaで使用できます。1
決定木は、機械学習における分類または回帰タスクに使用されます。階層的なツリー構造を使用し、内部ノードは特徴を表し、枝は決定ルールを表し、各葉ノードはデータ・セットの結果を表します。
決定木は、オーバーフィッティング(過学習)する傾向があるため、ブースティングなどのアンサンブル手法は、多くの場合、より堅牢なモデルを構築するために使用されます。ブースティングは、複数の個別の弱い決定木(ランダムな偶然よりもわずかに優れたパフォーマンスを発揮するモデル)を組み合わせて、強力な学習器を形成します。それぞれの弱い学習器は、前のモデルによって生じたエラーを修正するように順番にトレーニングされます。何百回も繰り返すことで、弱い学習器は強い学習器に変換されます。
ランダム・フォレストとブースティング・アルゴリズムはどちらも、個々の学習ツリーを使用して予測パフォーマンスを向上させる、一般的なアンサンブル学習の手法です。ランダム・フォレストは、バギング(Bootstrap Aggregation)の概念に基づいており、各ツリーを個別にトレーニングして予測を組み合わせます。一方、ブースティング・アルゴリズムは、弱い学習器を順番にトレーニングして、前のモデルの間違いを修正するように順番にトレーニングします。
勾配ブースティング決定木は、勾配降下法を使用するブースティング・アルゴリズムの一種です。他のブースティング手法と同様に、予測を行うための弱い学習器からスタートします。勾配ブースティングの最初の決定木は、ベース学習器と呼ばれます。次に、ベース学習器の間違いに基づいて追加的に新しいツリーが作成されます。続いて、アルゴリズムは各ツリーの予測残差を計算し、モデルの予測が現実からどの程度かけ離れていたかを判断します。残余とは、モデルの予測値と実際の値の差です。次に、残差が集計されて、損失関数に基づいてモデルにスコアが付けられます。
機械学習では、損失関数を使用してモデルのパフォーマンスを測定します。勾配ブースティング決定木の勾配は、勾配降下法を指しています。勾配降下法は、新しいモデルをトレーニングする際の損失を最小限に抑える(つまり、モデルのパフォーマンスを向上させる)ために使用されます。勾配降下法は、機械学習問題の損失関数を最小化するために使用される一般的な最適化アルゴリズムです。損失関数の例としては、回帰問題の平均二乗誤差や平均絶対誤差、分類問題の交差エントロピー誤差、特定のユースケースやデータ・セットに合わせて開発されたカスタムの損失関数などがあります。
特にAIガバナンスやリスク管理ソリューションの欠如など、AI導入の障壁について学びましょう。
責任あるAIワークフローに関する電子ブックに登録する
scikit-learn2の勾配ブースティング・パッケージと比較した、PythonのXGBoostの一部の機能について説明します。
このセクションでは、XGBoostパッケージの使用方法、XGBoostツリー・ブースターのハイパーパラメーターの選択方法、XGBoostと他のブースティング方法との比較、いくつかのユースケースについて説明します。
次に、XGBoostモデルをインスタンス化し、ユースケースに応じて、「object」ハイパーパラメーターでどの目的関数を使うかを選択します。たとえば、マルチ・クラス分類タスクがある場合は、目標を「multi:softmax」に設定する必要があります。5 あるいは、バイナリ分類の問題がある場合は、ロジスティック回帰目的「binary:logistic」を使用できます。これで、トレーニング・セットを使用してモデルをトレーニングし、テスト・セットとして取っておいたデータ・セットの分類を予測できます。予測値をテスト・セットの実際の値と比較することにより、モデルのパフォーマンスを評価します。精度、正確さ、再現率、f-1スコアなどの指標を使用してモデルを評価できます。また、混同行列を使用して、真陽性、真陰性、偽陽性、偽陰性を視覚化することもできます。
次に、ハイパーパラメーターの組み合わせを反復して、モデルのパフォーマンスを向上させることをお勧めします。ハイパーパラメーター・チューニングとは、機械学習アルゴリズムのハイパーパラメーターを最適化するプロセスのことです。最適なハイパーパラメーターは、グリッド検索と相互検証の手法を使用して見つけることができます。この手法では、可能なハイパーパラメーターの組み合わせのディクショナリを調べます。
XGBoostで勾配ブースティングされた決定木のチューニングに利用できるいくつかのハイパーパラメータについて説明します。
XGBoostアルゴリズムを使用して分類タスクを実行するチュートリアルをご覧ください。
XGBoostは、多く利用されているオープンソースのブースティング・アルゴリズムのうちの1つです。このセクションでは、XGBoostを他の3つのブースティング・フレームワークと比較します。
AdaBoostは、1995年にYoav FreundとRobert Schapireによって発明された初期のブースティング・アルゴリズムです。7 AdaBoostでは、予測が難しいデータポイントに大きな影響を与える重み付けシステムを通じて、誤った予測にさらに重点が置かれています。まず、データ・セット内の各データ・ポイントに特定の重みが割り当てられます。弱い学習器が例を正しく予測すると、例の重みが減ります。しかし、学習器が例を間違えると、そのデータ・ポイントの重みが大きくなります。新しいツリーが作成されると、その重みは前の学習器の誤分類に基づいて決まります。学習器の数が増えるにつれて、予測しやすいサンプルは将来の学習器にはあまり使用されなくなり、予測が難しいデータ・ポイントはより目立つように重み付けされます。勾配ブースティングとXGBoostは、その精度と速度により、AdaBoostのより強力な代替手段となる傾向があります。
CatBoostは、もう1つの勾配ブースティング・フレームワークです。2017年にYandexによって開発され、前処理を必要とせずにカテゴリー別の特徴を処理することに特化しており、一般的に、広範なハイパーパラメーター調整を実行する必要なく、すぐに使用できる優れたパフォーマンスを発揮します。8 XGBoostと同様に、CatBoostには欠損データを処理するためのサポートが組み込まれています。CatBoost は、カテゴリーの特徴が多いデータ・セットに特に役立ちます。Yandexによると、このフレームワークは検索、レコメンデーション・システム、パーソナル・アシスタント、自動運転車、天気予報、その他のタスクに使用されています。
XGBoostと勾配ブースティング決定木は、次のようなさまざまなデータサイエンス用途に使用されています。
1 "Scalable and Flexible Gradient Boosting," https://xgboost.ai/ (ibm.com外部へのリンク)
2 Tianqi Chen and Carlos Guestrin, "XGBoost: A Scalable Tree Boosting System," University of Washington, 10 June 2016, https://arxiv.org/pdf/1603.02754(ibm.com外部へのリンク)
3 "XGBoost Python Package Introduction, Data Interface," https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface (ibm.com外部へのリンク)
4 "XGBoost API Reference, Core Data Structure," https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core (ibm.com外部へのリンク)
5 "XGBoost Parameters, Learning Task Parameters," https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters (ibm.com外部へのリンク)
6 "XGBoost Parameters for Tree Booster," https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster (ibm.com外部へのリンク)
7 Yoav Freund and Robert E. Schapire, "A decision-theoretic generalization of on-line learning and an application to boosting," Journal of Computer and System Sciences, Vol. 55, pp. 119–139, August 1997.
8 "CatBoost is a high-performance open source library for gradient boosting on decision trees," https://catboost.ai/ (ibm.com外部へのリンク)
9 Qi Meng, Guolin Ke, Taifeng Wang, Wei Chen, Qiwei Ye, Zhi-Ming Ma and Tie-Yan Liu, "A Communication-Efficient Parallel Algorithm for Decision Tree," Peking University, Microsoft Research and Chinese Academy of Mathematics and Systems Science, 4 November 2016, https://arxiv.org/pdf/1611.01276 (ibm.com外部へのリンク)
10 "LightGBM Features, Leaf-wise (Best-first) Tree Growth," https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth (ibm.com外部へのリンク)
11 "XGBoost Tutorials, Learning to Rank Overview," https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview (ibm.com外部へのリンク)
12 AlAli Moneera, AlQahtani Maram, AlJuried Azizah, Taghareed AlOnizan, Dalia Alboqaytah, Nida Aslam and Irfan Ullah Khan, "Click through Rate Effectiveness Prediction on Mobile Ads Using Extreme Gradient Boosting," College of Computer Science and Information Technology, Imam Abdulrahman bin Faisal University, 12 September 2020, https://www.techscience.com/cmc/v66n2/40673/html (ibm.com外部へのリンク)
13 Yetunde Faith Akande, Joyce Idowu, Abhavya Gautam, Sanjay Misra, Oluwatobi Noah Akande and Ranjan Kumar Behera, "Application of Xgboost Algorithm for Sales Forecasting Using Walmart Dataset," Landmark University, Ladoke Akintola University of Technology, Brandan University, Covenant University and XIM University, June 2022, https://www.researchgate.net/publication/361549465_Application_of_XGBoost_Algorithm_for_Sales_Forecasting_Using_Walmart_Dataset (ibm.com外部へのリンク)
14 Jakub Palša, Norbert Ádám, Ján Hurtuk, Eva Chovancová, Branislav Madoš, Martin Chovanec and Stanislav Kocan, "MLMD—A Malware-Detecting Antivirus Tool Based on the XGBoost Machine Learning Algorithm," MDPI.com Journal of Applied Sciences, Vol 12, 6672, 1 July 2022, https://www.mdpi.com/2076-3417/12/13/6672 (ibm.com外部へのリンク)
15 "Distributed (Deep) Machine Learning Community XGBoost Machine Learning Challenge Winning Solutions," https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions (ibm.com外部へのリンク)