古典的機械学習

CatBoost きゃっとぶーすと

CatBoostカテゴリ変数勾配ブースティングYandex前処理不要
CatBoostについて教えて

簡単に言うとこんな感じ!

「カテゴリ変数の処理が超得意な」勾配ブースティングだよ。Yandex(ロシアのGoogle)が開発した。「都道府県」「商品カテゴリ」みたいな文字データをそのまま渡せて、面倒なエンコーディング作業が不要。データ前処理の工数を減らせるのが最大の強みなんだ!


CatBoostとは

CatBoost(Categorical Boosting)は、2017年にYandexが公開した勾配ブースティング実装です。「Cat」はCategoricalの略で、カテゴリ変数の自動処理が最大の特徴です。


他のBoostingとの比較

比較項目XGBoostLightGBMCatBoost
カテゴリ変数要エンコーディングネイティブ対応ネイティブ対応・最強
前処理の手間多い少ない最少
速度速い最速やや遅い
過学習への耐性普通普通強い(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〜現在:カテゴリ変数が多いビジネスデータでの強さが認知
  • 現在:金融・小売・推薦システムなどカテゴリリッチなデータで特に採用

関連用語