Параметры и гиперпараметры ALS

Построение рекомендательных систем с помощью PySpark

Jamen Long

Data Scientist at Nike

Пример кода модели ALS

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Построение рекомендательных систем с помощью PySpark

Названия столбцов

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)

Аргументы

  • userCol: название столбца с идентификаторами пользователей
  • itemCol: название столбца с идентификаторами элементов
  • ratingCol: название столбца с оценками
Построение рекомендательных систем с помощью PySpark

пустая исходная матрица оценок и две пустые факторные матрицы

Построение рекомендательных систем с помощью PySpark

то же изображение с выделенными скрытыми измерениями

Построение рекомендательных систем с помощью PySpark

Ранг

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)

Гиперпараметры

  • rank, $k$: количество скрытых признаков
Построение рекомендательных систем с помощью PySpark

MaxIter

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)

Гиперпараметры

  • rank, $k$: количество скрытых признаков
  • maxIter: количество итераций
Построение рекомендательных систем с помощью PySpark

RegParam

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)

Гиперпараметры

  • rank, $k$: количество скрытых признаков
  • maxIter: количество итераций
  • regParam: лямбда
Построение рекомендательных систем с помощью PySpark

Alpha

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)

Гиперпараметры

  • rank, $k$: количество скрытых признаков
  • maxIter: количество итераций
  • regParam: лямбда
  • alpha: рассматривается позже. Используется только с неявными оценками.
Построение рекомендательных систем с помощью PySpark

Неотрицательность

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)

Дополнительные аргументы

  • nonnegative = True: гарантирует положительные значения
Построение рекомендательных систем с помощью PySpark

Стратегия холодного старта

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)

Дополнительные аргументы

  • nonnegative = True: гарантирует положительные значения
  • coldStartStrategy = "drop": решает проблемы при разбивке на тестовую и обучающую выборки
Построение рекомендательных систем с помощью PySpark

Неявные предпочтения

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)

Дополнительные аргументы

  • nonnegative = True: гарантирует положительные значения
  • coldStartStrategy = "drop": решает проблемы при разбивке на тестовую и обучающую выборки
  • implicitPrefs = True: True/False в зависимости от типа оценок
Построение рекомендательных систем с помощью PySpark

Пример построения модели ALS

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Построение рекомендательных систем с помощью PySpark

Методы fit и transform

# Fit ALS to training dataset
model = als.fit(training_data)

# Generate predictions on test dataset
predictions = model.transform(test_data)
Построение рекомендательных систем с помощью PySpark

Давайте потренируемся!

Построение рекомендательных систем с помощью PySpark

Preparing Video For Download...