Parametry a hyperparametry ALS

Tvorba doporučovacích systémů s PySparkem

Jamen Long

Data Scientist at Nike

Ukázkový kód 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)
Tvorba doporučovacích systémů s PySparkem

Názvy sloupců

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: Název sloupce s ID uživatelů
  • itemCol: Název sloupce s ID položek
  • ratingCol: Název sloupce s hodnoceními
Tvorba doporučovacích systémů s PySparkem

prázdná původní matice hodnocení se dvěma prázdnými maticemi faktorů

Tvorba doporučovacích systémů s PySparkem

stejný obrázek jako předchozí se zvýrazněnými latentními dimenzemi

Tvorba doporučovacích systémů s PySparkem

Rank

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

Hyperparametry

  • rank, $k$: počet latentních příznaků
Tvorba doporučovacích systémů s PySparkem

MaxIter

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

Hyperparametry

  • rank, $k$: počet latentních příznaků
  • maxIter: počet iterací
Tvorba doporučovacích systémů s PySparkem

RegParam

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

Hyperparametry

  • rank, $k$: počet latentních příznaků
  • maxIter: počet iterací
  • regParam: Lambda
Tvorba doporučovacích systémů s PySparkem

Alpha

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

Hyperparametry

  • rank, $k$: počet latentních příznaků
  • maxIter: počet iterací
  • regParam: Lambda
  • alpha: Probráno později. Používá se pouze s implicitními hodnoceními.
Tvorba doporučovacích systémů s PySparkem

Nezáporné hodnoty

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

Další argumenty

  • nonnegative = True: Zajišťuje kladná čísla
Tvorba doporučovacích systémů s PySparkem

Strategie cold start

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

Další argumenty

  • nonnegative = True: Zajišťuje kladná čísla
  • coldStartStrategy = "drop": Řeší problémy s rozdělením na trénovací a testovací sadu
Tvorba doporučovacích systémů s PySparkem

Implicitní preference

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

Další argumenty

  • nonnegative = True: Zajišťuje kladná čísla
  • coldStartStrategy = "drop": Řeší problémy s rozdělením na trénovací a testovací sadu
  • implicitPrefs = True: True/False podle typu hodnocení
Tvorba doporučovacích systémů s PySparkem

Ukázka sestavení modelu ALS

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Tvorba doporučovacích systémů s PySparkem

Metody fit a transform

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
Tvorba doporučovacích systémů s PySparkem

Lass uns üben!

Tvorba doporučovacích systémů s PySparkem

Preparing Video For Download...