Je le programme avec Scala, mais la langue n'a pas d'importance ici.Spark MLlib - Comment valider le filtre collaboratif de feedback implicite
l'entrée du filtre de rétroaction de collaboration implicite (ALS.trainImplicit) sont, dans ce cas, des vues d'un produit:
- Evaluation ("user1", "product1", 21,0) // signifie que user1 a vu les détails de product1 21 fois
- Note ("user2", "product1", 4.0)
- Note ("user3", "produit2", 7,0)
Mais la sortie (MatrixFactorizationModel .ré commendProductsForUsers) sont comme:
- Note ("user1", "product1", 0,78)
- Note ("user2", "product1", 0,63)
valeurs 0,78 et 0,64 dans le la sortie ressemble à quelque chose de normalisé entre 0 et 1, mais les valeurs dans l'entrée étaient 21,4,7, etc.
Je ne pense pas que dans ce cas, il est logique de calculer MSE (erreur quadratique moyenne) entre l'entrée et la sortie comme nous pouvons le faire lorsque nous utilisons des filtres collaboratifs avec une rétroaction explicite. Donc, la question est, comment valider le filtre collaboratif lors de l'utilisation de la rétroaction implicite?
Comment calculez-vous la précision et la couverture dans ce cas (la définition officielle)? – italktothewind
Pour moi, il serait important de savoir si un client a acheté l'article dans la période de test/validation (Précision). Donc, construisez un ensemble d'entraînement et un ensemble de test (période de temps après l'entraînement). par exemple. Je prends les recommandations top5 pour les clients donnés et compare cela aux ventes dans la période d'essai. La couverture est simplement le% du produit recommandé (par exemple dans top5) parmi les produits possibles. – Duesentrieb