Crea un modelo ALS
Vamos a definir tu primer modelo ALS. Completa el código de abajo para construir tu primer modelo ALS.
Recuerda que puedes usar el método .columns sobre el data frame ratings para ver cómo se llaman las columnas que contienen los datos de usuario, película y calificaciones. Spark necesita conocer los nombres de estas columnas para ejecutar correctamente ALS.
Este ejercicio forma parte del curso
Creación de motores de recomendación con PySpark
Instrucciones del ejercicio
- Antes de construir nuestro modelo ALS, necesitamos dividir los datos en entrenamiento y prueba. Usa el método
randomSplit()para dividir el dataframeratingsentraining_dataytest_datacon un reparto 0.8/0.2 respectivamente y unaseedpara el generador aleatorio de42. - Indica a Spark qué columnas contienen
userCol,itemColyratingCol. Usa el método.columnssi lo necesitas. Completa los hiperparámetros. Estableceranken 10,maxIteren 15,regParamo lambda en .1,coldStartStrategyen"drop", el argumentononnegativeenTruey, como nuestros datos contienen calificaciones explícitas, pon el argumentoimplicitPrefsenFalse. - Ahora ajusta el modelo
alsa la partetraining_datade los datosratingsllamando al métodoals.fit()sobre eltraining_dataproporcionado. Llamamodelal modelo ajustado. - Genera predicciones sobre la parte
test_datade los datosratingsllamando al métodomodel.transform()sobre eltest_dataproporcionado. Llamatest_predictionsa las predicciones. Si quieres, visualiza las predicciones llamando al método.show()sobretest_predictions.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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()