okpy

Pythonエンジニア兼テックリーダーが、多くのプロジェクトとチーム運営から得た実践的な知識を共有するブログです。

Mastering XGBoost: Boost Your Machine Learning Skills

Python xgboost ライブラリ完全ガイド

xgboost は、勾配ブースティング(Gradient Boosting)アルゴリズムを高速・高精度に実装したライブラリです。Kaggle などの機械学習コンペティションでも頻繁に使用されており、分類・回帰タスクで高い性能を発揮します。本記事では、Python での xgboost の使い方を日本語で詳しく紹介します。

1. xgboost の概要

  • 勾配ブースティング(Gradient Boosting)法をベースとしたモデル。
  • 並列学習、欠損値対応、クロスバリデーションなどを標準搭載。
  • sklearn API とネイティブ API の両方に対応。

インストール方法

pip install xgboost

2. 主な機能と使用例

(1) ライブラリとデータセットの読み込み

import xgboost as xgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

(2) モデルの作成と学習(sklearn API

model = xgb.XGBClassifier(use_label_encoder=False, eval_metric='mlogloss')
model.fit(X_train, y_train)

(3) 予測と精度評価

y_pred = model.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

(4) 特徴量の重要度の可視化

import matplotlib.pyplot as plt
xgb.plot_importance(model)
plt.show()

(5) ハイパーパラメータの指定

model = xgb.XGBClassifier(max_depth=3, learning_rate=0.1, n_estimators=100, use_label_encoder=False, eval_metric='mlogloss')
model.fit(X_train, y_train)

(6) クロスバリデーション(xgb.cv)

dtrain = xgb.DMatrix(X_train, label=y_train)
params = {'objective': 'multi:softmax', 'num_class': 3}
cv_results = xgb.cv(params, dtrain, num_boost_round=10, nfold=3, metrics="mlogloss", seed=42)
print(cv_results)

(7) DMatrix を使ったネイティブ API

dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test)

params = {
    'objective': 'multi:softmax',
    'num_class': 3,
    'max_depth': 3,
    'eta': 0.1
}
model_native = xgb.train(params, dtrain, num_boost_round=50)
y_pred_native = model_native.predict(dtest)

(8) モデルの保存と読み込み

model.save_model("xgb_model.json")
loaded_model = xgb.XGBClassifier()
loaded_model.load_model("xgb_model.json")

(9) モデルの SHAP 値可視化(特徴量の寄与)

import shap
explainer = shap.Explainer(model)
shap_values = explainer(X_test)
shap.plots.beeswarm(shap_values)

(10) 欠損値を含むデータの処理

import numpy as np
X_train[0][0] = np.nan  # 欠損値を入れても自動処理される
model.fit(X_train, y_train)

3. xgboost の主な機能まとめ

機能 説明
XGBClassifier / XGBRegressor sklearn 互換のモデルクラス
DMatrix 高速処理のためのデータ構造
cv クロスバリデーションの実行
plot_importance 特徴量の重要度を視覚化
SHAP 解釈可能性の高いモデル分析

まとめ

xgboost は、高速かつ高精度なブースティング手法として、多くの現場で採用されています。分類・回帰・ランキングなど幅広いタスクに対応しており、特に構造化データに強みがあります。精度向上を目指すプロジェクトにはぜひ活用してみてください!