Creación de motores de recomendación con PySpark
Jamen Long
Data Scientist at Nike
als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating",
rank=25, maxIter=100, regParam=.05, alpha=40,
nonnegative=True,
coldStartStrategy="drop",
implicitPrefs=False)
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

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 latentesals_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 latentesmaxIter: número de iteracionesals_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 latentesmaxIter: número de iteracionesregParam: lambdaals_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 latentesmaxIter: número de iteracionesregParam: lambdaalpha: se tratará más adelante. Solo para valoraciones 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 positivosals_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 positivoscoldStartStrategy = "drop": soluciona problemas del split de train/testals_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 positivoscoldStartStrategy = "drop": soluciona problemas del split de train/testimplicitPrefs = True: True/False según el tipo de valoracionesals = ALS(userCol="userId", itemCol="movieId", ratingCol="rating",
rank=25, maxIter=100, regParam=.05,
nonnegative=True,
coldStartStrategy="drop",
implicitPrefs=False)
# 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