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
Instrukcje do ćwiczenia
- Zaimportuj
RegressionEvaluatorzpyspark.ml.evaluationorazParamGridBuilderiCrossValidatorzpyspark.ml.tuning. - Zbuduj
ParamGrido nazwieparam_grid, korzystając z dostarczonegoParamGridBuilder. Wywołaj metodę.addGrid()dla każdego hiperparametru, podając nazwę modelu i nazwę hiperparametru (np..addGrid(als.rank, [])). Zrób to dla hiperparametrówrank,maxIteriregParam. 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
RegressionEvaluatoro nazwieevaluator. UstawmetricNamena"rmse",labelColna"rating", a kolumnę prognozpredictionColnazwij"prediction". - Uruchom
len(param_grid), aby sprawdzić, czyparam_gridzostał poprawnie utworzony i czy przetestowana zostanie właściwa liczba kombinacji hiperparametrów. Powinna ona być równa liczbie wartościrankpomnożonej przez liczbę wartościmaxIteri liczbę wartościregParamzdefiniowanych wParamGridBuilder.
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))