Ange för Spark hur din ALS-modell ska finjusteras
Nu behöver vi skapa ett ParamGrid för att tala om för Spark vilka hyperparametrar vi vill att den ska justera och hur, samt bygga en utvärderare så att Spark vet hur algoritmens prestanda ska mätas.
Den här övningen är en del av kursen
Bygg rekommendationsmotorer med PySpark
Övningsinstruktioner
- Importera
RegressionEvaluatorfrånpyspark.ml.evaluationsamtParamGridBuilderochCrossValidatorfrånpyspark.ml.tuning. - Bygg ett
ParamGridmed namnetparam_gridmed hjälp av den tillhandahållnaParamGridBuilder. Anropa metoden.addGrid()för varje hyperparameter genom att ange modellens namn och namnet på respektive hyperparameter (ex:.addGrid(als.rank, [])). Gör detta för hyperparametrarnarank,maxIterochregParam. Ange också de respektive listorna med hyperparametervärden som Spark ska prova, enligt följande:
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- Skapa en
RegressionEvaluatormed namnetevaluator. SättmetricNametill"rmse", sättlabelColtill"rating", och ange för Spark att prediktionskolumnen ska kallaspredictionCol"prediction". - Kör
len(param_grid)för att bekräfta att param_grid skapades korrekt och att rätt antal hyperparameterkombinationer kommer att testas. Antalet ska vara lika med antalet rank-värden * antalet maxIter-värden * antalet regParam-värden i ParamGridBuilder.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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))