Vertel Spark hoe je je ALS-model wilt afstemmen
Nu moeten we een ParamGrid maken om Spark te vertellen welke hyperparameters we willen afstemmen, hoe we dat willen doen, en vervolgens een evaluator bouwen zodat Spark weet hoe het de prestaties van het algoritme kan meten.
Deze oefening maakt deel uit van de cursus
Aanbevelingssystemen bouwen met PySpark
Oefeninstructies
- Importeer
RegressionEvaluatoruitpyspark.ml.evaluationenParamGridBuilderenCrossValidatoruitpyspark.ml.tuning. - Bouw een
ParamGridmet de naamparam_gridmet de gegevenParamGridBuilder. Roep de methode.addGrid()aan voor elke hyperparameter door de naam van het model en de naam van elke hyperparameter op te geven (bijv.:.addGrid(als.rank, [])). Doe dit voor de hyperparametersrank,maxIterenregParam. Geef ook de bijbehorende lijsten met hyperparameterewaarden op die Spark moet proberen, zoals hier gegeven:
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- Maak een
RegressionEvaluatormet de naamevaluator. StelmetricNamein op"rmse", stellabelColin op"rating", en geef aan Spark door dat het bij het genereren van voorspellingen depredictionCol"prediction"moet noemen. - Voer
len(param_grid)uit om te bevestigen dat de param_grid is gemaakt en om te controleren dat het juiste aantal hyperparametercombinaties wordt getest. Dit moet gelijk zijn aan het aantal rank-waarden × het aantal maxIter-waarden × het aantal regParam-waarden in de ParamGridBuilder.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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))