Tham số và siêu tham số của ALS

Xây dựng Recommendation Engine với PySpark

Jamen Long

Data Scientist at Nike

Mã ví dụ mô hình ALS

als_model = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, alpha=40,
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Xây dựng Recommendation Engine với PySpark

Tên cột

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

Đối số

  • userCol: Tên cột chứa user id
  • itemCol: Tên cột chứa item id
  • ratingCol: Tên cột chứa ratings
Xây dựng Recommendation Engine với PySpark

ma trận ratings gốc trống với hai ma trận nhân tố trống

Xây dựng Recommendation Engine với PySpark

cùng hình như trước với các chiều ẩn được tô nổi bật

Xây dựng Recommendation Engine với 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)

Siêu tham số

  • rank, $k$: số đặc trưng ẩn
Xây dựng Recommendation Engine với 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)

Siêu tham số

  • rank, $k$: số đặc trưng ẩn
  • maxIter: số vòng lặp
Xây dựng Recommendation Engine với 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)

Siêu tham số

  • rank, $k$: số đặc trưng ẩn
  • maxIter: số vòng lặp
  • regParam: Lambda
Xây dựng Recommendation Engine với 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)

Siêu tham số

  • rank, $k`: số đặc trưng ẩn
  • maxIter: số vòng lặp
  • regParam: Lambda
  • alpha: Sẽ nói sau. Chỉ dùng với implicit ratings.
Xây dựng Recommendation Engine với PySpark

Không âm

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

Đối số bổ sung

  • nonnegative = True: Đảm bảo số dương
Xây dựng Recommendation Engine với PySpark

Chiến lược 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)

Đối số bổ sung

  • nonnegative = True: Đảm bảo số dương
  • coldStartStrategy = "drop": Xử lý vấn đề khi tách test/train
Xây dựng Recommendation Engine với PySpark

Sở thích ngầm định

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

Đối số bổ sung

  • nonnegative = True: Đảm bảo số dương
  • coldStartStrategy = "drop": Xử lý vấn đề khi tách test/train
  • implicitPrefs = True: True/False tùy loại ratings
Xây dựng Recommendation Engine với PySpark

Ví dụ xây dựng mô hình ALS

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
Xây dựng Recommendation Engine với PySpark

Phương thức fit và transform

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
Xây dựng Recommendation Engine với PySpark

Cùng luyện tập nào!

Xây dựng Recommendation Engine với PySpark

Preparing Video For Download...