XGBoostとは

XGBoostとは

XGBoost (eXtreme Gradient Boosting) は、勾配降下法を利用する教師あり学習ブースティングアルゴリズム、勾配ブースティング決定木を使用する、オープンソースの分散型機械学習ライブラリです。スピードと効率、そして大規模なデータセットで適切に拡張できる点が強みです。

ワシントン大学のTianqi Chen氏によって開発されたXGBoostは、同じ一般的なフレームワークによる勾配ブースティングの高度な実装です。残余を足し合わせることで、弱い学習器を強い学習器に結合します。このライブラリーは、C++、Python、R、Java、Scala、Juliaで使用できます。1

決定木とブースティングの比較

決定木は 機械学習 における 分類 または 回帰 タスクに使用されます。階層的なツリー構造を使用し、内部ノードは特徴を表し、枝は決定ルール­を表し、各葉ノードはデータ・セットの結果を表します。

決定木は、オーバーフィッティング(過学習)する傾向があるため、ブースティングなどのアンサンブル手法は、多くの場合、より堅牢なモデルを構築するために使用されます。ブースティングは、複数の個別の弱い決定木(ランダムな偶然よりもわずかに優れたパフォーマンスを発揮するモデル)を組み合わせて、強学習器(strong learnear)を形成します。それぞれの弱学習器(weak learner)は、前のモデルによって生じたエラーを修正するように順番にトレーニングされます。何百回も繰り返すことで、弱学習器は強学習器に変換されます。

ランダム・フォレストとブースティング・アルゴリズムはどちらも、個々の学習ツリーを使用して予測パフォーマンスを向上させる、一般的なアンサンブル学習の手法です。ランダム・フォレストは、バギング(Bootstrap Aggregation)の概念に基づいており、各ツリーを個別にトレーニングして予測を組み合わせます。一方、ブースティング・アルゴリズムは、弱い学習器を順番にトレーニングして、前のモデルの間違いを修正するように順番にトレーニングします。

ブースティング - 逐次アンサンブル学習

勾配ブースティング決定木

勾配ブースティング決定木は、勾配降下法を使用するブースティング・アルゴリズムの一種です。他のブースティング手法と同様に、予測を行うための弱い学習器からスタートします。勾配ブースティングの最初の決定木は、ベース学習器と呼ばれます。次に、ベース学習器の間違いに基づいて追加的に新しいツリーが作成されます。続いて、アルゴリズムは各ツリーの予測残差を計算し、モデルの予測が現実からどの程度かけ離れていたかを判断します。残余とは、モデルの予測値と実際の値の差です。次に、残差が集計されて、損失関数に基づいてモデルにスコアが付けられます。

機械学習では、損失関数を使用してモデルのパフォーマンスを測定します。勾配ブースティング決定木の勾配は、勾配降下法を指しています。勾配降下法は、新しいモデルをトレーニングする際の損失を最小限に抑える(つまり、モデルのパフォーマンスを向上させる)ために使用されます。勾配降下法は、機械学習問題の損失関数を最小化するために使用される一般的な最適化アルゴリズムです。損失関数の例としては、回帰問題の平均二乗誤差や平均絶対誤差、分類問題の交差エントロピー誤差、特定のユースケースやデータ・セットに合わせて開発されたカスタムの損失関数などがあります。

XGBoostの特徴

scikit-learn2の勾配ブースティング・パッケージと比較した、PythonのXGBoostの一部の機能について説明します。

  • 並列および分散コンピューティング:ライブラリーは、データをブロックと呼ばれるメモリ内に格納します。個別のブロックはマシン間で分散したり、Out-of-Coreコンピューティングを使用して、外部メモリに保存したりできます。XGBoostでは、計算を高速化するためにコンピューターのクラスター全体に分散トレーニングを行うなど、より高度なユースケースも可能になります。XGBoostは、Apache Spark、Dask、Kubernetesなどのツールを使用して分散モードで実装することもできます。

  • キャッシュを考慮したプリフェッチ・アルゴリズム:XGBoostは、キャッシュを意識したプリフェッチ・アルゴリズムを使用しており、大規模なデータセットの実行時間を短縮するのに役立ちます。このライブラリーは、1台のマシンで他の既存のフレームワークよりも10倍以上高速に動作します。そのスピードにより、XGBoostは少ないリソースで何十億もの例を処理することができ、スケーラブルなツリー・ブースティング・システムとなっています。

  • 正則化の組み込み: XGBoostには、通常の勾配ブースティングとは異なり、学習目的の一部として 正則化 が組み込まれています。また、ハイパーパラメーターのチューニングによって、データを正則化することもできます。XGBoostに組み込まれた正則化を活用することで、このライブラリは通常のscikit-learnの勾配ブースティング・パッケージよりも良い結果を出すことも可能です。

  • 欠損値の扱い: XGBoostは、スパース・データにスパース対応のアルゴリズムを使用します。データ・セットに欠損値がある場合、データ・ポイントはデフォルトの方向に分類され、アルゴリズムは欠損値を処理するための最適な方向を学習します。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

XGBoostの仕組み

このセクションでは、XGBoostパッケージの使用方法、XGBoostツリー・ブースターのハイパーパラメーターの選択方法、XGBoostと他のブースティング方法との比較、いくつかのユースケースについて説明します。

データを分割し、DMatrix形式に変換する

すでにデータに対して探索的データ分析を実行している場合は、トレーニング・データ・セットとテスト・データ・セットの間でデータを分割する作業を続行します。次に、データをXGBoostが想定するDMatrix形式に変換します。3 DMatrixは、メモリー効率とトレーニング速度に最適化されたXGBoostの内部データ構造です4

モデルの生成と評価

次に、XGBoostモデルをインスタンス化し、ユースケースに応じて、「object」ハイパーパラメーターでどの目的関数を使うかを選択します。たとえば、マルチ・クラス分類タスクがある場合は、目標を「multi:softmax」に設定する必要があります。5 あるいは、バイナリ分類の問題がある場合は、ロジスティック回帰目的「binary:logistic」を使用できます。これで、トレーニング・セットを使用してモデルをトレーニングし、テスト・セットとして取っておいたデータ・セットの分類を予測できます。予測値をテスト・セットの実際の値と比較することにより、モデルのパフォーマンスを評価します。精度、正確さ、再現率、f-1スコアなどの指標を使用してモデルを評価できます。また、混同行列を使用して、真陽性、真陰性、偽陽性、偽陰性を視覚化することもできます。

ハイパーパラメーター・チューニング

次に、ハイパーパラメーターの組み合わせを反復して、モデルのパフォーマンスを向上させることをお勧めします。ハイパーパラメーター・チューニングとは、機械学習アルゴリズムのハイパーパラメーターを最適化するプロセスのことです。最適なハイパーパラメーターは、グリッド検索と相互検証の手法を使用して見つけることができます。この手法では、可能なハイパーパラメーター調整のディクショナリを調べます。

XGBoostの勾配ブースティング決定木用に選択されたハイパーパラメーター

XGBoostで勾配ブースティングされた決定木のチューニングに利用できるいくつかのハイパーパラメータについて説明します。

  • 学習率 (「ステップサイズ」または「縮小率」とも呼ばれる)は、最も重要な勾配ブースティングのハイパーパラメータです。XGBoost ライブラリでは、「eta」と呼ばれ、0~1までの数値で、デフォルトでは0.3です。6 学習率は、ブースティング・アルゴリズムが各反復から学習する速度を決定します。etaの値を小さくすると、アンサンブル内の各ツリーの寄与が小さくなるため、学習が遅くなり、オーバーフィッティングを防ぐことができます。逆に、etaの値が高いと学習は高速化されますが、慎重に調整されないと、オーバーフィッティングにつながる可能性があります。

  • n_estimatorsのハイパーパラメータは、アンサンブルで構築するツリーの数を指定します。各ブースティング・ラウンドでは、アンサンブルに新しいツリーが追加され、モデルは徐々に前のツリーによって作られたエラーを修正するように学習します。N_estimatorsはモデルの複雑さを指示し、学習時間と未知のデータに対するモデルの汎化能力の両方に影響を与えます。n_estimatorsの値を大きくすると、モデルがデータのより複雑なパターンを捉えることができるようになるため、一般的にモデルの複雑さが増します。しかし、ツリーを増やしすぎると、オーバーフィッティングになる可能性があります。一般的には、n_estimatorが増えると、学習率は減ります。

  • Gamma(ラグランジュ乗数または最小損失削減パラメーターとも呼ばれます)は、ツリーの葉ノードをさらに分割するために必要な最小損失削減量を制御します。値が小さいほど、XGBoostは早く停止しますが、最適な回答が見つからない可能性があります。一方、値が大きいほど、XGBoostはより長くトレーニングを継続し、より良い回答を見つける可能性がありますが、オーバーフィッティングのリスクが高くなります。Gammaには上限がありません。XGBoostのデフォルトは0で、10を超える値はすべて高いと見なされます。

  • Max_depthは、ブースティング・プロセスの各ツリーがトレーニング中にどれだけ深く成長できるかを表します。ツリーの深さは、根ノードから葉ノードまでのレベルまたは分割の数を指します。この値を増やすと、モデルがより複雑になり、オーバーフィッティングの可能性が高まります。XGBoostでは、デフォルトのmax_depthは6であり、これはモデル内の各ツリーが最大6レベルまで成長することが許可されていることを意味します。
オフィスでミーティングをするビジネスチーム

IBMお客様事例

お客様のビジネス課題(顧客満足度の向上、営業力強化、コスト削減、業務改善、セキュリティー強化、システム運用管理の改善、グローバル展開、社会貢献など)を解決した多岐にわたる事例のご紹介です。

XGBoostと他のブースティング・アルゴリズムの比較

XGBoostは、多く利用されているオープンソースのブースティング・アルゴリズムのうちの1つです。このセクションでは、XGBoostを他の3つのブースティング・フレームワークと比較します。

XGBoostとAdaBoostの比較

AdaBoostは、1995年にYoav FreundとRobert Schapireによって発明された初期のブースティング・アルゴリズムです。7 AdaBoostでは、予測が難しいデータポイントに大きな影響を与える重み付けシステムを通じて、誤った予測にさらに重点が置かれています。まず、データ・セット内の各データ・ポイントに特定の重みが割り当てられます。弱い学習器が例を正しく予測すると、例の重みが減ります。しかし、学習器が例を間違えると、そのデータ・ポイントの重みが大きくなります。新しいツリーが作成されると、その重みは前の学習器の誤分類に基づいて決まります。学習器の数が増えるにつれて、予測しやすいサンプルは将来の学習器にはあまり使用されなくなり、予測が難しいデータ・ポイントはより目立つように重み付けされます。勾配ブースティングとXGBoostは、その精度と速度により、AdaBoostのより強力な代替手段となる傾向があります。

XGBoostとCatBoostの比較

CatBoostは、もう1つの勾配ブースティング・フレームワークです。2017年にYandexによって開発され、前処理を必要とせずにカテゴリー別の特徴を処理することに特化しており、一般的に、広範なハイパーパラメーター調整を実行する必要なく、すぐに使用できる優れたパフォーマンスを発揮します。8 XGBoostと同様に、CatBoostには欠損データを処理するためのサポートが組み込まれています。CatBoost は、カテゴリーの特徴が多いデータ・セットに特に役立ちます。Yandexによると、このフレームワークは検索、レコメンデーション・システム、パーソナル・アシスタント、自動運転車、天気予報、その他のタスクに使用されています。

XGBoostとLightGBMの比較

LightGBM(Light Gradient Boosting Machine)は、ここで確認する最後の勾配ブースティング・アルゴリズムです。LightGBMはMicrosoftによって開発され、2016年に最初にリリースされました。9 ほとんどの決定木の学習アルゴリズムが深さ方向にツリーを成長させるのに対し、LightGBMは葉ごとにツリーの成長戦略を使用します。10 XGBoostと同様に、LightGBMはモデル・トレーニングの速度と精度が高く、大規模なデータ・セットで優れたパフォーマンスを発揮します。

XGBoostの応用例

XGBoostと勾配ブースティング決定木は、次のようなさまざまなデータサイエンス用途に使用されています。

  • ランク付けの学習:XGBoostアルゴリズムの最も一般的なユースケースの1つは、ランク付けです。情報検索において、ランク付けのための学習の目標は、関連性によって順序付けされたコンテンツをユーザーに提供することです。XGBoostでは、XGBRankerはLambdaMARTアルゴリズムをベースにしています。 11

  • 広告のクリック率予測:研究者はXGBoostで学習させたモデルを使って、10日間のクリック率データからオンライン広告のクリック頻度を割り出しました。この調査の目標は、オンライン広告の効果を測定し、どの広告が効果的かを特定することでした 12

  • 店舗の売上予測: この論文で45か所のWalmartの店舗の売上がXGBoostモデルを使用して予測されたように、XGBoostは予測モデリングに使用できます。 13

  • マルウェアの分類: コシツェ工科大学のエンジニアは、XGBoost分類器を使用して、マルウェアを正確に分類することに成功しました。 14

  • Kaggleコンペティション:XGBoost は、DMLC(Distributed(Deep)Machine Learning Community)ページに記載されているように、Kaggleコンペティションで人気のある受賞アルゴリズムであり、XGBoost をエントリーに使用した最近のKaggleコンペティションの受賞者のリストが掲載されています。15
関連ソリューション
IBM watsonx.ai

AI開発者向けの次世代エンタープライズ・スタジオであるIBM watsonx.aiを使用して、生成AI、基盤モデル、機械学習機能をトレーニング、検証、チューニング、導入しましょう。わずかなデータとわずかな時間でAIアプリケーションを構築できます。

watsonx.aiをご覧ください。
人工知能ソリューション

業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。

AIソリューションはこちら
AIコンサルティングとサービス

AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。

AIサービスはこちら
次のステップ

AI開発ライフサイクル全体にわたる機能にワンストップでアクセスできます。使いやすいインターフェース、ワークフロー、業界標準のAPIやSDKを利用して、強力なAIソリューションを構築できます。

watsonx.aiの詳細はこちら デモを予約