CommencerCommencez gratuitement

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>
Voir le cours

Instructions de l’exercice

  • Importez RegressionEvaluator depuis pyspark.ml.evaluation et ParamGridBuilder ainsi que CrossValidator depuis pyspark.ml.tuning.
  • Construisez un ParamGrid nommé param_grid en utilisant le ParamGridBuilder fourni. 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ètres rank, maxIter et regParam. 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 RegressionEvaluator nommé evaluator. Définissez metricName sur "rmse", labelCol sur "rating", et indiquez à Spark que lorsqu’il génère des prédictions, il doit nommer la predictionCol "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))
Modifier et exécuter le code