НачатьНачать бесплатно

Настройте гиперпараметры ALS-модели для Spark

Теперь нам нужно создать 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", а predictionCol — в значение "prediction", чтобы Spark корректно обрабатывал сгенерированные прогнозы.
  • Запустите 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))
Редактировать и запускать код