CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Importez RegressionEvaluator depuis pyspark.ml.evaluation ainsi que ParamGridBuilder et CrossValidator depuis pyspark.ml.tuning.
  • Créez un ParamGrid nommé param_grid à l'aide de ParamGridBuilder. 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ètres rank, maxIter et regParam. 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 RegressionEvaluator appelé evaluator. Réglez metricName à "rmse", labelCol à "rating", et indiquez à Spark que, lorsqu'il génère des prédictions, la colonne de sortie predictionCol doit 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))
Modifier et exécuter le code