Costruisci un modello ALS
Specifichiamo il tuo primo modello ALS. Completa il codice qui sotto per costruire il tuo primo modello ALS.
Ricorda che puoi usare il metodo .columns sul data frame ratings per vedere come si chiamano le colonne che contengono dati su utente, film e valutazioni. Spark deve conoscere il nome di queste colonne per eseguire correttamente ALS.
Questo esercizio fa parte del corso
Costruire motori di raccomandazione con PySpark
Istruzioni dell'esercizio
- Prima di costruire il modello ALS, dobbiamo suddividere i dati in training e test. Usa il metodo
randomSplit()per dividere il dataframeratingsintraining_dataetest_datacon una suddivisione rispettivamente 0,8/0,2 e unseeddel generatore di numeri casuali pari a42. - Indica a Spark quali colonne contengono
userCol,itemColeratingCol. Usa il metodo.columnsse necessario. Completa gli iperparametri. Impostaranka 10,maxItera 15,regParam(lambda) a .1,coldStartStrategya"drop", l’argomentononnegativeaTruee, poiché i nostri dati contengono valutazioni esplicite, impostaimplicitPrefsaFalse. - Ora adatta il modello
alsalla porzionetraining_datadei datiratingschiamando il metodoals.fit()sutraining_data. Chiama il modello addestratomodel. - Genera le previsioni sulla porzione
test_datadei datiratingschiamando il metodomodel.transform()sutest_data. Chiama le previsionitest_predictions. Se vuoi, visualizza le previsioni chiamando il metodo.show()sutest_predictions.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Split the ratings dataframe into training and test data
(training_data, test_data) = ratings.____([____, ____], seed=42)
# Set the ALS hyperparameters
from pyspark.ml.recommendation import ALS
als = ALS(userCol="____", itemCol="____", ratingCol="____", rank =____, maxIter =____, regParam =____,
coldStartStrategy="____", nonnegative =____, implicitPrefs = ____)
# Fit the mdoel to the training_data
____ = ____.fit(____)
# Generate predictions on the test_data
____ = ____.transform(____)
test_predictions.show()