Aan de slagBegin gratis

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

Bekijk cursus

Oefeninstructies

  • Importeer RegressionEvaluator uit pyspark.ml.evaluation en ParamGridBuilder en CrossValidator uit pyspark.ml.tuning.
  • Bouw een ParamGrid met de naam param_grid met de gegeven ParamGridBuilder. 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 hyperparameters rank, maxIter en regParam. 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 RegressionEvaluator met de naam evaluator. Stel metricName in op "rmse", stel labelCol in op "rating", en geef aan Spark door dat het bij het genereren van voorspellingen de predictionCol "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))
Code bewerken en uitvoeren