glossary

Ce que mesure le ratio d'upvotes Reddit, et ce que le vote fuzzing cache

Taras Shynkarenko
Taras Shynkarenko
•Updated: •8 lecture min.
Ce que mesure le ratio d'upvotes Reddit, et ce que le vote fuzzing cacheCe que mesure le ratio d'upvotes Reddit, et ce que le vote fuzzing cache

TL;DR

8 lecture min.

Le ratio d'upvotes Reddit est la part des votes sur une publication qui sont des upvotes, et l'API le renvoie sous forme de décimale entre 0 et 1 dans le champ upvote_ratio. Le code source archivé de Reddit le calcule comme les upvotes divisés par le total des votes. Deux publications au même score peuvent afficher 0.90 et 0.55, donc lisez le ratio à côté du score. Reddit n'a jamais dit si le ratio actuel repose sur des totaux de votes brouillés ou réels, et son centre d'aide définit l'"upvote ratio" d'une seconde façon, différente, pour les commentaires.

Qu'est-ce que le ratio d'upvotes Reddit ?

Le pourcentage que Reddit affiche à côté d'une publication, c'est le ratio d'upvotes Reddit : la part de tous les votes sur cette publication qui sont des upvotes, renvoyée par l'API sous forme de décimale entre 0 et 1 dans le champ upvote_ratio. Une publication avec 45 upvotes et 5 downvotes a un ratio de 0.9, soit 90 pour cent.

La référence actuelle de l'API de Reddit sur reddit.com/dev/api documente les endpoints et les paramètres, pas les champs de réponse, donc la définition la plus claire vient du code source archivé de Reddit lui-même. Dans r2/models/builder.py du dépôt reddit-archive/reddit, le calcul tient en deux lignes :

total_votes = max(item.num_votes, 1)
w.upvote_ratio = float(item._ups) / total_votes

Les upvotes sur le total des votes, avec un plancher d'un vote pour qu'une toute nouvelle publication ne provoque pas de division par zéro. PRAW, le wrapper Python le plus utilisé pour l'API, décrit le champ de la même façon : "The percentage of upvotes from all votes on the submission."

Comment calcule-t-on le ratio d'upvotes ?

Divisez les upvotes par la somme des upvotes et des downvotes. Le score, le nombre affiché à côté des flèches, est une autre quantité : les upvotes moins les downvotes. Les deux nombres répondent à des questions différentes, et c'est le ratio qui vous dit si les gens étaient d'accord.

PublicationUpvotesDownvotesScore (score)Ratio d'upvotes (upvote_ratio)
A455400.90
B220180400.55
C4041.00

Les publications A et B affichent le même score de 40. A est une publication discrète que la plupart des lecteurs ont appréciée. B a attiré huit fois plus de votes et a divisé la salle presque à parts égales, ce qui est exactement le profil que cherche le tri controversial de Reddit. C montre l'autre piège de la lecture du ratio seul : un 1.00 parfait sur quatre votes ne dit presque rien.

Où upvote_ratio apparaît-il dans l'API de Reddit ?

Il figure sur les objets publication du JSON que renvoie Reddit, à côté de score, ups et downs. Deux de ces voisins ne veulent plus dire ce que leur nom annonce. Le template JSON archivé dans r2/lib/jsontemplates.py code en dur "downs": 0 et fixe "ups": item.score, donc sur n'importe quelle publication ups vaut le score net et downs vaut toujours zéro. Un script qui calcule ups / (ups + downs) obtient 1.0 sur chaque publication.

Le même template archivé n'ajoute upvote_ratio que lorsque c.permalink_page est vrai, c'est-à-dire sur la page de commentaires de la publication elle-même, pas dans le listing du subreddit. Ce dépôt a reçu son dernier push le 17 octobre 2017 et il est marqué comme archivé, donc le site en production peut différer. La référence des champs archivée sur le wiki du dépôt liste ups, downs et score et ne mentionne jamais upvote_ratio.

Le template archivé des commentaires n'a pas de upvote_ratio. Les commentaires portent seulement un score.

Peut-on retrouver le vrai nombre de votes à partir du ratio et du score ?

Oui, par l'algèbre, tant que le ratio ne vaut pas exactement 0.5. Les upvotes moins les downvotes donnent le score, et les upvotes sur le total des votes donnent le ratio. En résolvant ce système, on obtient :

upvotes   = ratio x score / (2 x ratio - 1)
downvotes = upvotes - score

Pour la publication A, 0.9 x 40 / 0.8 = 45 upvotes et 5 downvotes, ce qui correspond. La formule s'effondre à deux endroits. À un ratio de 0.5 le dénominateur vaut zéro, et un score de 0 ne dit rien du nombre de votes qui se sont annulés. Près de 0.5 elle devient hypersensible. La publication B, à 0.55 avec un score de 40, donne 220 upvotes. Poussez le ratio à 0.56 et la même formule renvoie environ 187. Un écart d'arrondi d'un point déplace l'estimation de 33 votes, donc traitez tout nombre reconstruit sur une publication qui divise comme une fourchette approximative.

Une personne fait défiler son téléphone sur un canapé, à côté de la section sur le vote fuzzing et ce que Reddit en a révélé.

Qu'est-ce que le vote fuzzing, et touche-t-il le ratio d'upvotes ?

Le vote fuzzing, c'est Reddit qui ajoute de faux votes aux totaux d'upvotes et de downvotes pour que les bots ne puissent pas savoir si leurs votes ont compté. L'ancienne FAQ de Reddit, désormais marquée "no longer updated", l'explique avec un exemple : cinq upvotes et trois downvotes "may say 23 upvotes and 21 downvotes, or 12 upvotes, and 10 downvotes. The points score is correct, but the vote totals are 'fuzzed'."

Le ratio était autrefois calculé à partir de ces totaux brouillés. Le 18 juin 2014, l'admin de Reddit Deimorz a annoncé dans r/announcements que les compteurs séparés d'upvotes et de downvotes disparaîtraient de la vue publique, et en a donné la raison : chaque publication proche du sommet de la page d'accueil "seems to drift towards showing '55% like it' due to the vote-fuzzing." Après le changement, la publication en tête "has gone from showing '57% like it' to '96% like it'." Le 6 décembre 2016, l'admin KeyserSosa a annoncé un recalcul des scores historiques qui supprimait des règles anti-triche obsolètes, avec ce TL;DR : "Scores are increasing by a lot."

Voici le trou. Aucune des deux annonces ne dit à partir de quoi le ratio est calculé aujourd'hui, et le centre d'aide actuel de Reddit ne mentionne jamais le fuzzing. Son article sur les votes masqués dit seulement que les votes ne sont pas affichés pendant "the first few hours after a post is created" et que certaines communautés les masquent pendant une courte durée. Le ratio s'est rapproché de la réalité, "closer to reality", en 2014. Reddit n'a pas dit qu'il était exact.

À partir de quoi le ratio a été calculé
Jusqu'en 2014 : totaux brouillés
18 juin 2014 : les compteurs individuels de votes sont masqués
6 décembre 2016 : recalcul des scores historiques
Aujourd'hui : Reddit ne l'a pas dit
Le centre d'aide actuel de Reddit ne mentionne jamais le fuzzing.

Quel lien entre le ratio d'upvotes et le tri controversial de Reddit ?

Le code archivé utilise directement le ratio pour décider de ce qui compte comme controversé. _is_controversial dans builder.py signale un élément quand son nombre de votes dépasse cflag_min_votes et que son ratio tombe entre cflag_lower_bound et cflag_upper_bound. Le fichier example.ini livré avec le code les fixe à 7, 0.4 et 0.6.

RedReplier
RedReplier

Commencer

Reddit, X, Bluesky et HN

Alertes d'intention en temps réel

Réponses IA illimitées

Classé par intention d'achat

Le tri controversial lui-même, dans _sorts.pyx, récompense à la fois le volume et l'équilibre : magnitude ** balance, où magnitude est le total des votes et balance le plus petit camp divisé par le plus grand. La publication B plus haut, 220 contre 180, obtient un score bien plus élevé qu'une publication à 3 contre 2 au même ratio. L'ensemble des tris, et ceux que Reddit documente, sont traités dans Reddit hot, new ou top.

Reddit définit-il "upvote ratio" de la même façon partout ?

Non. Reddit emploie l'expression pour au moins deux formules différentes.

OùS'applique àDéfinition
Champ d'API upvote_ratio (source archivée, PRAW)PublicationsUpvotes divisés par le total des votes, de 0 à 1
Centre d'aide, Post & Comment InsightsCommentaires"The ratio of upvotes to downvotes that the comment has received"
Centre d'aide, Reddit Pro PerformancePublicationsUpvotes : "Ratio of upvotes to downvotes"

Les upvotes rapportés aux downvotes et les upvotes rapportés au total des votes sont des nombres différents. Une publication à 90 upvotes et 10 downvotes vaut 9 pour 1 selon la première définition et 0.9 selon la seconde. Quand vous comparez des chiffres entre les outils de Reddit, vérifiez lequel vous avez sous les yeux. Le même piège apparaît dans les calculs du taux d'engagement Reddit, où le dénominateur change la réponse.

Deux personnes en pleine discussion animée à une table, à côté de la section sur un ratio proche de 0.5 signalant un désaccord.

Qu'est-ce qu'un bon ratio d'upvotes sur Reddit ?

Reddit ne publie aucune référence, et un chiffre cible unique serait trompeur. Le ratio dépend du subreddit, du sujet et du nombre de votants. Lisez-le en trois temps. Un ratio élevé sur un score élevé signale un large accord. Un ratio proche de 0.5 sur un score élevé signale une bagarre, et les commentaires vous diront à quel sujet. Un ratio proche de 1.0 sur une poignée de votes signifie que personne n'a encore tranché.

Pour une marque, un ratio bas sur une publication qui vous mentionne est un signal pour lire le fil avant de répondre. Ce n'est pas une raison de mobiliser des votes. Demander aux gens de voter enfreint les règles de Reddit, comme l'explique la manipulation des votes sur Reddit, et les downvotes sur vos propres publications et commentaires vous coûtent aussi du karma Reddit.

Lire le ratio à côté du score
Ratio élevé, score élevéLarge accord
Ratio proche de 0.5, score élevéUne dispute, donc lisez les commentaires
Ratio proche de 1.0, peu de votesPersonne n'a encore tranché
Reddit ne publie aucun repère, donc le ratio ne veut rien dire sans le volume de votes à côté.

Questions fréquentes

Que signifie un ratio d'upvotes de 50 pour cent sur Reddit ?

Cela signifie que la publication a reçu autant de downvotes que d'upvotes, donc son score est à zéro ou presque. Un ratio de 50 pour cent sur deux votes et sur deux mille votes a exactement la même apparence, c'est pourquoi il vous faut le volume de votes ou le nombre de commentaires pour le lire.

Pourquoi l'API Reddit renvoie-t-elle downs à 0 ?

Reddit a cessé d'exposer des compteurs séparés d'upvotes et de downvotes en juin 2014. Le template JSON archivé code en dur "downs": 0 et fixe ups égal au score net, donc aucun des deux champs n'est un vrai décompte. Utilisez plutôt score et upvote_ratio.

Pouvez-vous voir le ratio d'upvotes d'un commentaire Reddit ?

Pas dans le JSON de l'API. Le template archivé des commentaires de Reddit renvoie un score et aucun ratio. L'auteur du commentaire peut voir un "Upvote ratio" dans les insights de commentaire, que le centre d'aide de Reddit définit comme les upvotes rapportés aux downvotes, une formule différente de celle du champ des publications.

Le ratio d'upvotes Reddit est-il exact ?

Il est plus proche de la vérité que les totaux brouillés qu'il a remplacés, selon l'annonce de Reddit de 2014. Reddit n'a pas précisé si le ratio actuel repose sur des nombres de votes brouillés ou réels, donc traitez-le comme une bonne estimation, pas comme un chiffre audité.

Pourquoi le ratio d'upvotes de ma publication est-il masqué ?

Reddit masque le nombre de votes pendant les premières heures qui suivent la mise en ligne d'une publication, et certaines communautés masquent aussi les votes sur les publications et les commentaires pendant une courte durée. Le centre d'aide explique que cela empêche la manipulation des votes et évite que les gens soient influencés par les votes des autres.

Un ratio d'upvotes bas pénalise-t-il le classement d'une publication ?

Le tri hot dans le code archivé de Reddit utilise le score net et l'âge de la publication, pas le ratio. À nombre de votes égal, un ratio plus bas donne un score plus bas, ce qui fait baisser le rang hot. Reddit n'a pas publié le code de classement qu'il fait tourner aujourd'hui.

Comment trouver le ratio d'upvotes d'une publication Reddit ?

Reddit l'affiche en pourcentage à côté de la publication. Dans l'API, c'est le champ upvote_ratio, une décimale entre 0 et 1. Le modèle archivé de Reddit ne l'ajoute que sur la page de commentaires de la publication, pas dans les listes du subreddit.

Comment calculer les upvotes et les downvotes à partir du ratio et du score ?

Résolvez le système de deux équations : upvotes = ratio x score / (2 x ratio - 1), et downvotes = upvotes - score. Pour un ratio de 0.9 et un score de 40, vous obtenez 45 upvotes et 5 downvotes. La formule s'effondre à un ratio d'exactement 0.5, et près de cette valeur un écart d'arrondi d'un point déplace l'estimation de plusieurs dizaines de votes.

Quelle différence entre le score Reddit et le ratio d'upvotes ?

Le score est les upvotes moins les downvotes. Le ratio d'upvotes est les upvotes divisés par le total des votes. Deux publications peuvent avoir un score de 40 alors que l'une est à 0.90 et l'autre à 0.55.

RedReplier
RedReplier

Commencer

Reddit, X, Bluesky et HN

Alertes d'intention en temps réel

Réponses IA illimitées

Classé par intention d'achat

À partir de quel ratio d'upvotes une publication Reddit est-elle controversée ?

Dans le code archivé de Reddit, un élément est marqué comme controversé s'il a au moins 7 votes et un ratio entre 0.4 et 0.6. Ce sont les valeurs du fichier example.ini fourni. Reddit n'a pas publié les réglages qu'il utilise aujourd'hui.

Nous voir plus souvent sur Google

Un clic définit RedReplier comme source préférée. Nos articles remontent alors dans vos À la une, en mode IA et dans les aperçus IA.

Avant de partir...

RedReplier

RedReplier

Repérez chaque acheteur qui cherche ce que vous vendez

RedReplier surveille Reddit, X, Bluesky et Hacker News en temps réel, classe chaque sujet selon l'intention d'achat et rédige votre réponse, pour que vous arriviez en premier.

Reddit, X, Bluesky et HN

Alertes d'intention en temps réel

Réponses IA illimitées

Classé par intention d'achat

Articles connexes