ALS-Parameter und Hyperparameter

Recommendation Engines mit PySpark erstellen

Jamen Long

Data Scientist at Nike

Beispielcode für ein ALS-Modell

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

Spaltennamen

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

Argumente

  • userCol: Name der Spalte mit den User-IDs
  • itemCol: Name der Spalte mit den Item-IDs
  • ratingCol: Name der Spalte mit den Bewertungen
Recommendation Engines mit PySpark erstellen

leere ursprüngliche Bewertungstabelle mit zwei leeren Faktormatrizen

Recommendation Engines mit PySpark erstellen

gleiches Bild wie zuvor mit hervorgehobenen latenten Dimensionen

Recommendation Engines mit PySpark erstellen

Rank

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

Hyperparameter

  • rank, $k$: Anzahl latenter Merkmale
Recommendation Engines mit PySpark erstellen

MaxIter

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

Hyperparameter

  • rank, $k$: Anzahl latenter Merkmale
  • maxIter: Anzahl der Iterationen
Recommendation Engines mit PySpark erstellen

RegParam

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

Hyperparameter

  • rank, $k$: Anzahl latenter Merkmale
  • maxIter: Anzahl der Iterationen
  • regParam: Lambda
Recommendation Engines mit PySpark erstellen

Alpha

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

Hyperparameter

  • rank, $k$: Anzahl latenter Merkmale
  • maxIter: Anzahl der Iterationen
  • regParam: Lambda
  • alpha: Später besprochen. Nur bei impliziten Bewertungen.
Recommendation Engines mit PySpark erstellen

Nichtnegativ

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

Weitere Argumente

  • nonnegative = True: Erzwingt positive Zahlen
Recommendation Engines mit PySpark erstellen

Cold-Start-Strategie

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

Weitere Argumente

  • nonnegative = True: Erzwingt positive Zahlen
  • coldStartStrategy = "drop": Behebt Probleme bei Train/Test-Splits
Recommendation Engines mit PySpark erstellen

Implizite Präferenzen

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

Weitere Argumente

  • nonnegative = True: Erzwingt positive Zahlen
  • coldStartStrategy = "drop": Behebt Probleme bei Train/Test-Splits
  • implicitPrefs = True: True/False je nach Bewertungstyp
Recommendation Engines mit PySpark erstellen

Beispiel: ALS-Modell erstellen

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Recommendation Engines mit PySpark erstellen

Methoden fit und transform

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
Recommendation Engines mit PySpark erstellen

Lass uns üben!

Recommendation Engines mit PySpark erstellen

Preparing Video For Download...