„MovieLens“-Datensatz in RDDs laden
Kollaboratives Filtern ist eine Technik für Empfehlungssysteme, bei der anhand der Bewertungen und Interaktionen von Benutzern mit verschiedenen Produkten neue Produkte empfohlen werden. Mit dem Aufkommen von maschinellem Lernen und der parallelen Datenverarbeitung wurden Empfehlungssysteme in den letzten Jahren sehr populär. Sie werden in diversen Bereichen eingesetzt, zum Beispiel für Filme, Musik, Nachrichten, Bücher, Forschungsartikel, Suchanfragen und Social-Media-Tags. In dieser dreiteiligen Übung wirst du mittels PySpark MLlib ein einfaches Filmempfehlungssystem entwickeln und dazu eine Teilmenge des „MovieLens 100K“-Datensatzes verwenden.
Im ersten Teil lädst du zunächst die MovieLens-Daten (ratings.csv
) in einen RDD. Von jeder Zeile im RDD, die das Format userId,movieId,rating,timestamp
hat, musst du die MovieLens-Daten auf ein Ratings-Objekt (userID, productID, rating
) abbilden, nachdem du die Timestamp-Spalte entfernt hast. Abschließend teilst du den RDD in zwei RDDs für Training und Test auf.
Zur Erinnerung: Der SparkContext sc
ist schon im Arbeitsbereich verfügbar. Auch die Variable file_path
(mit dem Pfad zur Datei ratings.csv
) und die ALS-Klasse (d. h. Rating
) sind bereits im Arbeitsbereich vorhanden.
Diese Übung ist Teil des Kurses
Grundlagen von Big Data mit PySpark
Anleitung zur Übung
- Lade den Datensatz
ratings.csv
in einen RDD. - Zerlege den RDD mit
,
als Trennzeichen. - Erstelle für jede Zeile des RDD mithilfe der Klasse
Rating()
ein Tupel der FormuserID, productID, rating
. - Teile die Daten nach dem Zufallsprinzip in Trainingsdaten und Testdaten auf (im Verhältnis von 0,8 zu 0,2).
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Load the data into RDD
data = sc.____(file_path)
# Split the RDD
ratings = data.____(lambda l: l.split('____'))
# Transform the ratings RDD
ratings_final = ratings.____(lambda line: Rating(int(line[0]), int(____), float(____)))
# Split the data into training and test
training_data, test_data = ratings_final.____([0.8, 0.2])