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>Übungsanweisungen
- Importiere
RegressionEvaluatorauspyspark.ml.evaluationsowieParamGridBuilderundCrossValidatorauspyspark.ml.tuning. - Baue ein
ParamGridnamensparam_gridmit dem bereitgestelltenParamGridBuilder. 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 Hyperparameterrank,maxIterundregParam. 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
RegressionEvaluatornamensevaluator. SetzemetricNameauf"rmse", setzelabelColauf"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))