1

Je tente d'écrire du code pour le filtrage collaboratif basé sur les éléments pour les recommandations de produit. L'entrée a les acheteurs sous forme de lignes et de produits sous forme de colonnes, avec un indicateur 0/1 simple pour indiquer si un acheteur a acheté un article ou non. La sortie est une liste d'articles similaires pour un achat donné, classé par similitudes cosinus.Évaluation des performances du filtrage collaboratif basé sur les articles pour les recommandations de produits binaires (oui/non)

Je tente de mesurer la précision de quelques implémentations différentes, mais je ne suis pas sûr de la meilleure approche. La plupart de la littérature que je trouve mentionne l'utilisation d'une forme d'erreur quadratique moyenne, mais cela semble plus applicable lorsque votre algorithme de filtrage collaboratif prédit une note (par exemple 4 étoiles sur 5) au lieu de recommander quels articles un utilisateur achètera.

Une approche que je considérais était la suivante ...

  • données divisées en ensembles de formation/holdout, train sur les données de formation
  • Pour chaque élément (A) dans l'ensemble, sélectionnez données de la holdout fixé où les utilisateurs ont acheté un
  • Déterminer quel pourcentage de A-acheteurs a acheté un des 3 recommandations pour A-acheteurs

Le arbitraires, mais je pense que ci-dessus semble sorte qu'il pourrait être utilisé ful pour comparer deux algorithmes différents lorsqu'ils sont formés sur les mêmes données.

Répondre

1

En fait votre approche est silencieuse similaire à la littérature mais je pense que vous devriez envisager d'utiliser le rappel et la précision comme le font la plupart des papiers.

http://en.wikipedia.org/wiki/Precision_and_recall

De plus si vous utilisez Apache Mahout il y a une mise en œuvre pour le rappel et la précision dans cette classe; GénériqueRecommenderIRStatsEvaluator

0

La meilleure façon de tester un recommandeur est toujours de vérifier manuellement que les résultats. Cependant, une sorte de vérification automatique est également bonne. Dans l'esprit d'un système de recommandation, vous devez diviser vos données dans le temps et voir si votre algorithme peut prédire ce que le futur achète à l'utilisateur. Cela devrait être fait pour tous les utilisateurs.

Ne vous attendez pas à ce qu'il puisse tout prédire, une exactitude de 100% est généralement un signe de sur-ajustement.