Parametri e iperparametri ALS

Costruire motori di raccomandazione con PySpark

Jamen Long

Data Scientist at Nike

Esempio di codice ALS

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

Nomi delle colonne

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

Argomenti

  • userCol: nome della colonna con gli id utente
  • itemCol: nome della colonna con gli id elemento
  • ratingCol: nome della colonna con i rating
Costruire motori di raccomandazione con PySpark

matrice dei rating vuota con due matrici fattoriali vuote

Costruire motori di raccomandazione con PySpark

stessa immagine di prima con dimensioni latenti evidenziate

Costruire motori di raccomandazione con 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)

Iperparametri

  • rank, $k$: numero di feature latenti
Costruire motori di raccomandazione con 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)

Iperparametri

  • rank, $k$: numero di feature latenti
  • maxIter: numero di iterazioni
Costruire motori di raccomandazione con 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)

Iperparametri

  • rank, $k$: numero di feature latenti
  • maxIter: numero di iterazioni
  • regParam: Lambda
Costruire motori di raccomandazione con 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)

Iperparametri

  • rank, $k$: numero di feature latenti
  • maxIter: numero di iterazioni
  • regParam: Lambda
  • alpha: trattata più avanti. Usata solo con rating impliciti.
Costruire motori di raccomandazione con PySpark

Non-negative

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

Argomenti aggiuntivi

  • nonnegative = True: garantisce valori positivi
Costruire motori di raccomandazione con PySpark

Strategia di 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)

Argomenti aggiuntivi

  • nonnegative = True: garantisce valori positivi
  • coldStartStrategy = "drop": gestisce i problemi di train/test split
Costruire motori di raccomandazione con PySpark

Preferenze implicite

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

Argomenti aggiuntivi

  • nonnegative = True: garantisce valori positivi
  • coldStartStrategy = "drop": gestisce i problemi di train/test split
  • implicitPrefs = True: True/False in base al tipo di rating
Costruire motori di raccomandazione con PySpark

Esempio di creazione modello ALS

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Costruire motori di raccomandazione con PySpark

Metodi fit e transform

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
Costruire motori di raccomandazione con PySpark

Esercitiamoci!

Costruire motori di raccomandazione con PySpark

Preparing Video For Download...