Parámetros e hiperparámetros de ALS

Creación de motores de recomendación con PySpark

Jamen Long

Data Scientist at Nike

Ejemplo de código de un modelo ALS

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Creación de motores de recomendación con PySpark

Nombres de columnas

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: nombre de la columna con los id de usuario
  • itemCol: nombre de la columna con los id de ítem
  • ratingCol: nombre de la columna con las valoraciones
Creación de motores de recomendación con PySpark

matriz original de valoraciones en blanco con dos matrices de factores en blanco

Creación de motores de recomendación con PySpark

misma imagen anterior con dimensiones latentes resaltadas

Creación de motores de recomendación 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)

Hiperparámetros

  • rank, $k$: número de características latentes
Creación de motores de recomendación 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)

Hiperparámetros

  • rank, $k$: número de características latentes
  • maxIter: número de iteraciones
Creación de motores de recomendación 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)

Hiperparámetros

  • rank, $k`: número de características latentes
  • maxIter: número de iteraciones
  • regParam: lambda
Creación de motores de recomendación 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)

Hiperparámetros

  • rank, $k`: número de características latentes
  • maxIter: número de iteraciones
  • regParam: lambda
  • alpha: se tratará más adelante. Solo para valoraciones implícitas.
Creación de motores de recomendación con PySpark

No 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 adicionales

  • nonnegative = True: garantiza números positivos
Creación de motores de recomendación con PySpark

Estrategia de arranque en frío

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

Argumentos adicionales

  • nonnegative = True: garantiza números positivos
  • coldStartStrategy = "drop": soluciona problemas del split de train/test
Creación de motores de recomendación con PySpark

Preferencias 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 adicionales

  • nonnegative = True: garantiza números positivos
  • coldStartStrategy = "drop": soluciona problemas del split de train/test
  • implicitPrefs = True: True/False según el tipo de valoraciones
Creación de motores de recomendación con PySpark

Ejemplo de creación de un modelo ALS

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Creación de motores de recomendación con PySpark

Métodos fit y transform

# Ajustar ALS al conjunto de entrenamiento
model = als.fit(training_data)

# Generar predicciones en el conjunto de prueba
predictions = model.transform(test_data)
Creación de motores de recomendación con PySpark

¡Vamos a practicar!

Creación de motores de recomendación con PySpark

Preparing Video For Download...