CatBoostで多クラス分類モデルを構築する
今回は、CatBoostの多クラス分類問題のモデルを構築してみたいと思います。
環境はGoogle Corabです。
データセットの用意
load_wine は、scikit-learn ライブラリで提供されているデータセットの一つで、ワインの化学的特性とその分類に関するデータを含んでいます。目的変数はワインの種類で3種類あります。
from sklearn.datasets import load_wine
wine = load_wine()
X = wine.data
y = wine.target
学習用にデータを分割
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
CatBoostモデルの構築
!pip install catboost
Google CorabにCatBoostがプリインストールされていないため、インストールします。
from catboost import CatBoostClassifier
model = CatBoostClassifier(
iterations=1000,
learning_rate=0.1,
depth=6,
loss_function='MultiClass'
)
model.fit(X_train, y_train, eval_set=(X_test, y_test), verbose=100, early_stopping_rounds=100)
CatBoostのデータセットを作成し、 分類モデルを構築します。
ハイパーパラメーターには下記を指定しています。
iterations
学習の繰り返し回数を指定します。つまり、決定木を何本作成するかを決定します。
learning_rate
各決定木の寄与度を制御するパラメーターです。小さくすると各ステップの変更量が少なくなり、学習がゆっくりになりますが、より精緻なモデルが期待できます。
depth
各決定木の深さを指定します。深い木はより複雑なモデルを作りますが、過学習のリスクも高まります。
loss_function
モデルの損失関数を指定します。多クラス分類の場合は'MultiClass'を使用します。
評価
モデルの性能を評価してみます。
from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')