J'ai besoin d'utiliser des recommandations dans mon travail, et j'ai recherché la bibliothèque de recommandations de Python, je l'ai donc résumée sous forme de mémorandum. De plus, puisqu'il s'agit principalement d'une brève introduction de la bibliothèque et ne mentionne pas l'explication de l'algorithme etc., veuillez vous référer à un autre document si nécessaire pour cela.
Je n'ai jamais traité des recommandations avant, mais aujourd'hui, je pense que je dois étudier sérieusement. ..
crab HP: http://muricoca.github.io/crab/ GitHub: https://github.com/muricoca/crab
Cette bibliothèque a été la première à être trouvée dans l'implémentation du co-filtrage par Python. On dit que le co-filtrage basé sur les éléments et les utilisateurs peut être calculé, mais il semble qu'il n'ait pas été beaucoup utilisé récemment car la dernière mise à jour du maître GitHub remonte à 4 ans. .. Cela ne fonctionnait pas bien dans les environnements modernes en raison des dépendances d'autres bibliothèques.
Matériel de présentation à la conférence http://conference.scipy.org/scipy2011/slides/caraciolo_crab_recommendation.pdf
python-recsys HP: http://ocelma.net/software/python-recsys/build/html/index.html GitHub: https://github.com/ocelma/python-recsys
Un filtrage coopératif utilisant la décomposition de singularité et des algorithmes de voisinage est possible. Le modèle calculé peut être enregistré et réutilisé en tant que fichier, et il existe de nombreuses méthodes d'évaluation, c'est donc la plus simple à utiliser, sauf si vous recherchez la précision.
Cependant, il ne prend pas en charge la méthode utilisant la factorisation matricielle non négative (NMF), qui est la norme ces dernières années, donc si vous souhaitez l'utiliser, vous devez l'implémenter en utilisant le ninfa suivant.
À propos, j'avais également besoin de calculer la similitude entre les éléments cette fois-ci, alors j'ai adopté cela.
nimfa HP: http://nimfa.biolab.si GitHub: https://github.com/marinkaz/nimfa
La méthode utilisant NMF, qui est devenue populaire ces dernières années, ne semble pas exister en tant que bibliothèque de recommandations, mais comme les opérations matricielles qui sont importantes dans la mise en œuvre sont fournies sous forme de bibliothèque, elle peut être implémentée sans trop de difficulté en l'utilisant. Cela semble faisable. Les algorithmes d'implémentation sont assez abondants, et il y avait plus de 10 types d'implémentations de factorisation seuls. Il y a une différence. .. (ry
** Matériel de référence sur NMF ** [Matrix Factorization Techniques for Recommender Systems] (http://www2.research.att.com/~volinsky/papers/ieeecomputer.pdf) [Bases de la décomposition de facteurs matriciels non négatifs NMF et application à l'analyse des données / signaux] (http://www.kecl.ntt.co.jp/icl/signal/sawada/mypaper/829-833_9_02.pdf) [Factorisation matricielle non négative] (http://d.hatena.ne.jp/a_bicky/20100325/1269479839)
Spark + MLlib
MLlib - Collaborative Filtering
Spark + MLlib a également une implémentation de recommandation, donc si vous souhaitez distribuer la quantité de données qui ne peut pas être augmentée, vous devez l'utiliser. Dans MLlib, la factorisation matricielle est implémentée à l'aide d'une technique appelée Alternate Least Square, et une API Python est également fournie.
** Les références ** [Spark and Matrix Factorization] (http://stanford.edu/~rezab/slides/reza_codeneuro.pdf)
[Implémentation d'un système de recommandation dans Dataproc à l'aide de MLlib de Spark] (http://qiita.com/kndt84/items/b975ac9e6552f5289ec9)
Lors de la mise en œuvre des recommandations en Python, si vous souhaitez l'utiliser facilement, je pense que l'utilisation de python-recsys est le moyen le plus rapide. Cependant, il ne prend pas en charge NMF, qui est populaire de nos jours, donc si vous souhaitez utiliser NMF, je pense qu'il est préférable de l'implémenter en utilisant nimfa.
De plus, si vous souhaitez gérer une grande quantité de données qui ne peuvent pas être mises à l'échelle, Spark + MLlib a une implémentation de recommandation et une API Python est également fournie, donc je pense qu'il est préférable de l'utiliser. Cela a été vérifié séparément et sera présenté dans un autre article.
Recommended Posts