MovieLens-gegevensset laden in RDD's
Collaborative filtering is een techniek voor aanbevelingssystemen waarbij beoordelingen en interacties van gebruikers met verschillende producten worden gebruikt om nieuwe producten aan te bevelen. Met de opkomst van Machine Learning en het parallel verwerken van data zijn aanbevelingssystemen de afgelopen jaren enorm populair geworden. Ze worden ingezet in uiteenlopende domeinen zoals films, muziek, nieuws, boeken, onderzoeksartikelen, zoekopdrachten en social tags. In deze oefening in 3 delen ga je een eenvoudig aanbevelingssysteem voor films bouwen met PySpark MLlib, met een subset van de MovieLens 100k dataset.
In het eerste deel laad je eerst de MovieLens-data (ratings.csv) in een RDD. Elke regel in de RDD heeft het formaat userId,movieId,rating,timestamp. Je moet de MovieLens-data mappen naar een Ratings-object (userID, productID, rating) door de timestamp-kolom te verwijderen en tot slot de RDD splitsen in trainings- en testrdds.
Onthoud dat je een SparkContext sc beschikbaar hebt in je werkruimte. Ook de variabele file_path (het pad naar het bestand ratings.csv) en de ALS-klasse (dus Rating) zijn al beschikbaar in je werkruimte.
Deze oefening maakt deel uit van de cursus
Big Data Fundamentals met PySpark
Oefeninstructies
- Laad de gegevensset
ratings.csvin een RDD. - Split de RDD met
,als scheidingsteken. - Gebruik voor elke regel in de RDD de klasse
Rating()om een tupleuserID, productID, ratingte maken. - Split de data willekeurig in trainingsdata en testdata (0,8 en 0,2).
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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])