CatBoost きゃっとぶーすと
CatBoostカテゴリ変数勾配ブースティングYandex前処理不要
CatBoostについて教えて
簡単に言うとこんな感じ!
「カテゴリ変数の処理が超得意な」勾配ブースティングだよ。Yandex(ロシアのGoogle)が開発した。「都道府県」「商品カテゴリ」みたいな文字データをそのまま渡せて、面倒なエンコーディング作業が不要。データ前処理の工数を減らせるのが最大の強みなんだ!
CatBoostとは
CatBoost(Categorical Boosting)は、2017年にYandexが公開した勾配ブースティング実装です。「Cat」はCategoricalの略で、カテゴリ変数の自動処理が最大の特徴です。
他のBoostingとの比較
| 比較項目 | XGBoost | LightGBM | CatBoost |
|---|---|---|---|
| カテゴリ変数 | 要エンコーディング | ネイティブ対応 | ネイティブ対応・最強 |
| 前処理の手間 | 多い | 少ない | 最少 |
| 速度 | 速い | 最速 | やや遅い |
| 過学習への耐性 | 普通 | 普通 | 強い(Ordered Boosting) |
CatBoostのカテゴリ変数処理
通常のGBMでは「東京=0、大阪=1、名古屋=2」とラベルエンコードすると誤った順序関係を学習します。CatBoostはOrdered Target Statisticsという手法で、情報漏洩なしに高品質なエンコーディングを自動実施します。
import catboost as cb
model = cb.CatBoostClassifier(
cat_features=['city', 'product_type', 'job'], # 指定するだけ
iterations=1000,
verbose=0
)
model.fit(X_train, y_train)
Ordered Boosting
通常のブースティングは「全データで学習したモデルで同じデータの残差を計算」するため、バイアスが生じます。CatBoostはOrdered Boosting(時系列風の学習)でこれを防ぎ、過学習に強いモデルを作ります。
歴史と背景
- 2017年:Yandexが論文発表・オープンソース公開
- 2018〜現在:カテゴリ変数が多いビジネスデータでの強さが認知
- 現在:金融・小売・推薦システムなどカテゴリリッチなデータで特に採用
関連用語
- 勾配ブースティング — CatBoostの理論的基盤
- XGBoost — CatBoostの比較対象
- LightGBM — CatBoostの比較対象
- カテゴリ変数エンコーディング — CatBoostが自動化している処理
- ターゲットエンコーディング — CatBoostの内部処理の考え方