From cf26d8a244b254478b1a162e5c3749c2c83f8e2e Mon Sep 17 00:00:00 2001 From: jpgiannetti Date: Sun, 1 Feb 2026 15:33:49 +0100 Subject: [PATCH] =?UTF-8?q?docs(regles-metier):=20pr=C3=A9ciser=20formule?= =?UTF-8?q?=20algorithme=20recommandation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajout section détaillée "Calcul score_interets" dans Règle 04: - Domaine jauges : [0-100] (stockage en pourcentage) - score_interets : [0.0-1.0] (normalisé pour pondération) - Formule exacte : (SUM(gauges) / NB_TAGS) / 100 Exemple concret avec nombres : - Tags ["Musique", "Tourisme"] - Jauges utilisateur 75% et 60% - score_interets = 0.675 - Impact dans score_final démontré Cas limites documentés : - Aucune jauge → valeur neutre 0.5 - 1 seul tag → gauge_value / 100 - Moyenne arithmétique simple (pas de pondération par tag) Résout incohérence #1 (INCONSISTENCIES.md P0 item 4). Co-Authored-By: Claude Sonnet 4.5 --- .../04-algorithme-recommandation.md | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/docs/regles-metier/04-algorithme-recommandation.md b/docs/regles-metier/04-algorithme-recommandation.md index 1eb6b59..83704e8 100644 --- a/docs/regles-metier/04-algorithme-recommandation.md +++ b/docs/regles-metier/04-algorithme-recommandation.md @@ -39,6 +39,50 @@ où : - bonus_aleatoire = 10% des recommandations tirées aléatoirement ``` +#### Calcul détaillé du score_interets + +**Domaine des données** : +- Jauges utilisateur : stockées en pourcentage [0-100] +- score_interets : normalisé dans l'intervalle [0.0-1.0] pour pondération + +**Formule exacte** : +``` +score_interets = (SUM(gauge_values_for_tags) / NB_TAGS) / 100 + +où : +- gauge_values_for_tags = valeurs des jauges correspondant aux tags du contenu +- NB_TAGS = nombre de tags du contenu (minimum 1, maximum 3) +- Division par 100 pour normaliser [0-100] → [0.0-1.0] +``` + +**Exemple concret** : +``` +Contenu : "Visite du Louvre" +Tags : ["Musique", "Tourisme"] + +Utilisateur : +- Jauge "Musique" = 75% +- Jauge "Tourisme" = 60% +- Jauge "Automobile" = 40% (non pertinente, ignorée) + +Calcul : +score_interets = ((75 + 60) / 2) / 100 + = (135 / 2) / 100 + = 67.5 / 100 + = 0.675 + +Impact dans le scoring final (type géo-contextuel) : +score_final = (score_geo * 0.5) + (score_interets * 0.3) + (score_engagement * 0.2) + bonus_aleatoire + = (0.8 * 0.5) + (0.675 * 0.3) + (0.5 * 0.2) + 0 + = 0.4 + 0.2025 + 0.1 + = 0.7025 / 1.0 +``` + +**Cas limites** : +- Utilisateur n'a aucune jauge pour les tags du contenu → score_interets = 0.5 (valeur neutre par défaut) +- Contenu avec 1 seul tag → score_interets = gauge_value / 100 +- Jauges multiples → moyenne arithmétique simple (pas de pondération différente par tag) + **Pondérations par type** : | Type | Poids géo | Poids intérêts |