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. P>
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. P>
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>
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. P>
5 Réponses :
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. P>
Merci pour la suggestion de livre!
algorithme de la bande intelligente em> forte> a > (H Marmanis, D Babenko, Manning Publishing) est un texte introductif sur le sous-réjonction. Il couvre également les concepts de recherche, mais son objectif principal est de la classification, des systèmes de recommandation et de tels. Cela devrait être une bonne amorce pour votre projet, vous permettant de poser les bonnes questions et de creuser plus profondément où les choses semblent plus prometteuses ou pratiques dans votre situation. p>
Le livre comprend également un "recyclage" de sujets de mathématiques pertinents (principalement une algèbre linéaire), mais ce rafraîchissement est minime; Vous ferez mieux sur le Web. P>
Un moyen agréable de découvrir ou de revenir dans L'algèbre linéaire n'est pas le seul moyen de salut ;-) Vous pouvez trouver utile de vous branler sur des concepts de base de statistiques telles que la distribution, la covariance, l'inférence bayésienne ... P>
Merci, je vais regarder le livre. Et merci pour la série de cours.
Permettez-moi d'expliquer la procédure que les auteurs introduits (comme je l'ai compris):
entrée: strong> p> 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) p> Procédure: strong> L'algorithme proposé est de commencer par grouper aux utilisateurs de la formation en groupes 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. P> La première formule à la page 5 est le définition de la corrélation: p> La deuxième formule est fondamentalement une moyenne pondérée: p> espère que cela clarifie un peu les choses Bit :) p> p>
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. P>
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
Merci, tout est toujours grec pour moi. Un jour je reviendrai et ça va avoir un sens. :)
Vous devez probablement savoir: P>
sympa d'avoir: p>
Cela dit, Les exemples peuvent être: p>
de La documentation officielle du ABRACADABRA Recommander API STRUT> , vous commencez par distinguer entre: P>
sujets forts>: 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. P> li>
flux fort>
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. P> li>
ul>
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. P>
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. P>
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. P>
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 ...) . P>