ALSのパラメータとハイパーパラメータ

PySpark で作る Recommendation Engines

Jamen Long

Data Scientist at Nike

ALSモデルのコード例

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

列名

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

引数

  • userCol: ユーザーIDを含む列名
  • itemCol: アイテムIDを含む列名
  • ratingCol: 評価値を含む列名
PySpark で作る Recommendation Engines

2つの空白因子行列を持つ空白の元評価行列

PySpark で作る Recommendation Engines

潜在次元がハイライトされた前のスライドと同じ画像

PySpark で作る Recommendation Engines

ランク

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

ハイパーパラメータ

  • rank, $k$: 潜在特徴量の数
PySpark で作る Recommendation Engines

MaxIter

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

ハイパーパラメータ

  • rank, $k$: 潜在特徴量の数
  • maxIter: 反復回数
PySpark で作る Recommendation Engines

RegParam

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

ハイパーパラメータ

  • rank, $k$: 潜在特徴量の数
  • maxIter: 反復回数
  • regParam: ラムダ
PySpark で作る Recommendation Engines

Alpha

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

ハイパーパラメータ

  • rank, $k$: 潜在特徴量の数
  • maxIter: 反復回数
  • regParam: ラムダ
  • alpha: 後述。暗黙的評価のみで使用。
PySpark で作る Recommendation Engines

非負制約

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

追加引数

  • nonnegative = True: 正の値を保証
PySpark で作る Recommendation Engines

コールドスタート戦略

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

追加引数

  • nonnegative = True: 正の値を保証
  • coldStartStrategy = "drop": テスト/学習分割の問題に対処
PySpark で作る Recommendation Engines

暗黙的選好

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

追加引数

  • nonnegative = True: 正の値を保証
  • coldStartStrategy = "drop": テスト/学習分割の問題に対処
  • implicitPrefs = True: 評価の種類に応じてTrue/Falseを設定
PySpark で作る Recommendation Engines

ALSモデルの構築例

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

fitメソッドとtransformメソッド

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
PySpark で作る Recommendation Engines

Let's practice!

PySpark で作る Recommendation Engines

Preparing Video For Download...