J'écris un programme spark pour faire des recommandations. Ensuite, j'ai utilisé la bibliothèque ALS.recommendation. Et j'ai fait un petit test avec l'ensemble de données suivant appelé trainData:Se tromper de recommandation avec ALS.recommendation
(u1, m1, 1)
(u1, m4, 1)
(u2, m2, 1)
(u2, m3, 1)
(u3, m1, 1)
(u3, m3, 1)
(u3, m4, 1)
(u4, m3, 1)
(u4, m4, 1)
(u5, m2, 1)
(u5, m4, 1)
La première colonne contient l'utilisateur, le second contient les éléments notés par les utilisateurs et le troisième contient les évaluations.
Dans mon code écrit en scala j'ai formé le modèle en utilisant:
myModel = ALS.trainImplicit(trainData, 3, 5, 0.01, 1.0)
Je tente de récupérer quelques recommandations pour u1 utilisant cette instruction:
recommendations = myModel.recommendProducts(idUser, 2)
où idUser contient l'ID affecté à l'utilisateur u1 À titre de recommandation, j'obtiens:
(u1, m1, 1.0536233346170754)
(u1, m4, 0.8540954252858661)
(u1, m3, 0.09069877419040584)
(u1, m2, -0.1345521479521654)
Comme vous pouvez le voir, les deux premières lignes montrent que les éléments recommandés sont ceux que u1 avait déjà notés (m1 et m4). Quel que soit l'utilisateur que je sélectionne pour obtenir les recommandations, j'ai toujours le même comportement (les premiers items recommandés sont ceux que l'utilisateur a déjà notés).
Je trouve ça bizarre! Y a-t-il un problème quelconque?
Je ne sont pas d'accord avec votre réponse. car le comportement attendu que vous décrivez ne correspond pas aux explications et exemples proposés dans le livre "Advanced analytics with Spark". – semteu
mis à jour ma réponse avec des informations de la source et les docs –