Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Système de notation d'établissement : privilégier la récence des notes


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éprouvé
    Système de notation d'établissement : privilégier la récence des notes
    Bonjour,
    Je voudrai mettre en place un système de notation de visiteurs pour des établissements
    Lorsque un utilisateur visite un établissement, il donne une note qu'on suppose comprise entre 0 et 10.
    Je voudrai par la suite calculer la note globale d'un établissement en fonction des notes reçues.
    Le plus simple serait de calculer la note en moyennant les note reçue
    Mais dans mon cas, je voudrai privilégier :
    - Les notes les plus récentes par rapport aux anciennes
    - Les notes émises par des visiteurs de grades supérieures . Exemple : la note d'un visiteur de grade 5 aura plus de poids que celle d'un visiteur de grade 1 (si les notes ont le même age).

    L'idée qui m'est venue consiste à calculer deux notes (une note pour chaque critère)
    NoteRecence
    NoteGrade
    et ensuite calculer la moyenne de ces deux notes de manière équitable ou pondérée...

    Exemple
    Supposant qu'on dispose des deux notes pour le même établissement :
    N1 : 9 points il y a 2 jours
    N2 : 2 points il y a 10 jours
    Comme le poids doit être inversement proportionnel à la récence de la note, on inverse le nombre de jours :
    Coefficient de N1 1/2 = 0.5
    Coefficient de N2 1/10 = 0.1
    Ainsi on a
    Le poids de N1 : P1 = 0.5/(0.5+0.1)
    Le poids de N2 : P2 = 0.1/(0.5+0.1)

    Le score du premier critère s'obtient donc ainsi
    P1*9+P2*2

    De la même manière on calcule le score du 2ème critère ...etc

    Trouvez-vous cette approche représentative ? D'autres suggestions ?
    Merci
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  2. #2
    Membre éprouvé
    Bonjour à tous,

    Plusieurs options s'offrent à toi.

    Mais le plus simple serait de normaliser l'ensemble des résultats sur une moyenne standard. Cinq et demi si tu prends une note avec des indices de 1 à 10. La normalisation s'effectue en calculant la moyenne qui peut être pondérée et en la soustrayant à la note. Ce résultat tu peux le diviser par un écart type toujours avec la possibilité de le pondérer. La question : doit-on normaliser les clients ou les utilisateurs en premier ? Cela peut amener à quelques petites différences.

    Pour les faits temporels, tu peux ensuite utiliser des fonctions exponentielles par exemple pour pondérer les notes les plus récentes de façon plus importante et ainsi diminuer le pouvoir des notes les plus lointaines dans le temps. Il faut faire attention dans ce type d'analyse à l'ensemble des biais que tu pourrais induire. Par exemple un client qui serait noté très bien, mais de façon assez éloignée dans le temps pourrait se retrouver avec une très mauvaise note alors qu'un client pas très bien noté pourrait se trouver avec de meilleures notes parce que plus récentes.

    Bien cordialement,

  3. #3
    Membre habitué
    Pourquoi prendre en compte des notes anciennes pour ensuite les dégrader ?
    Savoir pour comprendre et vice versa.

  4. #4
    Membre éprouvé
    Bonsoir,
    Citation Envoyé par dev_ggy Voir le message
    Bonjour à tous,

    Plusieurs options s'offrent à toi.

    Mais le plus simple serait de normaliser l'ensemble des résultats sur une moyenne standard. Cinq et demi si tu prends une note avec des indices de 1 à 10. La normalisation s'effectue en calculant la moyenne qui peut être pondérée et en la soustrayant à la note. Ce résultat tu peux le diviser par un écart type toujours avec la possibilité de le pondérer. La question : doit-on normaliser les clients ou les utilisateurs en premier ? Cela peut amener à quelques petites différences.

    Pour les faits temporels, tu peux ensuite utiliser des fonctions exponentielles par exemple pour pondérer les notes les plus récentes de façon plus importante et ainsi diminuer le pouvoir des notes les plus lointaines dans le temps. Il faut faire attention dans ce type d'analyse à l'ensemble des biais que tu pourrais induire. Par exemple un client qui serait noté très bien, mais de façon assez éloignée dans le temps pourrait se retrouver avec une très mauvaise note alors qu'un client pas très bien noté pourrait se trouver avec de meilleures notes parce que plus récentes.

    Bien cordialement,
    Merci à vous pour toutes ces explications. Je n'ai pas très bien compris la démarche que vous décrivez mais j'y reviendrai à tête reposée car j'ai dû passer à un projet urgent ...

    Citation Envoyé par valentin03 Voir le message
    Pourquoi prendre en compte des notes anciennes pour ensuite les dégrader ?
    Tout simplement parceque la qualité d'un établissement est très variable dans le temps. Si un utilisateur donne un 0 il y a 10 ans et qu'un autre donne un 10 à cet instant, on en déduira que la qualité de l'établissement à cet instant se rapproche plus du 10 que du 0 (soit supérieure à 5)
    « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste!!»

  5. #5
    Rédacteur/Modérateur

    Tu veux quel type de traitement.
    - Une fois par mois, je prends toutes les données (unitaires) du mois écoulé, je prends les résultats calculés il y a un mois, et je détermine de nouveaux indicateurs : un note et 1 ou 2 autres indicateurs pour chaque établissement.

    ou bien
    - En 'live' , quand j'ai besoin de calculer la note d'un établissement, je regarde le détail de toutes les notes reçues par cet établissement, et je calcule une synthèse.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.