Méthodologie
Détails des segmentations sur commentaires, chevaux et courses.
Méthodologie des Segmentations
📊 Méthode de Segmentation - Commentaires Runners
🎯 Objectif
Regrouper automatiquement les commentaires de courses similaires pour identifier des patterns récurrents dans les observations des analystes.
📥 Variables d'entrée
- Embeddings vectoriels : Représentations numériques des commentaires textuels générées via modèle de langage (dimension 1536)
- Source : Table
public.runner_comment_embeddings
⚙️ Algorithme
- Méthode : K-Means clustering
- Nombre de clusters : 20
- Preprocessing : Embeddings normalisés (L2)
- Labellisation : Labels générés automatiquement via GPT-5 Mini à partir d'exemples représentatifs
🔑 Critères clés
- Similarité sémantique : Les commentaires sont groupés selon leur sens, pas leur formulation exacte
- Distance cosinus : Métrique utilisée pour mesurer la proximité entre embeddings
- Cohérence thématique : Chaque cluster représente un type de commentaire spécifique (ex: "Favoris dominants", "Chevaux réguliers", etc.)
📊 Résultat
- 20 clusters avec labels descriptifs en français
- Tables générées :
runner_comment_clusters: Assignation commentaire → clusterrunner_comment_cluster_labels: Labels et exemples
🐴 Méthode de Segmentation - Chevaux
🎯 Objectif
Créer des profils de chevaux basés sur leurs performances et le type de commentaires qu'ils reçoivent.
📥 Variables d'entrée
- Statistiques de performance (source :
public.horse_360) :total_prize: Total des gains (€)wins: Nombre de victoiresplaces: Nombre de places (top 3)
- Profil des commentaires (source :
public.horse_comment_cluster_counts) :- Proportions de chaque type de commentaire (20 dimensions)
- Exemple : 30% de commentaires "Favoris dominants", 20% "Chevaux réguliers", etc.
⚙️ Algorithme
- Preprocessing :
- Transformation logarithmique (log1p) pour réduire l'asymétrie des gains et victoires
- Normalisation StandardScaler
- Réduction de dimension :
- UMAP (Uniform Manifold Approximation and Projection)
- Paramètres :
n_components=2,n_neighbors=10,min_dist=0.5 - Entraîné sur échantillon de 30,000 chevaux (random_state=42)
- Clustering :
- K-Means sur l'espace UMAP
- Nombre de clusters : 30
n_init=50,max_iter=500
- Labellisation : Labels générés via GPT-5 Mini + noms descriptifs automatiques
🔑 Critères clés
- Performance financière : Gains moyens par cluster (de "Débutants" à "Champions")
- Taux de succès : Nombre de victoires et places
- Profil comportemental : Types de commentaires associés
- Taille du groupe : Nombre de chevaux par cluster
📊 Résultat
- 30 clusters avec profils détaillés
- Métriques moyennes : gains, victoires, places (transformées inverse avec expm1)
- Tables générées :
horse_clusters_v1: Assignation cheval → clusterhorse_clusters_v1_profiles: Statistiques agrégéeshorse_clusters_v1_labels: Labels descriptifs
🏁 Méthode de Segmentation - Courses
🎯 Objectif
Classifier les courses selon leurs caractéristiques techniques et contextuelles pour identifier des types de courses homogènes.
📥 Variables d'entrée
Source : Table public.common_race_prod
Variables catégorielles (5) :
country: Pays de la coursediscipline: TROT ou GALOPsurface: Type de piste (gazon, sable, etc.)class: Niveau de la coursespecialty: Spécialité (plat, obstacles, etc.)
Variables numériques (9) :
distance: Distance de la course (mètres)total_prize: Montant total des gains (€)number_of_runners: Nombre de partantsmin_age/max_age: Âge minimum/maximum des chevauxautostart: Départ auto (booléen)is_premium: Course premium (booléen)is_tqq: Course TQQ (booléen)
⚙️ Algorithme
- Preprocessing :
- Imputation des valeurs manquantes :
'unknown'(catégorielles),0(numériques) - One-hot encoding des 5 variables catégorielles
- Transformation logarithmique :
log1p(distance)etlog1p(total_prize) - Normalisation StandardScaler avec
with_mean=False
- Imputation des valeurs manquantes :
- Clustering :
- K-Means directement sur les features normalisées
- Nombre de clusters : 20
- Paramètres par défaut scikit-learn
- Noms générés automatiquement basés sur distance et gains moyens
🔑 Critères clés
- Distance moyenne : De sprints (< 1200m) à courses longues (> 3000m)
- Niveau de gains : De courses modestes à Groupes prestigieux
- Discipline dominante : Trot vs Galop
- Taille du champ : Nombre moyen de partants
- Type de surface : Distribution par type de piste
📊 Résultat
- 20 clusters avec profils moyens
- Distribution par discipline : Visualisation Trot/Galop séparée
- Tables générées :
race_clusters_v1: Assignation course → clusterrace_clusters_v1_profiles: Statistiques agrégées (distance, gains, partants)