Modellutvärdering med MSE
Efter att ha genererat de förutsagda betygen från testdata med ALS-modellen ska du i den här sista delen av övningen förbereda data för att beräkna medelkvadratfelet (MSE) för modellen. MSE är medelvärdet av (original rating – predicted rating)**2 för alla användare och anger hur väl modellen passar data.
Först organiserar du både ratings_final- och predictions-RDD:erna så att de bildar en tupel av formen ((user, product), rating). I båda RDD:erna är mappningen:
0: user
1: product
2: rating
Sedan slår du ihop de transformerade RDD:erna och tillämpar slutligen en funktion för kvadrerad differens tillsammans med mean() för att beräkna MSE.
Kom ihåg att du har ett SparkContext sc tillgängligt i din arbetsyta. ratings_final- och predictions-RDD:erna finns också redan tillgängliga där.
Den här övningen är en del av kursen
Grunderna i Big Data med PySpark
Övningsinstruktioner
- Organisera
ratings-RDD:n till((user, product), rating). - Organisera
predictions-RDD:n till((user, product), rating). - Slå ihop predictions-RDD:n med ratings-RDD:n.
- Utvärdera modellen med MSE mellan det ursprungliga betyget och det förutsagda betyget och skriv ut resultatet.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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(____))