Parâmetros e hiperparâmetros do ALS

Construindo mecanismos de recomendação com PySpark

Jamen Long

Data Scientist at Nike

Exemplo de código ALS

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Construindo mecanismos de recomendação com PySpark

Nomes das colunas

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

Argumentos

  • userCol: Nome da coluna com os IDs de usuários
  • itemCol: Nome da coluna com os IDs de itens
  • ratingCol: Nome da coluna com as avaliações
Construindo mecanismos de recomendação com PySpark

matriz de avaliações original em branco com duas matrizes fator em branco

Construindo mecanismos de recomendação com PySpark

mesma imagem anterior com dimensões latentes destacadas

Construindo mecanismos de recomendação com 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)

Hiperparâmetros

  • rank, $k$: número de características latentes
Construindo mecanismos de recomendação com 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)

Hiperparâmetros

  • rank, $k$: número de características latentes
  • maxIter: número de iterações
Construindo mecanismos de recomendação com 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)

Hiperparâmetros

  • rank, $k$: número de características latentes
  • maxIter: número de iterações
  • regParam: Lambda
Construindo mecanismos de recomendação com 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)

Hiperparâmetros

  • rank, $k$: número de características latentes
  • maxIter: número de iterações
  • regParam: Lambda
  • alpha: Será visto depois. Usado apenas com avaliações implícitas.
Construindo mecanismos de recomendação com PySpark

Não negativo

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

Argumentos adicionais

  • nonnegative = True: Garante números positivos
Construindo mecanismos de recomendação com PySpark

Estratégia de 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)

Argumentos adicionais

  • nonnegative = True: Garante números positivos
  • coldStartStrategy = "drop": Trata problemas do split de treino/teste
Construindo mecanismos de recomendação com PySpark

Preferências implícitas

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

Argumentos adicionais

  • nonnegative = True: Garante números positivos
  • coldStartStrategy = "drop": Trata problemas do split de treino/teste
  • implicitPrefs = True: True/False conforme o tipo de avaliação
Construindo mecanismos de recomendação com PySpark

Exemplo de criação de modelo ALS

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Construindo mecanismos de recomendação com PySpark

Métodos fit e transform

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
Construindo mecanismos de recomendação com PySpark

Vamos praticar!

Construindo mecanismos de recomendação com PySpark

Preparing Video For Download...