Indiquez à Spark comment ajuster votre modèle ALS
Nous devons maintenant créer un ParamGrid pour indiquer à Spark quels hyperparamètres ajuster, comment les ajuster, puis construire un évaluateur afin que Spark sache comment mesurer les performances de l’algorithme.
Cet exercice fait partie du cours
<cours>Créer des moteurs de recommandation avec PySpark</cours>Instructions de l’exercice
- Importez
RegressionEvaluatordepuispyspark.ml.evaluationetParamGridBuilderainsi queCrossValidatordepuispyspark.ml.tuning. - Construisez un
ParamGridnomméparam_griden utilisant leParamGridBuilderfourni. Appelez la méthode.addGrid()pour chaque hyperparamètre en fournissant le nom du modèle et le nom de chaque hyperparamètre (ex. :.addGrid(als.rank, [])). Faites-le pour les hyperparamètresrank,maxIteretregParam. Indiquez également les listes respectives de valeurs d’hyperparamètres que Spark doit essayer, comme indiqué ici :
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- Créez un
RegressionEvaluatornomméevaluator. DéfinissezmetricNamesur"rmse",labelColsur"rating", et indiquez à Spark que lorsqu’il génère des prédictions, il doit nommer lapredictionCol"prediction". - Exécutez
len(param_grid)pour confirmer que le param_grid a été créé et pour vérifier 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))