Un mémorandum sur la mise en œuvre des recommandations en Python

introduction

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)

Résumé

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

Un mémorandum sur la mise en œuvre des recommandations en Python
Récupérer l'appelant d'une fonction en Python
Copiez la liste en Python
Écrire une note sur la version python de python virtualenv
[Note] À propos du rôle du trait de soulignement "_" en Python
Sortie sous la forme d'un tableau python
Implémentation du tri rapide en Python
À propos des fonctionnalités de Python
À propos des tests dans la mise en œuvre de modèles d'apprentissage automatique
Implémentation du jeu de vie en Python
Implémentation du tri original en Python
À propos de la liste de base des bases de Python
Découvrez la largeur apparente d'une chaîne en python
Une implémentation Python simple de la méthode k-voisinage (k-NN)
[Note] Importation de fichiers dans le répertoire parent en Python
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Une histoire sur la tentative d'introduire Linter au milieu d'un projet Python (Flask)
Vérifiez le comportement du destroyer en Python
Ecrire le test dans la docstring python
Afficher une liste d'alphabets en Python 3
À propos de l'environnement virtuel de Python version 3.7
Comment vérifier la taille de la mémoire d'une variable en Python
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Exécuter l'interpréteur Python dans le script
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Le résultat de l'installation de python sur Anaconda
Une fonction qui mesure le temps de traitement d'une méthode en python
Principes de base pour exécuter NoxPlayer en Python
À la recherche du FizzBuzz le plus rapide en Python
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python
Python VBA pour obtenir une capture de la page WEB entière avec Selenium
Si vous voulez un singleton en python, considérez le module comme un singleton
Vérifions la chaîne d'octets en mémoire du nombre flottant flottant en Python
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Obtenez une instance datetime à tout moment de la journée en Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Dessiner un graphique d'une fonction quadratique en Python
[Python] Récupérez les fichiers dans le dossier avec Python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Faites correspondre la distribution de chaque groupe en Python
Pourquoi l'implémentation Python d'ISUCON 5 a utilisé Bottle
Afficher le résultat du traitement de la géométrie en Python
Un mémo que j'ai écrit un tri de fusion en Python
Trouvez le nombre de jours dans un mois
Réécrire des éléments dans une boucle de listes (Python)
Découvrez la fraction de la valeur saisie en python
Analyse de données en Python: une note sur line_profiler
Pensez à créer un environnement Python 3 dans un environnement Mac
Un mémorandum sur la bibliothèque de wrapper Python tesseract
L'histoire de la lecture des données HSPICE en Python
Créez un tracé de R semblable à un joyplot avec python
Résolution d'équations de mouvement en Python (odeint)
[Python] Une compréhension approximative du module de journalisation
Touchons une partie de l'apprentissage automatique avec Python
Environnement enregistré pour l'analyse des données avec Python
Prise en compte des forces et faiblesses de Python