Valutazione del modello usando MSE
Dopo aver generato le valutazioni previste dai dati di test usando il modello ALS, in questa parte finale dell'esercizio preparerai i dati per calcolare il Mean Square Error (MSE) del modello. L'MSE è il valore medio di (original rating – predicted rating)**2 per tutti gli utenti e indica l'aderenza assoluta del modello ai dati.
Per farlo, per prima cosa organizzerai gli RDD ratings_final e predictions per ottenere una tupla di ((user, product), rating)). In entrambi gli RDD la mappatura è:
0: user
1: product
2: rating
Poi eseguirai il join degli RDD trasformati e infine applicherai una funzione di differenza al quadrato insieme a mean() per ottenere l'MSE.
Ricorda: nel tuo workspace è disponibile uno SparkContext sc. Inoltre, gli RDD ratings_final e predictions sono già presenti nel tuo workspace.
Questo esercizio fa parte del corso
Fondamenti di Big Data con PySpark
Istruzioni dell'esercizio
- Organizza l'RDD
ratingsin((user, product), rating). - Organizza l'RDD
predictionsin((user, product), rating). - Esegui il join dell'RDD delle previsioni con l'RDD delle valutazioni.
- Valuta il modello usando l'MSE tra valutazione originale e valutazione prevista e stampalo.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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(____))