Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1032 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Algorithme de recommandation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algorithme de recommandation

n°1981351
Yanas
Posté le 06-04-2010 à 19:13:35  profilanswer
 

Hello,
 
Je suis occupé à mettre au point, pour un travail dans un cours à l'école, un système de recommandation de films. Il m'est demandé de faire tout un site qui doit, entre autres, permettre aux utilisateurs ayant accordé une note entre 1 et 5 à plusieurs films de leur recommander des nouveaux films en fonction de leurs "goûts" (ce qu'ils ont aimé dans leurs précédents votes et ce qu'ils n'ont pas aimé).
 
Tout le site est terminé et fonctionne pas trop mal, mais il me reste maintenant la "grosse" partie, à savoir l'implémentation de l'algorithme de recommandation.
 
La partie intéressante de ma db, à savoir les ratings, se compose comme suit :
 
- id
- user_id
- movie_id
- rating
- timestamp
 
Au niveau de l'algo à implémenter, on m'a parlé de deux choses :
 
- Vectoriel : considérer chaque utilisateur comme un vecteur ayant n dimensions, où n est le nombre de films dans ma db. La ième coordonnée de ce vecteur étant le rating accordé par l'utilisateur au film i. Ensuite, il faudrait comparer les utilisateurs (vecteurs) entre-eux et trouver l'utilisateur qui ressemble le plus à celui auquel il faut recommander un film.
- Slope one : calculer pour ma table de ratings une matrice de "différences de moyenne", laquelle permettrait de dire qu'en moyenne, le film i et plus noté de 0.5 points que le film j, et d'ensuite appliquer cette "moyenne" à un utilisateur pour prédire la note qu'il accorderait à un film particulier.
 
Avez-vous déjà utilisé ces algorithmes? Une idée pour me lancer? Je pateauge un peu là...
 
Merci d'avance.
 
Jérôme.

mood
Publicité
Posté le 06-04-2010 à 19:13:35  profilanswer
 

n°1984782
Yanas
Posté le 16-04-2010 à 12:19:30  profilanswer
 

up :-)

n°1984786
Fred999
Rabat-joie
Posté le 16-04-2010 à 12:23:51  profilanswer
 

Salut,
 
Tu devrais reclasser ton sujet dans la cat "Algo"
 
++

n°1984813
Elmoricq
Modérateur
Posté le 16-04-2010 à 13:19:12  profilanswer
 

Fred999 a écrit :

Salut,
 
Tu devrais reclasser ton sujet dans la cat "Algo"
 
++


 
Tout à fait. Je l'ai déplacé dans la bonne sous-catégorie.

n°1985032
Flaie
No it's necessary
Posté le 16-04-2010 à 23:18:21  profilanswer
 

Salut Jérôme :hello:,
 
tu devrais jeter un oeil au livre Programming Collective Intelligence plus précisément le chapitre 2 (Making recommendations) qui traite de ce sujet et qui pourra t'éclairer sur quelques algorithmes. Tu peux consulter quelques parties du livre en pdf sur le site d'oreilly (2 ou 3 pages ne seront pas affichées), ou tu peux te le procurer à la bibliothèque de ton école probablement.
 
Le principe est pas compliqué, il faut tenter de trouver des utilisateurs similaires (qui tendent à avoir les mêmes gouts (donné le même genre de notes aux films)), pour faire ça tu dois comparer chaque personne avec les autres et calculer un score de similitude, les deux approches que donne l'auteur sont soit de calculer une distance euclidienne, soit en utilisant le Coefficient de corrélation linéaire de Bravais-Pearson.  
 
Une fois que tu as implémenté ta méthode de "scoring", il faut l'utiliser pour calculer la personne qui a le meilleur score pour une personne donnée, tu vas donc par exemple tenter de trouver la personne qui a donné les scores les plus similaires aux tiens sur les films que vous avez tous les deux vus. Avec ces deux étapes tu te retrouve donc avec la personne ayant noté le plus comme toi, mais il te faut encore trouver un moyen de savoir quels films cette personne à vu et que tu serais les plus susceptible d'aimer. Pour faire ça il te reste à calculer un score pondéré des reviews des autres utilisateurs.
 
Admettons que toi Jérôme tu ai vus les films A, B, C, et D, ainsi que Jessica, Emmanuel, Damien, et d'autres sauf qu'eux en ont également vus d'autres et que justement tu voudrais savoir quels films parmis ceux qu'ils ont vu tu devrais regarder aussi). Tu as déjà calculé des scores de similarité (S1, S2, ..., SN) entre toi et Jessica, toi et Emmanuel, etc.. Alors pour chaque films qu'ils ont vu et toi non, tu va multiplier leur note par le score de similitude entre vous deux, et tu divisera le tout par la somme des score de similarité entre toi et toutes les personnes qui ont vu ce film (afin d'éviter qu'un film vu par plus de personne qu'un autre n'ait forcément un meilleur score).
Et voila, tu n'a plus qu'à trier ces résultats de façon décroissante, et tu as une recommandation des films que tu es le plus susceptible d'aimer au vu des utilisateurs les plus proches de toi question goût!
 
Dans le bouquin tu as des exemples d'implémentation en Python si ça peut t'aider à te mettre sur la voie (je ne sais pas quel techno tu utilises pour ton site web).
 
Bonne chance  :bounce:
Si tu trouves ce genre de sujets intéressants, n'hésite pas à lire le livre, il est vraiment bien. :jap:


Message édité par Flaie le 16-04-2010 à 23:20:44

---------------
Always wear a camera!
n°1985054
rufo
Pas me confondre avec Lycos!
Posté le 17-04-2010 à 11:44:48  profilanswer
 

Tu peux utiliser la méthode d'analyse en composantes principales (ACP avec une SVD -> calcul de vecteurs et valeurs propres). Je l'ai employée pour le calcul de similarités entre documents : j'avais donc un petit côté sémantique dans le tas -> j'ai utilisé l'ago LSA http://fr.wikipedia.org/wiki/Analy [...] ue_latente avec le calcul des tf-idf. Ca me donne de bons résultats (par contre, faute de puissance de calcul, je me suis arrêté au calcul de la matrice des corrélations).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2255641
Yanas
Posté le 13-04-2015 à 20:28:36  profilanswer
 

5 ans plus tard, je me rends compte que j'ai réussi à trouver ce que je cherchais mais que je n'ai jamais pris la peine de dire merci. Donc voilà: merci.
 
(Je sors  :o)

n°2255662
rufo
Pas me confondre avec Lycos!
Posté le 14-04-2015 à 09:24:20  profilanswer
 

Plus qu'un merci, tu poster ta solution, ça pourra servir à d'autres ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Algorithme de recommandation

 

Sujets relatifs
algorithme test memoireComparaison entre 2 dates/algorithme PHP
Simuler un algorithme parallelealgorithme de tri
Lien entre algorithme et language Cdébutant algorithme simple
Algorithme de repartition en pourcentageAlgorithme d'un Moteur de reservation
Algorithme / programmation tournoi poules match défisALGORITHME, aidez moi svp
Plus de sujets relatifs à : Algorithme de recommandation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR