Suggestion vidéo

Une petite réflexion sur les suggestions vidéos sur peertube.

Je viens de découvrir cette expérience : https://youtu.be/pAIAGTGt0Pc?t=2m47s.
Du coup il est clair que le système de « tendance » n’est pas pertinent pour les suggestions vidéos, car arbitraire et non corrélé à la qualité intrinsèque des vidéos.

Là dans l’immédiat j’ai pas forcément de solution simple à proposer. Mais j’ouvre tout de même ce topic afin d’inviter à une réflexion sur le sujet. Comment permettre de valoriser le contenu de qualité et la diversité d’opinion, tout en diminuant l’influence des bulles sociales et des putàclics ?

La sujet avait déjà été effleuré dans un autre topic à propos de la valorisation des commentaires. Ici ce serait plutôt pour la valorisation de vidéos elle-même.

En première approche, j’imagine qu’on pourrait envisager une classification : attributions/réfutation de tag par les internautes, basés sur des critères les plus objectifs possibles (“documentaire”, "sourcé (voir liste)“, “orientation=libéralisme“). Mais le système me parait vite limité.

Bref, s’il y en a qui veulent réfléchir ensemble à la question, il y a un topic pour ça.

1 Like

Juste pour référence, il y a deux entrées sur le traqueur qui abordent le sujet (en anglais) :

Merci, comme d’hab’ j’ai oublié de regarder sur Github avant de poster ici.
Cela dit les deux liens que tu proposes concerne des problématiques légèrement différente de celle que je tente de soulever ici.
Dans les deux cas, ils parlent effectivement du choix de l’algo en page d’accueil, mais reste sur des propositions conventionnelles (les plus récentes, les plus vues…). Le deuxième réclame plus de transparence sur ces algos.
J’aimerai surtout soulever la question de la création d’un algo (qui pourrais effectivement être choisi par l’utilisateur parmis d’autre) qui soit meilleur qu’un tri par nombre de vues ou nombre de like et qui suggère de points de vue complémentaire après le visionnage d’une vidéo. Après, quel algo on met en page d’accueil, c’est une autre histoire.

J’avais bien compris mais tu as raison de noter la différence :slight_smile: C’est effectivement un problème plus précis, et qui pourrait à minima être intégré dans un de ces algos, voire même être un critère essentiel de choix pour ces algos.

Ton lien est assez intéressant aussi. La vidéo cite des études sociologiques pour évaluer les classements et les conséquences des effets de foules des “tops”. Peut-être serait-il bon de recenser les quelques études (s’il y en a d’autres) sur le sujet.

Hello

J’ai rencontré l’un des développeurs de https://mangaki.fr/ qui s’intéresse au sujet et notre Framartin y réfléchit également. :smiley:

1 Like

Aussi, j’en profite pour ajouter que https://github.com/Chocobozzz/PeerTube/issues/330 aurait bien besoin des réflexion apportées par ta vidéo, @9d4f1d70c5

Oui bonne idée. Commençons par établir un cahier des charges clair de ce qu’on veut et des écueils à éviter.

Voici mon point de vue

Ce qu’on veut :

  • Le classement doit être aussi fortement corrélé que possible à la qualité intrinsèque de la vidéo ;
  • La qualité des vidéos étant évaluée par les internautes, l’algo doit être robuste au biais cognitifs ;
  • La qualité des vidéos étant évaluée par les internautes, l’algo doit être robuste aux techniques marketing déloyales ;
  • Les vidéos doivent tendre naturellement vers leur « bonne place » avec le temps. Il ne faut pas que le vidéos bien installées dans le classement écrase des vidéos pertinentes plus récentes parce que ces dernière ayant moins d’avis, sont plus bas dans le classement, donc elles ont moins d’avis, donc elles sont plus bas… À contrario, il ne faut pas non plus que les vidéos anciennes s’enterrent dans l’oubli petit à petit.

Pour les biais cognitifs concernés par notre problème, j’ai pu repérer :

  • le biais de conformisme (présenté dans la vidéo) : les gens ont tendance à visionner les contenus présentés comme les plus visionnés par les autres internautes, indépendamment de leur qualité intrinsèque.
    => Il faut donc que l’internaute juge la vidéo avant de connaître le jugement des autres, pas d’affichage des scores ou des nombre de vues, ou à minima, affichage flou (ordre de grandeur du nombre de vues plutôt que compte exact par exemple). La présentation en grille est meilleure que la présentation en liste (expérience de salganik)
  • effet de simple exposition : avoir préalablement été exposé à quelqu’un ou à une situation le/la rend plus positive. Ainsi si la même vidéo est présentée plusieurs fois en page d’accueil à un même internaute, ses scores vont artificiellement augmenter.
    => Problème compliqué. On peut envisager
    – Rotation des suggestions
    – Pondération des notes attribuées en fonction de fois affichée (mais je vois pas comment c’est possible sans pistage de l’internaute)
    – J’ai pas beaucoup d’autres idées honnêtement.
  • Biais de confirmation : l’utilisateur va rechercher en priorité le contenu accréditant ses opinions. Ce sont les bulles internet bien connues aujourd’hui. Biais culturel aussi. Même conséquences.
    => diversification des résultats (opinions divergents, marques différentes, etc.)

Pour les techniques déloyales :

  • Clickbait : Possibilité pour les utilisateurs de les signaler comme telles. Je pense qu’un curseur « clickbait <----|---------> pertinent » serait plus efficace qu’un bouton « signaler » (par exemple dans le cas d’un documentaire, bien fait, mais qui ne répond pas totalement au problématiques posées)
  • Astroturfing : système de pondération. Par exemple Les comptes anciens et interagissant avec les autres comptes doivent valoir plus que les comptes récents dans le système de notation. Par exemple si je crée un compte et que je sur l’échelle de clickbait, je mets le curseur sur pertinent, mon vote sera pondéré par 0 à ce moment là, puis, par exemple, 0,80 au bout d’un an pour tendre asymptotiquement vers 1. Ainsi sur le long terme la vidéo mettra tout le monde à égalité. Par contre si les faux comptes prennent du poids au bout d’un ans, la vidéo sera déjà obsolète (élection passé, produit déjà ancien, buzz épuisé…). Par contre faudra trouver un truc pour les comptes crées de manière anticipée et les IA. Peut-être un système de certification de compte.

Ensuite pense qu’il faut que le système de notation soit plus pertinent qu’un simple « j’aime »/« j’aime pas »
Je pense qu’on peut envisager des curseurs comme pour le clickbait : « stupide/intellectuel », « sourcé/non sourcé », « obsolète/toujours pertinent/d’actualité » (les votes anciens devraient être pondérés par 0 pour ce dernier critère). On peut en envisager d’autre pour aider à catégoriser les vidéos

Ils s’intéressent spécifiquement à cela dans le cadre de PeerTube ou il faudrait les contacter sur une base commune plus générale ?

J’ai commencé à chercher des papiers qui pourraient être intéressants.

  • un papier qui définit comment auditer les algorithmes pour éviter la discrimination de contenu (2014)

Ensuite on cherche à résoudre deux problèmes là:

  • présenter les résultats de manière à réduire les biais cognitifs
  • recommender les vidéos de manière la plus fidèle possible

Et ça c’est en partie ce qui détermine la catégorie d’algorithmes qu’on va prendre, car il en existe des différents (voir les 3 approches: https://en.wikipedia.org/wiki/Recommender_system#Approaches ) - lisez bien les différents articles pour comprendre la suite du raisonnement.

La recommendation collaborative est selon moi plus facilement biaisée (mais c’est ce qui fait ça force d’un certain point de vue), mais elle a surtout besoin de données sur les préférences de beaucoup d’utilisateurs pour être pertinente et pouvoir recommender en fonction d’utilisateurs aux goûts “proches”. Cela fait donc deux raisons (dont une technique…) pour l’éviter.

On se retrouve donc limités aux algorithmes basés sur le contenu, qui se concentrent (par exemple) sur les préférences et historiques d’un utilisateur et les données extraites d’une vidéo pour évaluer la place de cette vidéo dans la recommendation. C’est peut-être un peu moins précis mais ça fonctionne aussi sur des instances mono-utilisateur.

Recommender systems are a useful alternative to search algorithms since they help users discover items they might not have found otherwise. Of note, recommender systems are often implemented using search engines indexing non-traditional data.

Ça tombe bien, @Chocobozzz vient juste de remanier le moteur de recherche :smile:

À suivre pour les différents algos que j’arrive à trouver en content-based…

Apologies, I don’t speak French fluently.

I have been doing some thinking about this as well as trying to bootstrap a service for providing recommendations in a generalized (swappable) fashion.

I’m interested in being involved in this implementation.

1 Like

Pour le moment, on ne parle que de Peertube. Mais si Mangaki.fr parle —évidemment— de mangas, ses créateurs voient plus loin. J’ai une interview d’eux sur le feu pour le Framablog, mais ils sont un peu occupés.

1 Like

Welcome!

Hi @Bradsk88 - we’ll switch to english then :wink:

Summary of what we said so far: most likely we want recommendation systems based on content and not on collaborative statistics, since otherwise small instances would suffer from too small samples. It’s also easier to audit. As another (more UI-related but also part of the algorithmic considerations) problem, we also want to minimize bias in the display of videos, so as not to give in the “top charts” popularity contest problem summarized in these slides.

As for the implementation of recommendation systems, I’m open to suggestions but I think most (even simple) ML tools and overall the ML community is working with python. We don’t want to re-invent the wheel and sticking with python sounds like the best option to keep access to the tools+community in the field.
Overall the recommender would look like a process with a simple local API, that PeerTube would start and exchange with. That’s by far the simplest approach when interacting with Python from Node, and that allows us to properly renice the process.
Now the recommender could also be a distant API as a per-user setting override, to allow users to experiment with their own data. We just have to check if it’s realistic in terms of data volume exchanged.

Has anyone begun work on actually developing the “recommendations” section in the peertube instance code?

I’ll jump on that now, just because I feel like coding something.
But if I’m duplicating effort, please let me know.

No, feel free to take it :slight_smile: