Parameter dan hyperparameter ALS

Membangun Recommendation Engine dengan PySpark

Jamen Long

Data Scientist at Nike

Contoh kode model ALS

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

Nama kolom

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

Argumen

  • userCol: Nama kolom yang berisi id pengguna
  • itemCol: Nama kolom yang berisi id item
  • ratingCol: Nama kolom yang berisi rating
Membangun Recommendation Engine dengan PySpark

matriks rating asli kosong dengan dua matriks faktor kosong

Membangun Recommendation Engine dengan PySpark

gambar sama seperti sebelumnya dengan dimensi laten disorot

Membangun Recommendation Engine dengan 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)

Hyperparameter

  • rank, $k$: jumlah fitur laten
Membangun Recommendation Engine dengan 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)

Hyperparameter

  • rank, $k$: jumlah fitur laten
  • maxIter: jumlah iterasi
Membangun Recommendation Engine dengan 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)

Hyperparameter

  • rank, $k$: jumlah fitur laten
  • maxIter: jumlah iterasi
  • regParam: Lambda
Membangun Recommendation Engine dengan 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)

Hyperparameter

  • rank, $k$: jumlah fitur laten
  • maxIter: jumlah iterasi
  • regParam: Lambda
  • alpha: Dibahas nanti. Hanya untuk rating implisit.
Membangun Recommendation Engine dengan PySpark

Non-negative

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

Argumen Tambahan

  • nonnegative = True: Memastikan angka positif
Membangun Recommendation Engine dengan PySpark

Strategi 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)

Argumen Tambahan

  • nonnegative = True: Memastikan angka positif
  • coldStartStrategy = "drop": Mengatasi masalah pemisahan train/test
Membangun Recommendation Engine dengan PySpark

Preferensi implisit

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

Argumen Tambahan

  • nonnegative = True: Memastikan angka positif
  • coldStartStrategy = "drop": Mengatasi masalah pemisahan train/test
  • implicitPrefs = True: True/False tergantung tipe rating
Membangun Recommendation Engine dengan PySpark

Contoh pembuatan model ALS

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Membangun Recommendation Engine dengan PySpark

Metode fit dan transform

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
Membangun Recommendation Engine dengan PySpark

Ayo berlatih!

Membangun Recommendation Engine dengan PySpark

Preparing Video For Download...