1. 基本概念
Q1: 勾配ブースティングとは何か?
- 勾配ブースティング(Gradient Boosting)は、弱学習器(通常は決定木)を逐次的に構築し、前のモデルの誤差を補正するように学習する手法 です。
Q2: 勾配ブースティングとランダムフォレストの違いは?
- ランダムフォレストは複数の決定木を独立して学習し、最終予測を多数決や平均で決める。
- 勾配ブースティングは、各決定木が前のモデルの誤差を学習するように順番に追加される。
2. XGBoost / LightGBM のアルゴリズムの違い
Q3: XGBoost と LightGBM の違いを説明してください。
特徴 | XGBoost | LightGBM |
---|---|---|
木の成長 | 深さ優先(Depth-wise) | リーフ最適化(Leaf-wise) |
速度 | 遅め(正則化が強力) | 速い(並列処理が得意) |
メモリ使用量 | 高い | 低い |
カテゴリ変数処理 | One-hot エンコーディングが必要 | 直接処理可能 |
3. モデルの内部メカニズム
Q4: LightGBM で Leaf-wise の利点と欠点は?
- 利点: 木の成長をより効率的に進めることで 高速な学習が可能 。
- 欠点: 深い木ができやすく 過学習しやすい 。
Q5: XGBoost で使われる正則化手法は?
- L1 正則化(LASSO): 不要な特徴量をゼロにする。
- L2 正則化(Ridge): モデルの過学習を防ぐ。
4. 勾配ブースティングの最適化
Q6: XGBoost における Shrinkage(学習率)とは?
- 各決定木の影響を小さくし、徐々に収束することで過学習を防ぐ ための手法。
Q7: LightGBM での Histogram-based Algorithm とは?
- データをビン(ヒストグラム)に分割し、計算量を削減 することで学習速度を向上させる。
Q8: Early Stopping とは?
- 検証データのスコアが改善しなくなったら学習を打ち切る ことで過学習を防ぐ。
5. ハイパーパラメータの調整
Q9: 勾配ブースティングでチューニングが重要なパラメータは?
パラメータ | 役割 |
---|---|
learning_rate | 学習率(小さすぎると遅い、大きすぎると発散) |
num_leaves | 決定木のリーフ数(大きすぎると過学習) |
max_depth | 決定木の深さ(過学習を防ぐために制限) |
min_child_weight | 分割を許可する最小データ数(過学習を抑制) |
colsample_bytree | ランダムに特徴量を選択し過学習を抑制 |
Q10: XGBoost の learning_rate を小さくするときに考慮すべきことは?
- 学習率が小さいと収束が遅くなるため、
n_estimators
(決定木の数)を増やす 必要がある。
6. 具体的な実装
Q11: LightGBM で欠損値はどのように処理される?
- LightGBM は 自動的に欠損値を考慮して分割を行う ため、手動で埋める必要はない。
Q12: カテゴリ変数を LightGBM で直接処理できるのはなぜ?
- 決定木の分岐ルールを用いた最適なエンコーディング を自動で行うため。
7. 特徴量の解釈
Q13: Feature Importance の計算方法は?
- Gini importance(分岐での情報ゲインを集計)
- Permutation importance(特徴量をシャッフルしスコアを比較)
Q14: SHAP(Shapley Additive Explanations)とは?
- 各特徴量がモデルの予測に与える影響を定量的に評価 する手法。
8. 実務での活用
Q15: 勾配ブースティングが向いているタスクは?
- 構造化データ(表データ)の分類や回帰 に適している。
Q16: Deep Learning ではなく XGBoost / LightGBM を選ぶべき状況は?
- データが小さい(10万件以下)
- 特徴量エンジニアリングが重要
- 計算コストを抑えたい