Indica a Spark come ottimizzare il tuo modello ALS
Ora dobbiamo creare un ParamGrid per dire a Spark quali iperparametri vogliamo ottimizzare, come farlo, e poi costruire un evaluator così che Spark sappia come misurare le prestazioni dell'algoritmo.
Questo esercizio fa parte del corso
Costruire motori di raccomandazione con PySpark
Istruzioni dell'esercizio
- Importa
RegressionEvaluatordapyspark.ml.evaluationeParamGridBuildereCrossValidatordapyspark.ml.tuning. - Crea un
ParamGridchiamatoparam_gridusando ilParamGridBuilderfornito. Chiama il metodo.addGrid()su ciascun iperparametro fornendo il nome del modello e il nome di ogni iperparametro (es.:.addGrid(als.rank, [])). Fai questo per gli iperparametrirank,maxItereregParam. Fornisci anche le rispettive liste di valori di iperparametro che Spark deve provare, come indicato qui:
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- Crea un
RegressionEvaluatorchiamatoevaluator. ImpostametricNamesu"rmse", impostalabelColsu"rating"e indica a Spark che quando genera le predizioni deve chiamare lapredictionCol"prediction". - Esegui
len(param_grid)per confermare cheparam_gridsia stato creato e che verrà testato il numero corretto di combinazioni di iperparametri. Dovrebbe essere uguale al numero di valori di rank * il numero di valori di maxIter * il numero di valori di regParam nel ParamGridBuilder.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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))