Підкажіть Spark, як тюнити вашу модель ALS
Тепер потрібно створити ParamGrid, щоб повідомити Spark, які гіперпараметри тюнити, як саме це робити, а також побудувати оцінювач, щоб Spark знав, як вимірювати продуктивність алгоритму.
Ця вправа є частиною курсу
Створення рушіїв рекомендацій у PySpark
Інструкції до вправи
- Імпортуйте
RegressionEvaluatorзpyspark.ml.evaluationтаParamGridBuilderіCrossValidatorзpyspark.ml.tuning. - Побудуйте
ParamGridпід назвоюparam_grid, використовуючи наданийParamGridBuilder. Викличте метод.addGrid()для кожного гіперпараметра, вказавши назву моделі та назву гіперпараметра (напр.:.addGrid(als.rank, [])). Зробіть це для гіперпараметрівrank,maxIterіregParam. Також передайте відповідні списки значень гіперпараметрів, які має спробувати Spark, як наведено тут:
rank: [10, 50, 100, 150]
maxIter: [5, 50, 100, 200]
regParam: [.01, .05, .1, .15]
- Створіть
RegressionEvaluatorпід назвоюevaluator. ВстановітьmetricNameу"rmse", задайтеlabelColяк"rating"і вкажіть Spark, що під час генерації прогнозів слід назвати стовпецьpredictionCol"prediction". - Запустіть
len(param_grid), щоб переконатися, що param_grid створено, і що буде перевірено правильну кількість комбінацій гіперпараметрів. Це має дорівнювати кількості значень rank * кількості значень maxIter * кількості значень regParam у ParamGridBuilder.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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))