Построение модели ALS
Давайте создадим вашу первую модель ALS. Дополните приведённый ниже код, чтобы построить её.
Напомним, что метод .columns применительно к датафрейму ratings позволяет просмотреть названия столбцов, содержащих данные о пользователях, фильмах и оценках. Spark необходимо знать эти названия, чтобы корректно выполнить алгоритм ALS.
Это упражнение является частью курса
Построение рекомендательных систем с помощью PySpark
Инструкции к упражнению
- Прежде чем строить модель ALS, разделите данные на тренировочную и тестовую выборки. Используйте метод
randomSplit(), чтобы разбить датафреймratingsнаtraining_dataиtest_dataв соотношении 0,8/0,2 соответственно, задав значение параметраseedдля генератора случайных чисел равным42. - Укажите Spark, какие столбцы соответствуют
userCol,itemColиratingCol. При необходимости воспользуйтесь методом.columns. Заполните гиперпараметры: установитеrankравным 10,maxIter— 15,regParam(lambda) — 0,1,coldStartStrategy—"drop", аргументnonnegativeзадайте какTrue, а поскольку данные содержат явные оценки, установите аргументimplicitPrefsравнымFalse. - Обучите модель
alsна тренировочной части данныхtraining_data, вызвав методals.fit()и передав в негоtraining_data. Сохраните обученную модель под именемmodel. - Сгенерируйте предсказания для тестовой части данных
test_data, вызвав методmodel.transform()и передав в негоtest_data. Сохраните предсказания под именемtest_predictions. При желании просмотрите их, вызвав метод.show()на объектеtest_predictions.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Split the ratings dataframe into training and test data
(training_data, test_data) = ratings.____([____, ____], seed=42)
# Set the ALS hyperparameters
from pyspark.ml.recommendation import ALS
als = ALS(userCol="____", itemCol="____", ratingCol="____", rank =____, maxIter =____, regParam =____,
coldStartStrategy="____", nonnegative =____, implicitPrefs = ____)
# Fit the mdoel to the training_data
____ = ____.fit(____)
# Generate predictions on the test_data
____ = ____.transform(____)
test_predictions.show()