Paramètres et hyperparamètres d'ALS

Créer des moteurs de recommandation avec PySpark

Jamen Long

Data Scientist at Nike

Exemple de code ALS

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Créer des moteurs de recommandation avec PySpark

Noms de colonnes

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

Arguments

  • userCol : Nom de la colonne contenant les ID d'utilisateurs
  • itemCol : Nom de la colonne contenant les ID d'articles
  • ratingCol : Nom de la colonne contenant les cotes
Créer des moteurs de recommandation avec PySpark

matrice des cotes d'origine vide avec deux matrices de facteurs vides

Créer des moteurs de recommandation avec PySpark

même image que précédemment avec les dimensions latentes en surbrillance

Créer des moteurs de recommandation avec PySpark

Rang

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

Hyperparamètres

  • rank, $k$ : nombre de caractéristiques latentes
Créer des moteurs de recommandation avec 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)

Hyperparamètres

  • rank, $k$ : nombre de caractéristiques latentes
  • maxIter : nombre d'itérations
Créer des moteurs de recommandation avec 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)

Hyperparamètres

  • rank, $k$ : nombre de caractéristiques latentes
  • maxIter : nombre d'itérations
  • regParam : lambda
Créer des moteurs de recommandation avec 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)

Hyperparamètres

  • rank, $k$ : nombre de caractéristiques latentes
  • maxIter : nombre d'itérations
  • regParam : lambda
  • alpha : Abordé plus loin. Utilisé seulement avec des cotes implicites.
Créer des moteurs de recommandation avec PySpark

Non négatif

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

Autres arguments

  • nonnegative = True : Garantit des nombres positifs
Créer des moteurs de recommandation avec PySpark

Stratégie de démarrage à froid

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

Autres arguments

  • nonnegative = True : Garantit des nombres positifs
  • coldStartStrategy = "drop" : Corrige les enjeux de découpage test/entraînement
Créer des moteurs de recommandation avec PySpark

Préférences implicites

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

Autres arguments

  • nonnegative = True : Garantit des nombres positifs
  • coldStartStrategy = "drop" : Corrige les enjeux de découpage test/entraînement
  • implicitPrefs = True : Vrai/Faux selon le type de cotes
Créer des moteurs de recommandation avec PySpark

Exemple de création d'un modèle ALS

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Créer des moteurs de recommandation avec PySpark

Méthodes fit et transform

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
Créer des moteurs de recommandation avec PySpark

Passons à la pratique !

Créer des moteurs de recommandation avec PySpark

Preparing Video For Download...