Ein Memorandum über die Umsetzung von Empfehlungen in Python

Einführung

Ich muss Empfehlungen in meiner Arbeit verwenden und habe die Empfehlungsbibliothek von Python recherchiert, um sie als Memorandum zusammenzufassen. Da es sich hauptsächlich um eine kurze Einführung in die Bibliothek handelt und die Erklärung des Algorithmus usw. nicht erwähnt wird, beziehen Sie sich gegebenenfalls auf ein anderes Dokument.

Ich habe mich vorher noch nicht mit den Empfehlungen befasst, aber heutzutage habe ich das Gefühl, dass ich ernsthaft lernen muss. ..

crab HP: http://muricoca.github.io/crab/ GitHub: https://github.com/muricoca/crab

Diese Bibliothek war die erste, die in Pythons Implementierung der Co-Filterung gefunden wurde. Es wird gesagt, dass artikelbasierte und benutzerbasierte Co-Filterung berechnet werden kann, aber es scheint, dass sie in letzter Zeit nicht viel verwendet wurde, da das letzte Update von GitHub Master vor 4 Jahren war. .. In modernen Umgebungen funktionierte es aufgrund der Abhängigkeiten anderer Bibliotheken nicht gut.

Präsentationsmaterialien auf der Konferenz 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

Eine kooperative Filterung unter Verwendung von Singularitätszerlegungs- und Nachbarschaftsalgorithmen ist möglich. Das berechnete Modell kann gespeichert und als Datei wiederverwendet werden. Es gibt viele Methoden zur Auswertung. Dies ist daher am einfachsten zu verwenden, es sei denn, Sie streben nach Genauigkeit.

Die Methode mit Nonnegative Matrix Factorization (NMF), die in den letzten Jahren der Mainstream war, wird jedoch nicht unterstützt. Wenn Sie sie also verwenden möchten, sollten Sie sie mit der folgenden Ninfa implementieren.

Übrigens musste ich dieses Mal auch die Ähnlichkeit zwischen Elementen berechnen, also habe ich mich dafür entschieden.

nimfa HP: http://nimfa.biolab.si GitHub: https://github.com/marinkaz/nimfa

Die in den letzten Jahren populär gewordene Methode mit NMF scheint nicht als Empfehlungsbibliothek zu existieren, aber da die für die Implementierung wichtigen Matrixoperationen als Bibliothek bereitgestellt werden, kann sie ohne große Schwierigkeiten implementiert werden. Scheint machbar zu sein. Die Implementierungsalgorithmen sind ziemlich zahlreich und es gab allein mehr als 10 Arten von Faktorisierungsimplementierungen. Da ist ein Unterschied. .. (Ry

** Referenzmaterial zu NMF ** [Matrix Factorization Techniques for Recommender Systems] (http://www2.research.att.com/~volinsky/papers/ieeecomputer.pdf) Grundlagen der nicht-negativen Matrixfaktor-Zerlegung NMF und Anwendung auf Daten- / Signalanalyse (http://www.kecl.ntt.co.jp/icl/signal/sawada/mypaper/829-833_9_02.pdf) [Nicht negative Matrixfaktorisierung] (http://d.hatena.ne.jp/a_bicky/20100325/1269479839)

Spark + MLlib

MLlib - Collaborative Filtering

Spark + MLlib verfügt auch über eine Empfehlungsimplementierung. Wenn Sie also die Datenmenge verteilen möchten, die nicht skaliert werden kann, sollten Sie diese verwenden. In MLlib wird die Matrixfaktorisierung mithilfe einer Technik namens Alternate Least Square implementiert, und es wird auch eine Python-API bereitgestellt.

** Verweise ** [Spark and Matrix Factorization] (http://stanford.edu/~rezab/slides/reza_codeneuro.pdf)

[Implementierung eines Empfehlungssystems in Dataproc mit Spark's MLlib] (http://qiita.com/kndt84/items/b975ac9e6552f5289ec9)

Zusammenfassung

Wenn Sie Empfehlungen in Python implementieren und diese einfach verwenden möchten, ist die Verwendung von Python-recsys meiner Meinung nach der schnellste Weg. NMF wird jedoch nicht unterstützt, was heutzutage sehr beliebt ist. Wenn Sie also NMF verwenden möchten, ist es meiner Meinung nach besser, es mit nimfa zu implementieren.

Wenn Sie eine große Datenmenge verarbeiten möchten, die nicht skaliert werden kann, verfügt Spark + MLlib über eine Empfehlungsimplementierung und eine Python-API. Ich denke, es ist besser, diese zu verwenden. Dies wurde separat überprüft und wird in einem anderen Artikel vorgestellt.

Recommended Posts

Ein Memorandum über die Umsetzung von Empfehlungen in Python
Holen Sie sich den Aufrufer einer Funktion in Python
Kopieren Sie die Liste in Python
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Ausgabe in Form eines Python-Arrays
Implementierung der schnellen Sortierung in Python
Über die Funktionen von Python
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Implementierung eines Lebensspiels in Python
Implementierung der ursprünglichen Sortierung in Python
Informationen zur Grundlagenliste der Python-Grundlagen
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Eine einfache Python-Implementierung der k-Neighborhood-Methode (k-NN)
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
Eine Geschichte über den Versuch, Linter mitten in einem Python (Flask) -Projekt vorzustellen
Überprüfen Sie das Verhalten des Zerstörers in Python
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Zeigen Sie eine Liste der Alphabete in Python 3 an
Informationen zur virtuellen Umgebung von Python Version 3.7
So überprüfen Sie die Speichergröße einer Variablen in Python
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Führen Sie den Python-Interpreter im Skript aus
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Das Ergebnis der Installation von Python auf Anaconda
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Grundlagen zum Ausführen von NoxPlayer in Python
Auf der Suche nach dem schnellsten FizzBuzz in Python
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
Python VBA, um mit Selenium die gesamte WEB-Seite zu erfassen
Wenn Sie einen Singleton in Python möchten, stellen Sie sich das Modul als Singleton vor
Überprüfen Sie die speicherinterne Byte-Zeichenfolge der Gleitkommazahl in Python
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
Holen Sie sich zu jeder Tageszeit eine Datums- / Uhrzeitinstanz in Python
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
[Python] Holen Sie sich die Dateien mit Python in den Ordner
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Passen Sie die Verteilung jeder Gruppe in Python an
Warum die Python-Implementierung von ISUCON 5 Bottle verwendet
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Ein Memo, das ich in Python zusammengeführt habe
Finden Sie die Anzahl der Tage in einem Monat
Umschreiben von Elementen in einer Listenschleife (Python)
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Datenanalyse in Python: Ein Hinweis zu line_profiler
Denken Sie daran, eine Python 3-Umgebung in einer Mac-Umgebung zu erstellen
Ein Memorandum über die Python-Tesseract-Wrapper-Bibliothek
Die Geschichte des Lesens von HSPICE-Daten in Python
Machen Sie mit Python eine Joyplot-ähnliche Handlung von R.
Lösen von Bewegungsgleichungen in Python (odeint)
[Python] Ein grobes Verständnis des Protokollierungsmoduls
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Berücksichtigung der Stärken und Schwächen von Python