8
votes

Algorithmes pour trouver des choses qu'un utilisateur souhaite basé sur d'autres utilisateurs aime

Je pense écrire une application pour classer des films dans un HTPC basé sur ce que les membres de la famille aiment.

Je ne connais pas les statistiques ou AI, mais le matériel ici est très juteux. Je ne saurais pas où commencer faire.

Voici ce que je veux accomplir:

  1. Composez un ensemble d'échantillons de chaque utilisateur aime, indiquez chaque attribut d'échantillon séparément. Par exemple, peut-être qu'un utilisateur aime beaucoup les films occidentaux, de sorte que le genre occidental porterait un peu plus de poids pour cet utilisateur (et ainsi de suite pour d'autres attributs, comme les acteurs, le réalisateur, etc.).

  2. Un utilisateur peut obtenir des suggestions basées sur les goûts des autres utilisateurs. Par exemple, si l'utilisateur A et B comme Spielberg (connexion entre les utilisateurs) et que l'utilisateur B aime Batman commence, mais utilisateur a des hanes Katie Holmes, pesant le film pour l'utilisateur A en conséquence (à nouveau, chaque attribut séparément, par exemple, peut-être peut-être L'utilisateur A ne ressemble pas à des films d'action, alors apportez un peu la note sur un peu, et puisque Katie Holmes n'est pas l'étoile principale, ne prenez pas cela en compte autant que les autres attributs). < / li>

    Fondamentalement, la comparaison des ensembles de l'utilisateur A similaire aux ensembles de l'utilisateur B et propose une note pour l'utilisateur A.

    J'ai une idée brute sur la manière de la mettre en œuvre, mais je suis certain que certains esprits brillants ont déjà pensé à une solution beaucoup meilleure déjà, alors ... toutes les suggestions?

    En fait, après une recherche rapide, il semble qu'un filtre bayésien fonctionnerait. Si oui, cela serait-ce la meilleure approche? Serait-ce aussi simple que de «normaliser» les données de films, formant un classificateur pour chaque utilisateur, puis classer tout simplement chaque film?

    Si votre suggestion comprend des concepts de fusion du cerveau (je ne suis pas expérimenté dans ces sujets, spécialement dans AI), j'apprécierais si vous avez également inclus une liste de bases pour moi pour rechercher avant de plonger dans les trucs de viande .

    Merci!


5 Réponses :


4
votes

1 commentaires

Il y a des choses très intéressantes là-bas, ainsi que des recommandations de lecture que je vais suivre. Merci beaucoup!



2
votes

Il y a quelques algorithmes qui sont bons pour cela:

Artmap: groupes via une probabilité les uns contre les autres (ce n'est pas rapide mais c'est la meilleure chose à faire pour votre problème imo)

ArtMap est titulaire d'un groupe d'attributs communs et détermine la probabilité de similicer via un pourcentage. ArtMap

KMEANS: cela sépare les vecteurs par la distance qu'ils sont les uns des autres KMEANS: Wikipedia

PCA: séparera la moyenne de toutes les valeurs des bits Varing. C'est ce que vous utiliseriez pour faire la détection face et la soustraction de fond dans la vision de l'ordinateur. PCA


2 commentaires

Merci. En lisant sur ArtMap, cela ressemble à un bon candidat. Depuis que je comprends le code meilleur que les documents scientifiques, j'ai trouvé ce Utilisateurs.VisualServer.org/ XHUDIK / ART / DOC / INDEX.HTML et a engendré ceci Stackoverflow.com/Questtions/1609296/... ... KMeans a l'air intéressant aussi, mais un à la fois :)


Ce livre a un didacticiel intro vraiment facile sur ... Amazon. COM / AI-Application-Programming-Tim-Jones / DP / 158450278 9 Cependant, IRC La probabilité FN a une erreur dedans.



2
votes

L'algorithme voisin du K-le plus proche peut être correct de votre allée.


1 commentaires

Celui-là semble assez simple pour que je puisse essayer de me mettre en œuvre. Une bonne ressource d'apprentissage, merci!



4
votes

Ceci est similaire à Cette question où l'OP voulait créer un système de recommandation. En résumé, nous recevons un ensemble de données de formation composées d'évaluations des utilisateurs à des films (1-5 étoiles, par exemple) et d'un ensemble d'attributs pour chaque film (année, genre, acteurs, ..). Nous voulons construire un recommandant de sorte qu'il produira des films invisibles une note possible. Donc, les données INPT ressemblent à: xxx

et pour un film non classé x: xxx

Nous voulons prédire une note. Faire ceci pour tous les films invisibles, puis triez par note de film prévue et la sortie du top 10 vous donne un système de recommandation.

L'approche la plus simple consiste à utiliser un K-voisin le plus proche algorithme. Parmi les films notés, recherchez les "les plus proches" au cinéma X et combinent leurs évaluations pour produire une prédiction. Cette approche présente l'avantage d'être très simple à appliquer facilement à partir de zéro.

D'autres approches plus sophistiquées existent. Par exemple, vous pouvez créer un Arbre de décision , adapté à un ensemble de règles sur les données de formation. Vous pouvez également utiliser Bayesian Networks , Réseaux de neurones artificiels , Prise en charge des machines vectorielles , parmi beaucoup d'autres ... traverser chacun de ceux-ci sera facile pour quelqu'un sans le bon arrière-plan. Je m'attends toujours à ce que vous utilisiez un outil / une bibliothèque externe. Maintenant, vous semblez être familiarisé avec les réseaux bayésiens, donc un simple net naïf Bayes, pourrait en fait être très puissant. Un seul avantage est que cela permet de prédiction sous les données manquantes.

L'idée principale serait quelque peu la même; Prenez les données d'entrée que vous avez, formez un modèle, puis utilisez-le pour prédire la classe de nouvelles instances.

Si vous souhaitez jouer avec différents algorithmes dans un package intuitif simple qui ne nécessite aucune programmation, je vous suggère de vous suggérer. Jetez un coup d'œil à Weka (mon 1ère choix), orange ou RapidMiner . La partie la plus difficile serait de préparer le jeu de données au format requis. Le reste est aussi simple que de choisir quel algorithme et l'appliquer (tout en quelques clics!)

Je suppose que quelqu'un ne cherche pas à aller dans trop de détails, je recommanderais d'aller avec la méthode voisine la plus proche Il est intuitif et facile à mettre en œuvre. Encore la possibilité d'utiliser Weka (ou l'un des autres outils) vaut la peine d'être examinée.


1 commentaires

Réponse géniale, merci. Je vais plonger dans Weka ce week-end et voir ce que je propose.



1
votes

Consultez une partie du travail du Top équipes pour le Prix Netflix .


0 commentaires