CatBoost¶
Snowflake ML モデルレジストリは、 CatBoost を使用して作成されたモデル( catboost.CatBoostClassifier 、 catboost.CatBoostRegressor 、 catboost.CatBoostRanker などの catboost.CatBoost から派生したモデル)をサポートしています。
以下の追加オプションは、 options ディクショナリで log_model を呼び出すときに使用できます。
オプション |
説明 |
|---|---|
|
モデルオブジェクトで利用可能なメソッド名のリスト。 CatBoost はデフォルトで |
|
SHAP を使用してモデルの説明可能性を有効にするかどうか。デフォルトは |
|
GPUを持つプラットフォームへの展開時に使用する CUDAランタイムのバージョン。デフォルトで11.8。手動で |
sample_input_data モデルをログする場合は、 signatures か CatBoost のどちらかのパラメーターを指定する必要があります。
例¶
これらの例では、 reg が snowflake.ml.registry.Registry のインスタンスであると想定しています。
CatBoostClassifier¶
次の例は、 CatBoost 分類子をトレーニングし、Snowflake ML モデルレジストリにログを記録し、推論と説明可能性に登録されたモデルを使用するための主なステップを示しています。ワークフローには以下が含まれます。
サンプルデータセットで CatBoost 分類子をトレーニングします。
Snowflake ML モデルレジストリにモデルのログを記録します。
予測を行い、予測確率を取得します。
モデルの予測用の SHAP 値を取得します。
import catboost
from sklearn import datasets, model_selection
# Load dataset
cal_data = datasets.load_breast_cancer(as_frame=True)
cal_X = cal_data.data
cal_y = cal_data.target
# Normalize column names (replace spaces with underscores)
cal_X.columns = [col.replace(' ', '_') for col in cal_X.columns]
cal_X_train, cal_X_test, cal_y_train, cal_y_test = model_selection.train_test_split(
cal_X, cal_y, test_size=0.2
)
# Train CatBoost Classifier
classifier = catboost.CatBoostClassifier(
iterations=100,
learning_rate=0.1,
depth=6,
verbose=False
)
classifier.fit(cal_X_train, cal_y_train)
# Log the model
model_ref = reg.log_model(
model=classifier,
model_name="my_catboost_classifier",
version_name="v1",
sample_input_data=cal_X_test,
)
# Make predictions
result_df = model_ref.run(cal_X_test[-10:], function_name="predict")
# Get prediction probabilities
proba_df = model_ref.run(cal_X_test[-10:], function_name="predict_proba")
# Get explanations (SHAP values)
explanations_df = model_ref.run(cal_X_test[-10:], function_name="explain")
CatBoostRegressor¶
次の例は、 CatBoost 回帰変数をトレーニングし、Snowflake ML モデルレジストリにログを記録し、推論に登録されたモデルを使用するための主なステップを示しています。ワークフローには以下が含まれます。
サンプルデータセットの CatBoost 回帰変数をトレーニングします。
Snowflake ML モデルレジストリにモデルのログを記録します。
予測を行います。
import catboost
from sklearn import datasets, model_selection
# Load dataset
cal_data = datasets.load_diabetes(as_frame=True)
cal_X = cal_data.data
cal_y = cal_data.target
cal_X_train, cal_X_test, cal_y_train, cal_y_test = model_selection.train_test_split(
cal_X, cal_y, test_size=0.2
)
# Train CatBoost Regressor
regressor = catboost.CatBoostRegressor(
iterations=100,
learning_rate=0.1,
depth=6,
verbose=False
)
regressor.fit(cal_X_train, cal_y_train)
# Log the model
model_ref = reg.log_model(
model=regressor,
model_name="my_catboost_regressor",
version_name="v1",
sample_input_data=cal_X_test,
)
# Make predictions
result_df = model_ref.run(cal_X_test[-10:], function_name="predict")
説明可能性の無効化¶
説明可能性の機能が不要な場合は、ログ中に説明可能性の機能を無効にすることで、モデルのサイズと依存関係を小さくすることができます。
model_ref = reg.log_model(
model=classifier,
model_name="my_catboost_classifier_no_explain",
version_name="v1",
sample_input_data=cal_X_test,
options={"enable_explainability": False},
)