0

Je construis un système de recommandation à partir des journaux de requêtes. Pour chaque journal de requête, j'ai des données sur les liens sur lesquels les utilisateurs ont cliqué. Les utilisateurs ne fournissent aucune évaluation pour les liens qu'ils visitent. J'essaye de créer un système de recommandation qui suggérera "Si vous avez cliqué celui-ci, essayez celui-ci qu'un autre utilisateur similaire a essayé". J'explore Apache Spark - MLLib pour utiliser le filtrage collaboratif à cette fin. Malheureusement, l'algorithme ALS prend des données "d'évaluation".Filtrage collaboratif MLlib basé sur des articles sans évaluation

Voici une des solutions que j'ai eu en ligne:.

« Pour chaque page, nous voulons des recommandations pour, nous recherchons tous les utilisateurs qui ont vu cette page Alors, pour chacun de ces utilisateurs, nous regardons Nous comptons ensuite le nombre d'utilisateurs qui ont consulté chaque page de cet ensemble de données et utilisons ceux qui comptent le plus pour nos recommandations. "

L'utilisateur suggère que cette approche est lente. Je me demandais s'il y avait un bon moyen de «fausser» les données de classement, ou y a-t-il une implémentation open source populaire qui ne nécessite pas les données de classement?

+0

Les évaluations peuvent également être comptées dans le cas d'une rétroaction implicite. Ex (utilisateur1, url1, 1/0), 1/0 cliqué ou non. –

+0

Merci pour votre réponse. J'ai réfléchi à ce sujet. Les données que j'ai sont seulement les URLs cliquées par l'utilisateur. Donc, de cette façon, je vais avoir tous les 1 dans ma matrice. En outre, si vous placez 0 dans tous les documents restants (qui sont très nombreux), il s'agira d'une très grande matrice éparse. – Omkar12353

Répondre

1

Les évaluations peuvent également être comptées dans le cas d'une rétroaction implicite. Ex (utilisateur1, url1, 1/0), 1/0 cliqué ou non.

Maintenant, vous posez une question différente, de toute façon, il y a une différence entre les matrices creuses et les matrices denses. Vous n'avez pas besoin d'ajouter un 0, c'est l'idée des cotes, vous avez ceux que vous avez un clic, par exemple (u1, url1,1) et si c'est la seule url l'utilisateur 1 cliqué c'est, vous faites pas besoin d'ajouter les ceros pour ceux qu'il n'a pas encore cliqué. Le modèle sait qu'il s'agit du format de données d'entrée utilisé.

J'espère que ça aide.