Comment catégoriser les critères de votes de cette façon ?

a marqué ce sujet comme résolu.

Bonjour,

Tout d’abord je n’arrivais pas à trouver une manière d’écrire un titre plus précis ; aussi si en lisant cet OP vous avez une idée, je suis preneur :D .

Structure des données dont je dispose

Il s’agit d’un système de votes. J’ai donc :

  • Des "trucs" à voter.

  • Par "Truc", il y a trois critères avec chacun les valeurs sélectionnables suivantes (une seule l’est) : "Très", "Beaucoup", "Un peu", "Pas du tout". Trois critères pourraient quant à eux être : "Créatif", "Bien fignolé", "Engageant".

Un votant qui vote tout le temps vite doit peser moins qu’un votant qui vote "normalement" bien entendu (notion d’indice de confiance va-t-on dire).

Sortie désirée

Imaginons tout un corpus de votes concernant des Trucs.

Alors, la sortie désirée de mon programme pour chaque "Truc" est la suivante (je vous la définis par l’exemple) :

  • <1 Truc donné>

    • Créatif

      • Le plus probable que

        <Ce truc>

        soit Créatif est : "Très",
      • Autres probables : "Beaucoup",
      • Peu probables : "Un peu", "Pas du tout"
    • Bien fignolé

      • Le plus probable que

        <Ce truc>

        soit Bien Fignolé est : "Beaucoup" ET AUSSI "Un peu",
      • Autres probables : -
      • Peu probables : "Très", "Pas du tout"
    • etc. (quelque chose de similaire, pour le critère "Engageant").

Question

Comment arriver à cette sortie ? :ninja:

Au début je pensais calculer de manière pondérée (i.e. : en fonction de l’indice de confiance) un score pour l’ensemble des couples (1 Truc ; 1 Critère) en fonction des Votes pour chaque valeur de ce critère. Puis je me suis rendu compte que ça ne donnerait qu’un score, qui pourrait se situer sur une échelle à valeurs discrètes allant de "100% Pas du tout à 100% Très", en passant par des mix tels "25% Pas du tout, 25% Un peu, 25% …". Et encore, le fait de n’avoir qu’un score (i.e. : un nombre) ne transcrirait même pas bien cette notion.

J’ai aussi pensé clusteriser les votes par valeur, pour chaque couple (1 Truc ; 1 Critère), ainsi qu’à utiliser des notions comme les quartiles, et ma réflexion est toujours en cours (je n’ai pas eu le temps de m’y pencher plus de 5min). Est-ce que je suis sur la bonne voie ?

Ou bien, y a-t-il un moyen beaucoup plus simple auquel je n’aurais pas pensé d’arriver à mes fins ? (Je n’ai pas du tout l’habitude de faire des statistiques ni de travailler sur ce genre de problématiques).

Existe-t-il des implémentations PHP (idéalement des packages Laravel, mais si c’est du PHP c’est très bien), voire Python (car PHP peut exécuter du Python) qui pourraient m’offrir directement ce service (gratuitement) ? (utilisables dans un contexte professionnel car je compte faire de ce projet personnel un projet rémunérateur)

Merci beaucoup !

Très bonne semaine à tous !

+0 -0

Tu avais déjà posé une question similaire, et on t’avait posé une question : combien de votants espères-tu. Pour 10 votants, ou pour 1000 votants, je pense que les rapports intéressants ne sont pas les mêmes.

Dans la description de ton rapport, tu donnes en exemple : Créatif : le plus probable : Très.

Il faut remplacer le mot probable par un autre mot, le mot fréquent par exemple. En effet, ce que tu publies, c’est un constat sur les votes effectués. Tu calcules donc une fréquence, et pas une probabilité.

Ta problématique me fait penser à un concept : ACP (Analyse en composantes Principales).

Je pense que tu devrais clarifier ton objectif.
Réaliser la sortie que tu indiques ne pose pas de difficultés: il s’agit d’ordonner les lignes d’un tableau. Mais le reste de ton texte semble indiquer que c’est plus compliqué que cela, tu évoques un "score", la possibilité de "clusteriser".

Peut être que ce serait utile d’utiliser un Diagramme de Kiviat :

Le diagramme de Kiviat, diagramme en radar , en étoile1 ou encore en toile d’araignée2 sert à représenter sur un plan en deux dimensions au moins trois ensembles de données multivariées. Chaque axe, qui part d’un même point, représente une caractéristique quantifiée. Est ainsi facilitée une analyse détaillée de plusieurs objets, ainsi que leur comparaison générale (comparaison des surfaces) ou point par point. Ce type de diagramme n’est utile que si les axes sont correctement normés selon l’importance donnée à chaque caractéristique.

+0 -0

Bonjour tout le monde,

Tout d’abord je souhaite m’excuser du retard avec lequel je vous réponds.

@elegance

Tu avais déjà posé une question similaire,

Elle concernait l’indice de confiance. Ici, ma question porte bien sur la sortie quoi.

Il faut remplacer le mot probable par un autre mot, le mot fréquent par exemple. En effet, ce que tu publies, c’est un constat sur les votes effectués. Tu calcules donc une fréquence, et pas une probabilité.

Ceci est parfaitement exact, merci !

A noter que le but du système est bien de dire un truc du genre "au vu de ces votes, on peut extrapoler que ce <Truc> est Très Créatif", tu vois ? C’est pour ça que j’utilisais le terme "Probable".


@etherpin

Heu en effet tu as raison, je n’ai qu’à compter le nombre de votes par valeur (valeurs = Très, Pas du tout, etc.) pour un Critère donné (critères = Créatif par exemple). Et du coup, par critère, je peux faire une liste ordonnée en fonction du nombre de votes reçus. Mais par contre comment définir le "Peu probable" ? Je veux dire, le mini-"système" que je viens de décrire implique une catégorisation relative, mais ma sortie implique un raisonnement absolu.

Re-bonjour,

Après réflexion, voici ce que je vais faire. Pourriez-vous me dire ce que vous en pensez s’il vous plaît ? (en particulier la dernière puce)

  • Pour retourner cette sortie, je vais tout simplement compter le nombre de votes pour les "Très", "Beaucoup", "Pas du tout", … Donc le plus fréquent ira dans la puce "Très fréquent" et ainsi de suite. En cas d’égalité, j’indiquerai à la place : "Même fréquence" ou quelque chose comme ça. OU BIEN ENCORE MIEUX : j’utiliserai un diagramme pour avoir quelque chose de plus visuel et exprimerai ces fréquences à l’aide de pourcentage, exemple : "Très" vaut 75%, "Un peu" vaut 25% et hop, un petit cercle avec deux couleurs.

  • Cependant, certains votes auront un indice de confiance tout pourri (votant qui spamme très rapidement), d’autres élevé (votant qui prend le temps de bien regarder la photo avant de voter). Cela signifie donc une chose, que j’explique par la suite avec deux exemples.

    • Imaginons qu’on ait 75% de "Très", tous ces votes avec un indice de confiance élevés. Mais que le "Un peu" qui vaut 25% ne contiennent que des votes tout pourris. Est-il pertinent de montrer à l’utilisateur que ce 25% de Un peu a la même importance que ce 75% de Très ? La réponse est non.

    • Imaginons qu’on ait 75% de "Très", parmi lesquels on a 75% de votes tout pourris ! Et toujours 25% de "Un peu" (votes d’excellente qualité quant à eux !). Est-il pertinent d’afficher d’un bloc ce 75% de Très, alors que parmi eux on a surtout des votes tout pourris ? La réponse est non. Est-il pertinent d’afficher ce 75% de Très au même niveau que le 25% de Un peu ? Toujours pas probablement, mais contrairement à l’exemple de la puce N°1, ici on sait que la plupart des Très sont tout pourris, donc ça a quand même davantage de sens (même si peut-être pas totalement).

    • On pourrait aussi avoir du 75% de Très avec 25% De Un peu, tous étant tout pourris : pareil, il faut bien passer l’info au créateur du vote, car il ne faut pas qu’il pense que les votants sont de confiance !

    • Idem avec 100% de Très : on voudra informer le créateur du vote de la pertinence (imaginez si on a 80% de Très tout pourris !).

Bref ces puces montrent bien l’importance qu’a l’indice de confiance dans l’interprétation des votes. Bon c’était évident mais je voulais le souligner quand même :ninja: !

Du coup l’idée que j’ai c’est :

  • Je ne veux pas convertir un vote "Très, d’indice de confiance tout pourri", en un vote downgradé. (trop arbitraire, ça compliquera légèrement le code, et troisième argument : pas sûr que ce soit si pertinent que ça au niveau métier).

  • Je ne veux pas qu’un vote "Très, d’indice de confiance tout pourri" change d’une quelconque façon la sortie telle que je l’ai décrite (ça compliquera le code pour rien et pareil, niveau métier pas sûr que ce soit pertinent).

  • A la place de tout ça : je vais simplement afficher le pourcentage "indice de confiance" pour "Très" / "Un peu" etc.

- De plus, je proposerai une fonctionnalité PREMIUM payante pour proposer au créateur du vote d'améliorer l'indice de confiance de chaque "Très, Un peu, etc.". Pour ce faire, je soumettrai sa photo uniquement au TOP 20% des votants (ceux qui, dans la semaine définie par les votes qu'ils ont faits les plus récents, ont pris le temps de bien voter).

- Je me demande si c’est légal cependant. Car le créateur du vote pourrait me dire "Je veux pas payer pour ça : vous n’avez qu’à bannir les spammeurs". Ou encore : "ça fait 3 semaines que j’ai payé, y a aucun nouveau vote, pourquoi ? C’est parce que tous les votants du site sont des spammeurs et/ou que ceux qui ne le sont pas ont déjà voté pour ma photo ?". Que pensez-vous de cela ?

En résumé, comment arbitrer entre la note (n) et l’indice de confiance (i).
Tu peux regarder que faire dans les cas extrêmes, pour ensuite traiter les cas intermédiaires.
si (i) est au max, on va utiliser(n) sans problèmes.
a l’inverse, si (i) est nul, on ne tient pas compte de (n).

Supposons que (i) et (n) sont des pourcentages :
pour les cas intermédiaires, on pet calculer (i) x (n) pour rester simple.
Ce produit donne le résultat attendu pour les cas extrêmes.

Je dois dire que je ne vois pas pourquoi j’irais noter des photos, ni pourquoi j’irais soumettre des photos à une évaluation, surtout si ce n’est pas gratuit

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte