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 |