8
votes

Construire un système de filtrage / recommandation collaboratif

Je suis en train de concevoir un site Web construit autour du concept de recommander divers articles aux utilisateurs basés sur leurs goûts. (C'est-à-dire des articles qu'ils ont évalués, des éléments ajoutés à leur liste de favoris, etc.) Quelques exemples de cela sont Amazon, Movielens et Netflix.

Maintenant, mon problème est que je ne suis pas sûr de savoir où commencer en ce qui concerne la partie mathématique de ce système. Je suis prêt à apprendre les calculs nécessaires, c'est juste que je ne sais pas quel type de mathématiques est requis.

J'ai examiné quelques-unes des publications sur grouplens.org , précisément " Vers un algorithme Scalable Knn CF: Explorer des applications efficaces de la clustering . " (PDF) Je suis plutôt bon pour comprendre tout jusqu'à la page 5 "Génération de prédiction"

P.s. Je ne cherche pas exactement une explication de ce qui se passe, bien que cela puisse être utile, mais je suis plus intéressé par les mathématiques que j'ai besoin de savoir. De cette façon, je peux comprendre ce qui se passe.


0 commentaires

5 Réponses :


8
votes

Programmation L'intelligence collective est une introduction vraiment conviviale au champ, avec beaucoup d'exemple de code dans Python. À tout le moins, cela aidera à définir la scène pour comprendre les mathématiques dans les papiers académiques sur le sujet.


1 commentaires

Merci pour la suggestion de livre!




11
votes

Permettez-moi d'expliquer la procédure que les auteurs introduits (comme je l'ai compris):

entrée:

  • données de formation : utilisateurs, articles et évaluations des utilisateurs à ces éléments (non nécessairement chaque utilisateur a noté tous articles)
  • Utilisateur cible : un nouvel utilisateur avec quelques notes de certains articles
  • Objet cible : un article non noté par l'utilisateur cible que nous aimerions prédire une note pour cela.

    sortie:

    • prédiction pour l'élément cible par l'utilisateur cible

      Ceci peut être répété pour un tas d'éléments, puis nous renvoyons les éléments N-TOP (notes prédites les plus élevées)

      Procédure:

      L'algorithme est très similaire à la naïf Méthode Knn (Recherchez toutes les données de formation pour rechercher des utilisateurs avec Évaluations similaires à l'utilisateur cible, combinez leurs évaluations pour donner à la prédiction [vote]).
      Cette méthode simple n'échresse pas très bien, car le nombre d'utilisateurs / éléments augmente.

      L'algorithme proposé est de commencer par grouper aux utilisateurs de la formation en groupes K (groupes de personnes qui Articles nominés de la même manière), où k << n ( n est le nombre total d'utilisateurs).
      Ensuite, nous numérisons ces clusters pour trouver lequel l'utilisateur cible est le plus proche (au lieu de regarder tous les utilisateurs de la formation).
      Enfin, nous choisissons l de ceux-ci et nous faisons notre prédiction comme une moyenne pondérée par la distance de ces clusters l .

      Notez que la mesure de similarité Utilisé est le corrélation coefficient, et l'algorithme de clustering est l'algorithme k-signifie bissectant. Nous pouvons simplement utiliser la norme KMANS , et nous pouvons utiliser d'autres métriques de similarité aussi bien telles que telles que Distance Euclidienne ou distance cosinine.

      La première formule à la page 5 est le définition de la corrélation: xxx

      La deuxième formule est fondamentalement une moyenne pondérée: xxx

      espère que cela clarifie un peu les choses Bit :)


1 commentaires

Merci, tout est toujours grec pour moi. Un jour je reviendrai et ça va avoir un sens. :)



1
votes

Vous devez probablement savoir:

  • algèbre linéaire
  • Intelligence artificielle / apprentissage / statistiques

    sympa d'avoir:

    • espaces métriques
    • Topologie
    • EDA / Statistiques robustes
    • algèbre affine
    • Analyse fonctionnelle
    • Théorie graphique

      Cela dit, vous pouvez aller loin avec juste bon sens . Si vous avez une liste de propriétés que vous souhaitez que votre système satisfait, vous pourrez faire beaucoup de code qui satisfait à ces propriétés.

      Les exemples peuvent être:

      • Ne faites jamais une "mauvaise" recommandation
      • Le score est croissant monotone dans quelques paramètres
      • Gardez la porte ouverte pour X, Y, z Idée d'amélioration que nous avons pour le bas de la ligne.

0 commentaires

1
votes

de La documentation officielle du ABRACADABRA Recommander API , vous commencez par distinguer entre:

  • sujets : Ce sont les entités que vous souhaitez recommander à un utilisateur. Un film ou un article est par exemple un sujet. Les sujets sont caractérisés qu'ils ont certains attributs ou contenus qui les distinguent entre les différentes matières.

  • attributs : un attribut est un terme générique pour une caractéristique d'un sujet. Cela peut être n'importe quoi et cela dépend vraiment de la façon dont vous définissez le sujet. Dans l'exemple où le sujet est un film, un attribut pourrait être le genre, par exemple. aventure, action, science-fiction. Un attribut pourrait également être un mot clé présent dans la description de ce film, le nom de l'acteur, l'année qu'un film a été publié, etc. Vous l'appelez!

  • utilisateurs : Comme son nom l'indique, il s'agit de la personne qui souhaite recevoir des recommandations de certains sujets. L'utilisateur construit un profil utilisateur en aimant les attributs ou les sujets (puis les attributs connectés).

  • flux Il y a un débit général (ordre dans lequel des trucs est effectué) qui est pertinent pour tout type de système de recommandation et qui est également intuitivement facile à comprendre.

    La première chose à faire est de remplir le moteur de recommandation avec des sujets et leurs attributs correspondants. Cela doit généralement être fait une fois, mais cela peut également être fait de manière dynamique. Par exemple, si vous recommandez des articles, vous voudrez peut-être le faire à chaque fois qu'un article est ajouté à votre site Web ou à votre blog.

    La deuxième étape est entrée les préférences d'un utilisateur. Avec l'identifiant unique de votre utilisateur, vous pouvez former le système de recommandation en aimant ou à ne pas aimer certains sujets ou attributs. Par exemple, un utilisateur peut être affiché une liste de films et il / elle reçoit la possibilité de donner à chaque film une note. Sinon, l'utilisateur peut créer un profil en saisissant quels attributs préfèrent (par exemple quels genres, mots-clés, date de sortie, etc.). Cette partie est vraiment à vous de décider et de la logique de votre projet.

    Une fois que le système a été formé (rempli de sujets et préférences de l'utilisateur), nous pouvons appeler le moteur à nous fournir des recommandations. Vous pouvez le faire une fois, mais aussi de manière dynamique (reconversion ainsi le modèle après chaque rétroaction que vous recevez de l'utilisateur). Comme l'utilisateur fournit plus de commentaires, le modèle devient meilleur et les recommandations approchent des préférences réelles de l'utilisateur.

    Notez que avec le ABRACADABRA Recommander API Vous devez seulement envoyer des appels HTTP à l'API à former votre modèle et recevoir des recommandations. L'API peut être consulté à l'aide de n'importe quelle langue, ainsi de votre site Web ou de votre application (angulaire, réagissante, JavaScript ...) ou votre serveur (Nodejs, Curl, Java, Python, Objective-C, Ruby, .NET ...) .


0 commentaires