ALS 파라미터와 하이퍼파라미터

PySpark로 추천 엔진 만들기

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로 추천 엔진 만들기

열 이름

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로 추천 엔진 만들기

두 개의 빈 인수분해 행렬이 있는 빈 원본 평점 행렬

PySpark로 추천 엔진 만들기

잠재 차원이 강조 표시된 이전과 동일한 이미지

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)

하이퍼파라미터

  • rank, $k$: 잠재 특성의 수
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)

하이퍼파라미터

  • rank, $k$: 잠재 특성의 수
  • maxIter: 반복 횟수
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)

하이퍼파라미터

  • rank, $k$: 잠재 특성의 수
  • maxIter: 반복 횟수
  • regParam: 람다
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)

하이퍼파라미터

  • rank, $k$: 잠재 특성의 수
  • maxIter: 반복 횟수
  • regParam: 람다
  • alpha: 나중에 설명. 암묵적 평점에서만 사용.
PySpark로 추천 엔진 만들기

비음수

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로 추천 엔진 만들기

콜드 스타트 전략

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로 추천 엔진 만들기

암묵적 선호도

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로 추천 엔진 만들기

ALS 모델 구축 예시

als = ALS(userCol="userId", itemCol="movieId", ratingCol="rating", 
            rank=25, maxIter=100, regParam=.05, 
            nonnegative=True,
            coldStartStrategy="drop",
            implicitPrefs=False)
PySpark로 추천 엔진 만들기

fit 및 transform 메서드

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

# Generate predictions on test dataset
predictions = model.transform(test_data)
PySpark로 추천 엔진 만들기

연습해 봅시다!

PySpark로 추천 엔진 만들기

Preparing Video For Download...