Zacznij terazZacznij za darmo

Powiedz Sparkowi, jak dostroić model ALS

Teraz trzeba utworzyć ParamGrid, aby powiedzieć Sparkowi, które hiperparametry ma dostrajać i jak to robić. Następnie zbudujemy ewaluator, dzięki któremu Spark będzie mógł mierzyć wydajność algorytmu.

To ćwiczenie jest częścią kursu

Budowanie silników rekomendacji w PySpark

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaimportuj RegressionEvaluator z pyspark.ml.evaluation oraz ParamGridBuilder i CrossValidator z pyspark.ml.tuning.
  • Zbuduj ParamGrid o nazwie param_grid, korzystając z dostarczonego ParamGridBuilder. Wywołaj metodę .addGrid() dla każdego hiperparametru, podając nazwę modelu i nazwę hiperparametru (np. .addGrid(als.rank, [])). Zrób to dla hiperparametrów rank, maxIter i regParam. Podaj też odpowiednie listy wartości, które Spark ma przetestować:
 rank: [10, 50, 100, 150]  
 maxIter: [5, 50, 100, 200]  
 regParam: [.01, .05, .1, .15]  
  • Utwórz RegressionEvaluator o nazwie evaluator. Ustaw metricName na "rmse", labelCol na "rating", a kolumnę prognoz predictionCol nazwij "prediction".
  • Uruchom len(param_grid), aby sprawdzić, czy param_grid został poprawnie utworzony i czy przetestowana zostanie właściwa liczba kombinacji hiperparametrów. Powinna ona być równa liczbie wartości rank pomnożonej przez liczbę wartości maxIter i liczbę wartości regParam zdefiniowanych w ParamGridBuilder.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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))
Edytuj i uruchom kod