Méthodologie

Détails des segmentations sur commentaires, chevaux et courses.

Dernière mise à jour 2026-03-24 04:50:56 UTC
Statut En ligne

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 → cluster
    • runner_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 victoires
    • places : 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 → cluster
    • horse_clusters_v1_profiles : Statistiques agrégées
    • horse_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 course
  • discipline : TROT ou GALOP
  • surface : Type de piste (gazon, sable, etc.)
  • class : Niveau de la course
  • specialty : 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 partants
  • min_age / max_age : Âge minimum/maximum des chevaux
  • autostart : 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) et log1p(total_prize)
    • Normalisation StandardScaler avec with_mean=False
  • 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 → cluster
    • race_clusters_v1_profiles : Statistiques agrégées (distance, gains, partants)