Parametry i hiperparametry ALS

Budowanie silników rekomendacji w PySpark

Jamen Long

Data Scientist at Nike

Przykładowy kod modelu ALS

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

Nazwy kolumn

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

Argumenty

  • userCol: Nazwa kolumny z identyfikatorami użytkowników
  • itemCol: Nazwa kolumny z identyfikatorami elementów
  • ratingCol: Nazwa kolumny z ocenami
Budowanie silników rekomendacji w PySpark

pusta oryginalna macierz ocen z dwiema pustymi macierzami czynnikowych

Budowanie silników rekomendacji w PySpark

ten sam obraz co poprzednio z wyróżnionymi wymiarami ukrytymi

Budowanie silników rekomendacji w PySpark

Rank

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

Hiperparametry

  • rank, $k$: liczba cech ukrytych
Budowanie silników rekomendacji w 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)

Hiperparametry

  • rank, $k$: liczba cech ukrytych
  • maxIter: liczba iteracji
Budowanie silników rekomendacji w 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)

Hiperparametry

  • rank, $k$: liczba cech ukrytych
  • maxIter: liczba iteracji
  • regParam: Lambda
Budowanie silników rekomendacji w 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)

Hiperparametry

  • rank, $k$: liczba cech ukrytych
  • maxIter: liczba iteracji
  • regParam: Lambda
  • alpha: Omówione później. Używane tylko z ocenami niejawnymi.
Budowanie silników rekomendacji w PySpark

Nieujemne

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

Dodatkowe argumenty

  • nonnegative = True: Zapewnia wartości nieujemne
Budowanie silników rekomendacji w PySpark

Strategia zimnego startu

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

Dodatkowe argumenty

  • nonnegative = True: Zapewnia wartości nieujemne
  • coldStartStrategy = "drop": Rozwiązuje problemy z podziałem na zbiory testowy/treningowy
Budowanie silników rekomendacji w PySpark

Preferencje niejawne

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

Dodatkowe argumenty

  • nonnegative = True: Zapewnia wartości nieujemne
  • coldStartStrategy = "drop": Rozwiązuje problemy z podziałem na zbiory testowy/treningowy
  • implicitPrefs = True: True/False w zależności od typu ocen
Budowanie silników rekomendacji w PySpark

Przykładowa budowa modelu ALS

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Budowanie silników rekomendacji w PySpark

Metody fit i transform

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
Budowanie silników rekomendacji w PySpark

Czas na ćwiczenia!

Budowanie silników rekomendacji w PySpark

Preparing Video For Download...