2011-08-16 4 views
0

Le problème que je suis en train de résoudre est de trouver la bonne mesure de similarité, heuristique rescorer et le niveau de filtration pour mes données. (J'utilise le 'niveau de filtrage' pour indiquer le nombre d'évaluations qu'un utilisateur ou un élément doit avoir associé à celui-ci pour l'intégrer à la base de données de production).Mahout Log Vraisemblance similitude de comportement métrique

Configuration
J'utilise le goût de cornac cadre de filtrage collaboratif. Mes données se présentent sous la forme de triplets où l'évaluation d'un objet est contenue dans l'ensemble {1,2,3,4,5}. J'utilise un recommandeur itemBased sur une métrique de similarité logLikelihood. Je filtre les utilisateurs qui évaluent moins de 20 éléments du jeu de données de production. RMSE semble bon (1.17ish) et il n'y a pas de recouvrement de données en cours, mais il y a un comportement étrange qui n'est pas souhaitable et qui ressemble à une erreur.

Question

First Call - Générer une liste 'articles' top sans information de l'utilisateur. Pour ce faire, je l'utilise, ce que j'appelle, un Centré Somme:

for i in items 
for r in i's ratings 
    sum += r - center 

where center = (5+1)/2 , if you allow ratings in the scale of 1 to 5 for example 

J'utilise une somme centrée au lieu des notations moyennes pour générer une liste d'articles haut principalement parce que je veux que le nombre d'évaluations qu'un élément a reçu pour intégrer le classement.

Deuxième appel - Je demande 9 articles similaires à chacun des articles les plus élevés retournés dans le premier appel. Pour chaque article haut que j'ai demandé pour des articles similaires, 7 des 9 articles similaires retournés sont les mêmes (que les articles similaires retournés pour les autres articles)!

Est-il temps d'essayer une nouvelle notation? Peut-être multiplier la similarité de deux jeux par (nombre d'articles co-notés)/x, où x est accordé (environ 50 ou quelque chose pour commencer).

Merci à l'avance les gars

Répondre

0

Vous demandez 50 articles similaires à un certain point X. Ensuite, vous chercher des 9 articles similaires pour chacun de ces 50. Et la plupart d'entre eux sont les mêmes. Pourquoi est-ce surprenant? Les éléments similaires doivent être similaires aux mêmes éléments.

Qu'est-ce qu'une somme "centrée"? Le classement par somme plutôt que par la moyenne vous donne toujours un résultat relativement similaire si le nombre d'éléments dans la somme pour chaque calcul est à peu près similaire.

Quel problème tentez-vous de résoudre? Parce que rien de tout cela ne semble avoir une incidence sur le système de recommandation que vous décrivez et que vous utilisez. La similarité logarithmique n'est même pas fondée sur les notations.

+0

Merci pour votre réponse rapide Sean! Le problème que j'essaie de résoudre consiste à trouver la bonne métrique de similarité et l'heuristique de récupération pour mes données. Désolé pour l'ambiguïté, j'ai mis à jour ma question avec une description de ce que j'appelle une somme "centrée". Vos commentaires sur Log-Likelihood sont les plus appréciés. Je suis passé à l'utilisation de LL parce que GenericItemRecommender doit plafonner moins de valeurs lorsqu'il est utilisé avec LL par rapport à Pearson (puisque les poids négatifs sont autorisés). Peut-être devrais-je revenir à l'utilisation de Pearson, en mettant en place une forme de sauveteur cette fois-ci? –

+0

Votre premier processus consiste principalement à construire une liste d'articles les mieux notés. Votre ensemble de données est-il petit ou fragmenté? Si c'est le cas, je peux m'imaginer que ce ne sont que les articles les mieux notés qui ont tendance à avoir une similarité définie avec d'autres articles, en raison de la clarté.Cela pourrait expliquer pourquoi vous voyez les mêmes éléments encore et encore. Ceci n'utilise toujours pas le Recommender - sauf si vous utilisez simplement mostSimilarItems(). –

+0

Merci pour l'aide Sean. Le problème s'est avéré être que je triais des éléments similaires par gameID au lieu de la valeur de similarité! Wups. De plus, passer de Log-vraisemblance à Pearson depuis que j'ai des données d'évaluation était un bon choix (même si le fait de m'éclaircir me fait peur). Merci pour votre aide Sean! –