Modelevaluatie met MSE
Nadat je met het ALS-model de voorspelde beoordelingen uit de testgegevens hebt gegenereerd, ga je in dit laatste deel van de oefening de gegevens voorbereiden om de Mean Square Error (MSE) van het model te berekenen. De MSE is de gemiddelde waarde van (original rating – predicted rating)**2 voor alle gebruikers en geeft aan hoe goed het model absoluut past bij de data.
Hiervoor organiseer je eerst zowel de ratings_final als de predictions RDD's tot een tuple van ((user, product), rating)). In beide RDD's is de mapping:
0: user
1: product
2: rating
Vervolgens join je de getransformeerde RDD's en pas je tot slot een gekwadrateerd verschil toe, samen met mean(), om de MSE te krijgen.
Onthoud dat je een SparkContext sc tot je beschikking hebt in je werkruimte. Ook zijn ratings_final en predictions RDD al beschikbaar in je werkruimte.
Deze oefening maakt deel uit van de cursus
Big Data Fundamentals met PySpark
Oefeninstructies
- Organiseer de
ratingsRDD tot((user, product), rating). - Organiseer de
predictionsRDD tot((user, product), rating). - Join de prediction-RDD met de ratings-RDD.
- Evalueer het model met de MSE tussen de originele beoordeling en de voorspelde beoordeling en print deze.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Prepare ratings data
rates = ratings_final.____(lambda r: ((r[0], r[1]), ____))
# Prepare predictions data
preds = predictions.____(lambda r: ((____, ____), ____))
# Join the ratings data with predictions data
rates_and_preds = rates.____(preds)
# Calculate and print MSE
MSE = rates_and_preds.____(lambda r: (r[1][0] - r[1]____)**2).mean()
print("Mean Squared Error of the model for the test data = {:.2f}".format(____))