Indiquez à Spark comment optimiser votre modèle ALS
Nous devons maintenant créer un ParamGrid pour indiquer à Spark quels hyperparamètres optimiser, comment les explorer, puis construire un évaluateur afin que Spark sache comment mesurer la performance de l'algorithme.
Cette activité fait partie du cours
Créer des moteurs de recommandation avec PySpark
Instructions de l’exercice
- Importez
RegressionEvaluatordepuispyspark.ml.evaluationainsi queParamGridBuilderetCrossValidatordepuispyspark.ml.tuning. - Créez un
ParamGridnomméparam_gridà l'aide deParamGridBuilder. Appelez la méthode.addGrid()pour chaque hyperparamètre en fournissant le nom du modèle et le nom de l'hyperparamètre (ex. :.addGrid(als.rank, [])). Faites-le pour les hyperparamètresrank,maxIteretregParam. Indiquez aussi les listes de valeurs qu'Spark doit tester, comme suit :
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- Créez un
RegressionEvaluatorappeléevaluator. RéglezmetricNameà"rmse",labelColà"rating", et indiquez à Spark que, lorsqu'il génère des prédictions, la colonne de sortiepredictionColdoit s'appeler"prediction". - Exécutez
len(param_grid)pour confirmer que le param_grid a été créé et que le bon nombre de combinaisons d'hyperparamètres sera testé. Il doit être égal au nombre de valeurs de rank × le nombre de valeurs de maxIter × le nombre de valeurs de regParam dans le ParamGridBuilder.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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))