← retour aux snippets

catboost: regressor Poisson/Tweedie

Régresser des dénombrements ou distributions asymétriques avec CatBoost.

objectif

Régresser des dénombrements ou distributions asymétriques avec CatBoost.

code minimal

import numpy as np
from catboost import CatBoostRegressor

rng = np.random.RandomState(0)
X = rng.randn(300, 3)
y = np.exp(X[:,0] + 0.1*rng.randn(300))  # positif, asymétrique

model = CatBoostRegressor(
    iterations=800,
    learning_rate=0.05,
    depth=6,
    loss_function="Tweedie:variance_power=1.5",
    random_seed=0,
    verbose=False,
)
model.fit(X, y)
print(hasattr(model, "predict"))

utilisation

# Variante Poisson (pour des comptes entiers)
poisson = CatBoostRegressor(
    iterations=500, learning_rate=0.05, depth=6, loss_function="Poisson", random_seed=0, verbose=False
).fit(X, y)
print(poisson.tree_count_ > 0)

variante(s) utile(s)

# Sauvegarder/charger
model.save_model("cat.cbm")
from catboost import CatBoostRegressor as CBR
loaded = CBR()
loaded.load_model("cat.cbm")
print(loaded.tree_count_ == model.tree_count_)

notes

  • Tweedie couvre entre Poisson et Gamma; ajustez variance_power selon la distribution des cibles.