Modifier: J'ai essayé une application Spark autonome (au lieu de PredictionIO) et mes observations sont les mêmes. Donc ce n'est pas un problème PredictionIO, mais encore confus.Pourquoi ALS.trainImplicit donne-t-il de meilleures prédictions pour les évaluations explicites?
J'utilise PredictionIO 0.9.6 et le modèle Recommendation pour le filtrage collaboratif. Les notes dans mon ensemble de données sont des nombres entre 1 et 10. Quand j'ai d'abord formé un modèle avec les valeurs par défaut du modèle (en utilisant ALS.train
), les prédictions étaient horribles, au moins subjectivement. Les scores allaient jusqu'à 60,0 ou plus, mais les recommandations semblaient totalement aléatoires.
Quelqu'un a suggéré que ALS.trainImplicit
a fait un meilleur travail, donc je changé src/main/scala/ALSAlgorithm.scala
en conséquence:
val m = ALS.trainImplicit( // instead of ALS.train
ratings = mllibRatings,
rank = ap.rank,
iterations = ap.numIterations,
lambda = ap.lambda,
blocks = -1,
alpha = 1.0, // also added this line
seed = seed)
scores sont maintenant beaucoup plus faible (inférieure à 1,0), mais les recommandations sont conformes aux évaluations personnelles. Beaucoup mieux, mais aussi déroutant. PredictionIO définit la différence entre explicite et implicite ainsi:
préférence explicite (également appelé comme « rétroaction explicite »), comme « note » donnée au point par les utilisateurs. préférence implicite (également référencé comme "commentaires implicites"), tels que l'historique "view" et "buy".
et:
Par défaut, le modèle de recommandation utilise
ALS.train()
qui attend des valeurs de notation explicites que l'utilisateur a noté l'élément.
La documentation est mauvaise? Je pense toujours que commentaires explicites correspond à mon cas d'utilisation. Peut-être que je dois adapter le modèle avec ALS.train
afin d'obtenir des recommandations utiles? Ou ai-je juste mal compris quelque chose?
D'où vous proviennent vos évaluations? Sont-ils calculés ou demandez-vous explicitement aux utilisateurs d'évaluer les éléments entre 1 et 10? Si oui, alors vous utilisez en effet les commentaires explicites – alex9311
@ alex9311 en effet, les utilisateurs ont évalué les éléments sur une échelle de 1 à 10. J'ai quelques millions d'évaluations. – stholzm