LoslegenKostenlos starten

Sag Spark, wie es dein ALS-Modell abstimmen soll

Jetzt erstellen wir ein ParamGrid, um Spark mitzuteilen, welche Hyperparameter abgestimmt werden sollen, wie die Abstimmung erfolgen soll, und bauen anschließend einen Evaluator, damit Spark die Leistung des Algorithmus messen kann.

Diese Übung ist Teil des Kurses

<Kurs>Recommendation Engines mit PySpark erstellen</Kurs>
Kurs ansehen

Übungsanweisungen

  • Importiere RegressionEvaluator aus pyspark.ml.evaluation sowie ParamGridBuilder und CrossValidator aus pyspark.ml.tuning.
  • Baue ein ParamGrid namens param_grid mit dem bereitgestellten ParamGridBuilder. Rufe die Methode .addGrid() für jeden Hyperparameter auf, indem du den Namen des Modells und den Namen des jeweiligen Hyperparameters angibst (z. B.: .addGrid(als.rank, [])). Mache das für die Hyperparameter rank, maxIter und regParam. Gib außerdem die entsprechenden Listen von Hyperparameterwerten an, die Spark ausprobieren soll, wie hier angegeben:
 rank: [10, 50, 100, 150]  
 maxIter: [5, 50, 100, 200]  
 regParam: [.01, .05, .1, .15]  
  • Erstelle einen RegressionEvaluator namens evaluator. Setze metricName auf "rmse", setze labelCol auf "rating", und teile Spark mit, dass die Vorhersagen in der Spalte "prediction" (predictionCol) stehen sollen.
  • Führe len(param_grid) aus, um zu bestätigen, dass das Parameterraster erstellt wurde und dass die richtige Anzahl an Hyperparameter-Kombinationen getestet wird. Sie sollte der Anzahl der rank-Werte * der Anzahl der maxIter-Werte * der Anzahl der regParam-Werte im ParamGridBuilder entsprechen.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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))
Code bearbeiten und ausführen