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.