CatBoost
Explore CatBoost, un puissant algorithme de gradient boosting pour les données catégorielles. Découvre comment il améliore la modélisation prédictive aux côtés d'Ultralytics YOLO26 dans les workflows d'IA.
CatBoost (boosting catégoriel) est un algorithme open source de machine learning basé sur le gradient boosting appliqué à des arbres de décision. Développé par Yandex, il est conçu pour offrir de hautes performances avec une préparation minimale des données, en excellant notamment dans la gestion des données catégorielles, c'est-à-dire des variables qui représentent des groupes ou des étiquettes distincts plutôt que des valeurs numériques. Alors que les algorithmes traditionnels nécessitent souvent des techniques de prétraitement complexes comme le one-hot encoding pour convertir les catégories en nombres, CatBoost peut traiter directement ces caractéristiques pendant l'entraînement. Cette capacité, associée à son aptitude à réduire le surapprentissage grâce au boosting ordonné, en fait un choix robuste pour un large éventail de tâches de modélisation prédictive en data science.
Principaux avantages et mécanisme#
CatBoost se distingue des autres méthodes d'ensemble par plusieurs choix architecturaux qui privilégient la précision et la facilité d'utilisation.
- Prise en charge native des données catégorielles : l'algorithme utilise une technique appelée statistiques cibles ordonnées pour convertir les valeurs catégorielles en nombres pendant l'entraînement. Cela évite la fuite de la cible souvent observée avec les méthodes d'encodage standard, tout en préservant l'intégrité du processus de validation.
- Boosting ordonné : les méthodes standard de gradient boosting peuvent souffrir d'un décalage des prédictions, un type de biais dans les systèmes AI. CatBoost résout ce problème en utilisant une approche fondée sur des permutations pour entraîner le modèle, ce qui garantit que celui-ci ne se surajuste pas à la distribution spécifique des données d'entraînement.
- Arbres symétriques : contrairement à de nombreuses autres bibliothèques de boosting qui développent les arbres par profondeur ou par feuille, CatBoost construit des arbres symétriques (équilibrés). Cette structure permet des vitesses d'inférence extrêmement élevées, ce qui est essentiel pour les applications d'inférence en temps réel.
CatBoost comparé à XGBoost et LightGBM#
CatBoost est fréquemment évalué aux côtés d'autres bibliothèques de boosting populaires. Bien qu'elles partagent le même framework sous-jacent, elles présentent des caractéristiques distinctes.
- XGBoost : une bibliothèque très flexible et largement utilisée, connue pour ses performances dans les compétitions de data science. Elle nécessite généralement un réglage soigneux des hyperparamètres et un encodage manuel des variables catégorielles pour atteindre des performances optimales.
- LightGBM : cette bibliothèque utilise une stratégie de croissance par feuilles, ce qui la rend particulièrement rapide pour l'entraînement sur d'immenses jeux de données. Toutefois, sans régularisation rigoureuse, elle peut être sujette au surapprentissage sur les jeux de données de petite taille, comparée aux arbres symétriques stables de CatBoost.
- CatBoost : offre souvent la meilleure précision « prête à l'emploi » avec les paramètres par défaut. C'est généralement le choix privilégié lorsque les jeux de données contiennent un nombre important de caractéristiques catégorielles, ce qui réduit le besoin d'une ingénierie approfondie des caractéristiques.
Applications concrètes#
La robustesse de CatBoost en fait un outil polyvalent dans divers secteurs qui traitent des données structurées.
-
Évaluation du risque financier : les banques et les entreprises fintech utilisent CatBoost pour évaluer l'admissibilité à un prêt et prédire les défauts de paiement. Le modèle peut intégrer de manière fluide différents types de données, comme la profession d'un demandeur (catégorielle) et son niveau de revenus (numérique), afin de créer des profils de risque précis. Cette capacité constitue un pilier de l'AI dans la finance moderne.
-
Recommandations dans le commerce électronique : les détaillants en ligne utilisent CatBoost pour alimenter des systèmes de recommandation personnalisés. En analysant les journaux de comportement des utilisateurs, les catégories de produits et l'historique des achats, l'algorithme prédit la probabilité qu'un utilisateur clique sur un article ou l'achète, contribuant directement à l'optimisation de l'AI dans le commerce de détail.
Intégration avec la vision par ordinateur#
Bien que CatBoost soit principalement un outil destiné aux données tabulaires, il joue un rôle essentiel dans les workflows de modèles multimodaux, où les données visuelles sont associées à des métadonnées structurées. Un workflow courant consiste à utiliser un modèle de vision par ordinateur pour extraire des caractéristiques des images, puis à transmettre ces caractéristiques à un classifieur CatBoost.
Par exemple, un système d'évaluation immobilière peut utiliser Ultralytics YOLO26 pour effectuer de la détection d'objets sur des photos de biens et compter des équipements comme les piscines ou les panneaux solaires. Le nombre de ces objets est ensuite transmis sous forme de caractéristiques numériques à un modèle CatBoost, avec les données de localisation et de superficie, afin de prédire la valeur du bien. Les développeurs peuvent gérer le composant de vision de ces pipelines à l'aide de la plateforme Ultralytics, qui simplifie la gestion des jeux de données et le déploiement des modèles.
L'exemple suivant montre comment charger un modèle YOLO préentraîné pour extraire le nombre d'objets présents dans une image, qui pourrait ensuite servir de caractéristiques d'entrée pour un modèle CatBoost.
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Run inference on an image
results = model("path/to/property_image.jpg")
# Extract class counts (e.g., counting 'cars' or 'pools')
# This dictionary can be converted to a feature vector for CatBoost
class_counts = {}
for result in results:
for cls in result.boxes.cls:
class_name = model.names[int(cls)]
class_counts[class_name] = class_counts.get(class_name, 0) + 1
print(f"Features for CatBoost: {class_counts}")








