Diga ao Spark como ajustar seu modelo ALS
Agora vamos criar um ParamGrid para informar ao Spark quais hiperparâmetros queremos ajustar, como ajustá-los e, em seguida, construir um avaliador para que o Spark saiba como medir o desempenho do algoritmo.
Este exercicio faz parte do curso
Construindo mecanismos de recomendação com PySpark
Instruções do exercicio
- Importe
RegressionEvaluatordepyspark.ml.evaluationeParamGridBuildereCrossValidatordepyspark.ml.tuning. - Construa um
ParamGridchamadoparam_gridusando oParamGridBuilderfornecido. Chame o método.addGrid()para cada hiperparâmetro, informando o nome do modelo e o nome de cada hiperparâmetro (ex:.addGrid(als.rank, [])). Faça isso para os hiperparâmetrosrank,maxItereregParam. Também forneça as respectivas listas de valores de hiperparâmetros que o Spark deve testar, conforme indicado aqui:
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- Crie um
RegressionEvaluatorchamadoevaluator. DefinametricNamecomo"rmse", definalabelColcomo"rating"e diga ao Spark que, ao gerar previsões, chame apredictionColde"prediction". - Execute
len(param_grid)para confirmar que o param_grid foi criado e para verificar que o número correto de combinações de hiperparâmetros será testado. Ele deve ser igual ao número de valores de rank * o número de valores de maxIter * o número de valores de regParam no ParamGridBuilder.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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))