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 des 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 identifiants utilisateur
  • itemCol : nom de la colonne contenant les identifiants d'élément
  • ratingCol : nom de la colonne contenant les notes
Créer des moteurs de recommandation avec PySpark

matrice de notes vierge avec deux matrices factorielles vides

Créer des moteurs de recommandation avec PySpark

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

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 : traité plus loin. Utilisé uniquement avec des notes 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)

Arguments supplémentaires

  • nonnegative = True : garantit des valeurs positives
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)

Arguments supplémentaires

  • nonnegative = True : garantit des valeurs positives
  • coldStartStrategy = "drop" : corrige les problèmes de découpe 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)

Arguments supplémentaires

  • nonnegative = True : garantit des valeurs positives
  • coldStartStrategy = "drop" : corrige les problèmes de découpe test/entraînement
  • implicitPrefs = True : True/False selon le type de notes
Créer des moteurs de recommandation avec PySpark

Exemple de construction 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...