Indica a Spark cómo ajustar tu modelo ALS
Ahora necesitamos crear un ParamGrid para indicarle a Spark qué hiperparámetros queremos que ajuste, cómo debe ajustarlos y, después, construir un evaluador para que Spark sepa cómo medir el rendimiento del algoritmo.
Este ejercicio forma parte del curso
Creación de motores de recomendación con PySpark
Instrucciones del ejercicio
- Importa
RegressionEvaluatordepyspark.ml.evaluationyParamGridBuilderyCrossValidatordepyspark.ml.tuning. - Construye un
ParamGridllamadoparam_gridusando elParamGridBuilderproporcionado. Llama al método.addGrid()para cada hiperparámetro indicando el nombre del modelo y el nombre de cada hiperparámetro (p. ej.,.addGrid(als.rank, [])). Hazlo para los hiperparámetrosrank,maxIteryregParam. Indica también las listas de valores de hiperparámetros que Spark debe probar, tal como se muestran aquí:
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- Crea un
RegressionEvaluatorllamadoevaluator. EstablecemetricNameen"rmse",labelColen"rating", y dile a Spark que, cuando genere predicciones, llame a lapredictionCol"prediction". - Ejecuta
len(param_grid)para confirmar que se creó el param_grid y que se probará el número correcto de combinaciones de hiperparámetros. Debe ser igual al número de valores de rank * el número de valores de maxIter * el número de valores de regParam en el ParamGridBuilder.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# Import the requisite items
from pyspark.ml.evaluation import ____
from pyspark.ml.____ import ____, ____
# Add hyperparameters and their respective values to param_grid
____ = ParamGridBuilder() \
.addGrid(als.rank, [____, ____, ____, ____]) \
.addGrid(als.____, [____, ____, ____, ____]) \
.addGrid(als.____, [____, ____, ____, ____]) \
.build()
# Define evaluator as RMSE and print length of evaluator
____ = RegressionEvaluator(metricName="____", labelCol="____", predictionCol="____")
print ("Num models to be tested: ", len(param_grid))