Inizia subitoInizia gratis

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

Visualizza corso

Istruzioni dell'esercizio

  • Importa RegressionEvaluator da pyspark.ml.evaluation e ParamGridBuilder e CrossValidator da pyspark.ml.tuning.
  • Crea un ParamGrid chiamato param_grid usando il ParamGridBuilder fornito. 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 iperparametri rank, maxIter e regParam. 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 RegressionEvaluator chiamato evaluator. Imposta metricName su "rmse", imposta labelCol su "rating" e indica a Spark che quando genera le predizioni deve chiamare la predictionCol "prediction".
  • Esegui len(param_grid) per confermare che param_grid sia 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))
Modifica ed esegui il codice