【Kaggle】CatBoostの公式ドキュメントを実行してみた

はじめに

こんにちは、がんがんです。

ひょんなことからKaggleの勉強を始めました。
Kaggleの本をみているとブースティング系が使われていることが多いんだなということが分かりました。
そこで、今回はCatBoostについて公式ドキュメントを参考にしながら試していきたと思います。

目次

公式ドキュメント

https://catboost.ai/docs/concepts/python-quickstart.html

環境

今回はGoogle Colabを使用しています。

インストール

まずはライブラリをインストールします。

pip install catboost

STEP1:Regression

回帰問題のケースです。

参考

catboost.ai

コード

from catboost import CatBoostRegressor

#  data init
train_data = [[1, 4, 5, 6],
              [4, 5, 6, 7],
              [30, 40, 50, 60]]

eval_data = [[2, 4, 6, 8],
             [1, 4, 50, 60]]

train_labels = [10, 20, 30]

#  model init
model = CatBoostRegressor(
    iterations=2,
    learning_rate=1,
    depth=2
)

#  model fit
model.fit(train_data, train_labels)

#  prediction
preds = model.predict(eval_data)

print(preds)

実行結果

0:   learn: 6.1237244    total: 222us    remaining: 222us
1:  learn: 4.5927933    total: 347us    remaining: 0us
[15.625 18.125]

STEP2:Binary Classification

2値分類のケースです。

参考

catboost.ai

コード

from catboost import CatBoostClassifier

#  data init
cat_features = [0, 1]
train_data = [["a", "b", 1, 4, 5, 6],
              ["a", "b", 4, 5, 6, 7],
              ["c", "d", 30, 40, 50, 60]]
train_labels = [1, 1, -1]
eval_data = [["a", "b", 2, 4, 6, 8],
             ["a", "d",1, 4, 50, 60]]

#  model init
#  iterations:学習epoch
model = CatBoostClassifier(iterations=2,
                           learning_rate=1,
                           depth=2)

#  model fit
model.fit(train_data, train_labels, cat_features)

#  model predict
preds_class = model.predict(eval_data)
preds_proba = model.predict_proba(eval_data)
preds_raw = model.predict(eval_data, prediction_type="RawFormulaVal")
print(preds_class)

実行結果

0:   learn: 0.5800330    total: 139us    remaining: 139us
1:  learn: 0.4935379    total: 263us    remaining: 0us
[1 1]

STEP3:Multicassfication

多分類のケースです。

参考

catboost.ai

コード

from catboost import Pool, CatBoostClassifier

#  data init
train_data = [["summer", 1924, 44],
              ["summer", 1932, 37],
              ["winter", 1980, 37],
              ["summer", 2012, 204]]

eval_data = [["winter", 1996, 197],
             ["winter", 1968, 37],
             ["summer", 2002, 77],
             ["summer", 1948, 59]]

cat_features = [0]

train_label = ["France", "USA", "USA", "UK"]
eval_label = ["USA", "France", "USA", "UK"]

train_dataset = Pool(
        data=train_data,
        label=train_label,
        cat_features=cat_features)

eval_dataset = Pool(
        data=eval_data,
        label=eval_label,
        cat_features=cat_features)

#  create model
model = CatBoostClassifier(
          iterations=10,
          learning_rate=1,
          depth=2,
          loss_function="MultiClass")

#  model fit
model.fit(train_dataset)

#  Get predicted classes
preds_class = model.predict(eval_dataset)
print(preds_class)
preds_proba = model.predict_proba(eval_dataset)
preds_raw = model.predict(
          eval_dataset,
          prediction_type="RawFormulaVal")
print(preds_raw)

参考まとめ

catboost.ai catboost.ai catboost.ai

おわりに

今回は公式ドキュメントのexampleを読みながら実装の実験を行なっていきました。 次回はscikit-learnとかで用意されているdatasetを使って試してみようと思います。