ALS-parameters en hyperparameters

Aanbevelingssystemen bouwen met PySpark

Jamen Long

Data Scientist at Nike

Voorbeeldcode ALS-model

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

Kolomnamen

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

Argumenten

  • userCol: Naam van kolom met user-id's
  • itemCol: Naam van kolom met item-id's
  • ratingCol: Naam van kolom met ratings
Aanbevelingssystemen bouwen met PySpark

lege oorspronkelijke ratingmatrix met twee lege factormatrices

Aanbevelingssystemen bouwen met PySpark

dezelfde afbeelding als hiervoor met gemarkeerde latente dimensies

Aanbevelingssystemen bouwen met 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)

Hyperparameters

  • rank, $k$: aantal latente features
Aanbevelingssystemen bouwen met 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)

Hyperparameters

  • rank, $k$: aantal latente features
  • maxIter: aantal iteraties
Aanbevelingssystemen bouwen met 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)

Hyperparameters

  • rank, $k$: aantal latente features
  • maxIter: aantal iteraties
  • regParam: lambda
Aanbevelingssystemen bouwen met 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)

Hyperparameters

  • rank, $k`: aantal latente features
  • maxIter: aantal iteraties
  • regParam: lambda
  • alpha: Later besproken. Alleen bij impliciete ratings.
Aanbevelingssystemen bouwen met PySpark

Niet-negatief

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

Aanvullende argumenten

  • nonnegative = True: Zorgt voor positieve getallen
Aanbevelingssystemen bouwen met PySpark

Cold-startstrategie

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

Aanvullende argumenten

  • nonnegative = True: Zorgt voor positieve getallen
  • coldStartStrategy = "drop": Pakt issues met test/train-split aan
Aanbevelingssystemen bouwen met PySpark

Impliciete voorkeuren

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

Aanvullende argumenten

  • nonnegative = True: Zorgt voor positieve getallen
  • coldStartStrategy = "drop": Pakt issues met test/train-split aan
  • implicitPrefs = True: True/False afhankelijk van het type ratings
Aanbevelingssystemen bouwen met PySpark

Voorbeeld: ALS-model bouwen

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Aanbevelingssystemen bouwen met PySpark

Fit- en transform-methoden

# Fit ALS op trainingsgegevens
model = als.fit(training_data)

# Genereer voorspellingen op testgegevens
predictions = model.transform(test_data)
Aanbevelingssystemen bouwen met PySpark

Laten we oefenen!

Aanbevelingssystemen bouwen met PySpark

Preparing Video For Download...