Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

XGBoost

XGBoostは、正則化された決定木を一つずつ追加する勾配ブースティングライブラリで、表形式データに最適な選択肢の一つです。仕組みをコードとともに解説します。

XGBoost(「YAMLはマークアップ言語ではない」のような再帰的頭字語)は、勾配ブースティングを用いた決定木のオープンソースライブラリであり、表形式データで最も広く使われているツールの1つです。Tianqi Chenがワシントン大学の研究プロジェクトとして開始し、2014年に公開しました。Carlos Guestrinと共著した2016年のKDD論文XGBoost: スケーラブルな木ブースティングシステムでは、正則化された目的関数とシステム設計について説明しています。DMLCコミュニティが保守するこのライブラリは、Python、R、JVM、Cから分類、回帰、ランキングを処理し、CPUとGPUで動作するほか、DaskやSparkを使ってスケールアウトできます。論文によると、2015年にKaggleのブログで公開されたコンペティション優勝ソリューション29件のうち17件で、XGBoostが使われていました。

XGBoostの仕組み#

XGBoostはアンサンブルを逐次構築します。定数の予測値から始め、ブースティングラウンドごとに1本の木を追加します。各木は、それまでの木が残した損失を減らすように学習します。最終的な予測値は各木の出力の合計であり、どの木も支配的にならないよう、各出力に学習率(eta、デフォルトは0.3)を乗じて縮小します。論文では、各木の構築方法を決める2つの考え方が示されています。

  • 2次目的関数: XGBoostは各行について、現在の予測値に対する損失の1次微分と2次微分、つまり勾配gとヘッセ行列hを計算します。勾配の合計がG、ヘッセ行列の合計がHとなる行を持つ葉には、重み-G / (H + λ)が設定されます。これは2次最適化手法で使われるニュートンステップと同じです。
  • 正則化された木: 目的関数には、葉ごとのペナルティγと葉の重みに対するL2ペナルティλが加わり、オプションでL1ペナルティαも加えられます。分割のゲイン½ [G_L²/(H_L + λ) + G_R²/(H_R + λ) − (G_L + G_R)²/(H_L + H_R + λ)] − γが正の場合にのみ分割が採用されるため、木の構築に正則化が組み込まれ、過学習が抑えられます。

木の深さには上限があり(max_depth、デフォルトは6)、grow_policy="lossguide"を設定して葉単位の成長に切り替えない限り、レベルごとに成長します。学習では通常、検証セットを使って早期停止を行います。

欠損値、速度、スケーラビリティ#

XGBoostのスパース性を考慮した分割探索では、欠損値補完のステップなしで、値が抜けている表形式データを学習できます。各分割で欠損値のある行を左、次に右へ送ることを試し、ゲインが高い方向をそのノードのデフォルト分岐として採用します。同じ仕組みにより、one-hotエンコーディングなどのスパース行列でも、保存されている要素だけを走査できます。この例では、scikit-learnの乳がんデータセットの全特徴量の30%を欠損させ、欠損をそのまま使って学習します。

import numpy as np
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# Hide 30% of all values; each split learns a default branch for missing ones
rng = np.random.default_rng(0)
X_train_nan = np.where(rng.random(X_train.shape) < 0.3, np.nan, X_train)
X_test_nan = np.where(rng.random(X_test.shape) < 0.3, np.nan, X_test)

for name, train, test in [("complete", X_train, X_test), ("30% missing", X_train_nan, X_test_nan)]:
    model = xgb.XGBClassifier(n_estimators=200, max_depth=4, learning_rate=0.1)
    model.fit(train, y_train)
    print(f"{name}: accuracy {model.score(test, y_test):.3f}")

完全なデータでのテスト精度は0.972、学習セットとテストセットの両方で値の30%が欠損している場合は0.951と出力されます。

速度面では、デフォルトのhistツリーメソッドが各特徴量を最大256個のビン(max_bin)に分割し、ビン境界で分割を探索します。これはLightGBMと同じ方式です。一方、exactはソート済みの値をすべて列挙します。device="cuda"を設定すると学習がNVIDIA GPU上で実行され、enable_categorical=Trueはカテゴリ列をネイティブに分割し、外部メモリーモードではRAMより大きなデータセットを学習できます。バージョン2.1以降、モデルはデフォルトでバイナリのUBJSON形式で保存されます。

  • LightGBM: Microsoftが2016年に公開したブースティングフレームワークです。デフォルトで葉単位に木を成長させ、勾配ベースの行サンプリングとスパース特徴量のバンドルを追加します。現在は両ライブラリともデフォルトでヒストグラムを使用し、ほとんどの技術を共有しています。
  • CatBoost: 対称木を構築し、順序付きターゲット統計量でカテゴリ特徴量をエンコードする、Yandexのブースティングライブラリです。
  • ランダムフォレスト: ブートストラップサンプルで深い木を個別に学習させて平均化するバギング手法です。分散を低減でき、チューニングもほとんど必要ありません。
  • ディープラーニング: 画像、音声、テキストなどの非構造化入力で標準的に使われており、ネットワークが生データから特徴量を学習します。特徴量を設計した表形式データでは、ブースティング木が今も標準的な比較対象です。また、TabPFNなどの表形式データ向け基盤モデルも、小規模データセットで競合するようになっています。

実際のアプリケーション#

  • 不正検出と信用リスク: 決済企業は金額、加盟店、場所、デバイス、アカウント履歴の特徴量から各取引をスコアリングします。これは中核的な予測モデリングのタスクであり、XGBoostの高速な推論はリアルタイムの判断に適しています。
  • 外観検査:製造品質システムでは、カメラデータとセンサーデータを組み合わせます。カメラ側の情報はUltralytics YOLO26の予測が提供します。result.summary()は、検出した各欠陥のクラス、信頼度、ボックス座標を返します。工場ではこれらを部品ごとに集計し、温度や圧力の読み取り値と結合して、故障を予測するXGBoostモデルの特徴量にできます。
  • ランキングとクリック予測: XGBRankerは、デフォルトでrank:ndcg目的関数を使って検索結果を並べ替えます。また、二値分類器で広告のクリック率を予測します。
  • コンペティションで優勝した課題: KDD論文では、2015年の優勝ソリューションの対象となった課題として、店舗の売上予測、高エネルギー物理学イベントの分類、マルウェアの分類、大規模オンライン講座の退学予測などを挙げています。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう