This repository builds upon the work of Exploratory Data Analysis (EDA) on Amazon Review Data (2018) Using MongoDB & PySpark and includes a web application that is connected to a product recommendation system developed with the comprehensive Amazon Review Data (2018) dataset, consisting of nearly 233.1 million records and occupying approximately 128 gigabytes (GB) of data storage, using MongoDB, PySpark, and Apache Kafka als Teil des letzten Projekts für die Grundkurs von Big Data Analytics (DS2004).
Produktempfehlungssysteme sind Softwaretypen, die Datenanalysen und maschinelles Lerntechniken verwenden, um Kunden anhand ihrer Interessen, früheren Einkäufe und der Browserhistorie Produkte vorzuschlagen. Diese Systeme finden Sie auf E-Commerce-Websites wie Amazon.com und sind so konzipiert, dass sie Benutzern in Echtzeit personalisierte Empfehlungen geben. Empfehlungssysteme arbeiten, indem große Datenmengen wie Benutzerverhalten, Produktattribute und Transaktionshistorien analysiert werden. Basierend auf diesen Daten generiert das System Empfehlungen, die für die Interessen und Präferenzen des Benutzers relevant sind. Wenn beispielsweise ein Benutzer zuvor ein Buch zu einem bestimmten Thema gekauft hat, kann das Empfehlungssystem andere Bücher zum gleichen Thema oder verwandten Themen vorschlagen.
Der Datensatz von Amazon Review Data (2018) kann verwendet werden, um ein Produktempfehlungssystem zu schulen, das Benutzern aufgrund ihrer Kaufhistorie personalisierte Produktvorschläge sowie die Zufriedenheitsstufen anderer Benutzer, die Produkte auf der Plattform überprüft und bewertet haben, auf der Plattform überprüft und bewertet haben. Da der Datensatz jedoch groß ist, ist es entscheidend, die relevanten Funktionen sorgfältig zu analysieren und auszuwählen, die effektiv zum Produktempfehlungssystem beitragen, um sowohl Überanpassung als auch Unteranpassung des maschinellen Lernmodells zu vermeiden.
Ähnlich wie bei unserem Ansatz bei der Durchführung von Explorationsdatenanalysen (EDA) in den Amazon Review-Daten (2018) Datensatz Amazon Review Data (2018) -Analyse.IPynb, 1-38) verwendeten wir eine statistische Inferenzmethode für die Schulung unseres Produktempfehlungsmodells. Die Begründung für die Verwendung einer Stichprobe, um Rückschlüsse auf die gesamte Bevölkerung zu ziehen, besteht darin, die mit der Verarbeitung des vollständigen Datensatzes verbundene Rechenbelastung zu minimieren, die für eine einzelne Maschine häufig unpraktisch ist. Während Deep Learning in der Regel große Datenmengen erfordert, kann maschinelles Lernen auch bei kleinen Datensätzen effektiv verwendet werden, um robuste Trainingsmethoden zu entwickeln. Dies ist besonders nützlich für hypothesengesteuerte Forschungen, die unser Hauptziel des Produktempfehlungssystems sind. (Vabalas et al., 2019) In jedem Fall ist es wichtig zu beachten, dass ein Datensatz im Wesentlichen eine Teilmenge einer größeren Bevölkerung ist.
Um die Genauigkeit unserer Ergebnisse zu gewährleisten, ist es entscheidend, potenzielle Verzerrungen in den Daten sorgfältig zu analysieren und zu mildern. Dies ist besonders wichtig für maschinelles Lernen, was empfindlich auf Verzerrungen ist, die zu verzerrten Leistungsschätzungen führen können. Um dieses Problem anzugehen, werden wir den zuvor diskutierten geschichteten zufälligen Stichprobenansatz anwenden, um eine repräsentative Stichprobe von 10.000.000 Aufzeichnungen aus der Bevölkerung zu extrahieren und gleichzeitig dieselbe Produktverteilung wie im ursprünglichen Datensatz beizubehalten. (compress.py, 1-61) Da die Stichprobengröße ziemlich groß ist, haben wir sie in ein Apache-Parquet-Dateiformat komprimiert, das die Größe des Datensatzes um über 90%verringert.
Alternating Den Last Squares (ALS) ist ein kollaborativer Filteralgorithmus, der zur Entwicklung von Produktempfehlungssystemen verwendet wird. Der Algorithmus zielt darauf ab, die latenten oder verborgenen Faktoren zu erlernen, die die Interaktionen zwischen Benutzer und Elementen beeinflussen, indem die Bewertungsmatrix der Benutzer-Elemente in zwei niedrigrangige Matrizen zerlegt wird, die den Benutzer- und Element-latenten Faktoren darstellen.
Alternierende kleinste Quadrate (ALS) funktioniert iterativ und wechselt zwischen der Fixierung eines Satzes latenter Faktoren und der Lösung des anderen mit einem Optimierungsalgorithmus mit kleinster Quadrat. Insbesondere in jeder Iteration behebt der Algorithmus die latenten Elementfaktoren und löst für die latenten Faktoren der Benutzer unter Verwendung der Optimierung der kleinsten Quadrate und dann die latenten Faktoren der Benutzer und löst für die latenten Elementfaktoren unter Verwendung der Optimierung der kleinsten Quadrate.
Alternierende kleinste Quadrate (ALS) haben mehrere Vorteile für Produktempfehlungssysteme. Es ist skalierbar und rechnerisch effizient, insbesondere für große und spärliche Datensätze. Es kann implizite Feedback-Daten behandelt werden, bei denen die Interaktionen zwischen Benutzer und Elementen nur bekannt sind oder nicht existieren, und nicht deren spezifischen Bewertungen. Es kann auch fehlende Daten verarbeiten, bei denen nicht alle Benutzer alle Elemente bewertet haben. Darüber hinaus kann abwechselndes kleinste Quadrate (ALS) Artikelempfehlungen in Echtzeit geben, was es für Online-Empfehlungssysteme geeignet ist.
Product Recommendation Model.ipynb - Enthält die Implementierung (MLLIB) des geschulten und getesteten Produktempfehlungssystems im Datensatz von Amazon Review Data (2018).srcdata.py - Quellcode zum Speichern des Datensatzes aus der JSON -Datei JavaScript Object Notation (JSON) in eine MongoDB -Datenbank als Sammlung.srccompress.py - Quellcode zum Extrahieren einer geschichteten Zufallsstichprobe einer angegebenen Stichprobengröße aus dem in der MongoDB -Datenbank gespeicherten Datensatz als Sammlung und Speichern Sie sie als Apache -Parquetendatei.srcvalidate.py - Quellcode, um die Genauigkeit und Funktionalität des geschulten Produktempfehlungssystems anhand eines praktischen Beispiels zu validieren.modelproduct_recommendation_model - Verzeichnis, das das geschulte Modell für maschinelles Lernen für das Produktempfehlungssystem enthält.appapplication.py - Quelle für die Webanwendung (Flasche), die dem Produktempfehlungssystem über einen Apache -Kafka -Cluster zugeordnet ist.apprecommendation.py - Quellcode für den Apache Kafka -Cluster, das mit dem geschulten maschinellen Lernmodell für das Produktempfehlungssystem verbunden ist und die Erzeugung von Produktempfehlungen ermöglicht.templates - Enthält die Quellcodes für die Webseiten ( login.html , dashboard.html , review.html , loading.html und recommendation.html ) von der Webanwendung (Flask) gerendert.static - Enthält alle Symbole und visuellen Elemente, die von der Webanwendung (Flasche) verwendet werden..hintrc - Konfigurationsdatei zum Anpassen von Eslints Verhalten, indem bestimmte Einstellungen und Regeln angegeben werden. All_Amazon_Review.json.gz von der Amazon Review Data (2018) -Kollektionswebsite herunter.srcdata.py aus, um den Datensatz aus der JSON -Datei JavaScript Object Notation (JSON) in einer MongoDB -Datenbank als Sammlung zu speichern (stellen Sie sicher, dass MongoDB bereits eingerichtet ist).srccompress.py aus, um eine geschichtete Zufallsstichprobe einer bestimmten Größe aus dem in MongoDB gespeicherten Datensatz zu extrahieren und die Probe als Apache -Parquetendatei zu speichern.Product Recommendation Model.ipynb aus. IPYNB-Datei (1-16), um die Sammlung zu transformieren und in MongoDB wieder zu speichern, um den dauerhaften Zugriff zu erhalten (Sie müssen nicht die gesamte Datei ausführen).apprecommendation.py auf .appapplication.py auszuführen und den bereitgestellten Link zum Hostport zu öffnen./dashboard -Seite auf die Schaltfläche Überprüfung und senden Sie alle Inhalte./loading eine fünfminütige Wartezeit geben, während die Produktempfehlungen generiert werden./recommendation umgeleitet, um die generierten Produktempfehlungen anzuzeigen. Die Quellcode -Dateien wurden speziell für macOS ventura geschrieben und benötigen möglicherweise Änderungen, um die ordnungsgemäße Ausführung in anderen Betriebssystemen sicherzustellen.
Dieses Projekt besteht dank der außergewöhnlichen Menschen, die dazu beigetragen haben.