추천시스템 - ALS (colab에서 과제)

2023. 11. 29. 19:03빅데이터

728x90
# 추천시스템 훈련시키기

from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.recommendation import ALS
from pyspark.sql import Row

als = ALS(maxIter=5, regParam=0.01, userCol="user_id", itemCol="item_id", ratingCol="rating",
          coldStartStrategy="drop",seed=2023)
model = als.fit(training)

 

maxiter: 학습반복최대 횟수 - 기본:10

데이터를 몇번 반복시켜서 훈련시킬 것인가 설정


regParam: 규제를 얼마나 강하게 할 것인가 설정 - 기본: 1.0
-> 모델을 간단하게 만들기 위함.

 

cold-start strategy
: 1번도 겪지 못한 데이터를 만나면 숫자가 아닌 무언가(nan)를 출력
-> 인자로 drop을 주면 nan이 포함된 데이터 만나면 성능평가에 사용하지 않겠다

 

seed인자를 추가하면 훈련시킬 때 일관된 결과가 나온다

추가하지 않으면 랜덤으로 숫자가 들어가 훈련때마다 다른 결과 나옴

 

# 테스트 데이터를 사용하여 RMSE 값 출력하기

predictions = model.transform(test)
evaluator = RegressionEvaluator(metricName="rmse", labelCol="rating",
                                predictionCol="prediction")
rmse = evaluator.evaluate(predictions)
print(str(rmse))

 

# 모든 유저에 대해 그 유저가 좋아할만한 영화 10개 추천
userRecs = model.recommendForAllUsers(10)

# 모든 아이템에 대해 그 아이템을 좋아할만한 유저 10명 추천
movieRecs = model.recommendForAllItems(10)

# 930보다 큰 id값을 지닌 모든 유저에게 영화 10개 추천
userRecs = model.recommendForAllUsers(10)
userSubsetRecs = userRecs.filter(userRecs.user_id > 930)
userSubsetRecs.show(truncate=False)
728x90

'빅데이터' 카테고리의 다른 글

Dimensionality Reduction(차원 축소)  (2) 2023.12.03
군집화 - K-means(colab에서 과제)  (0) 2023.11.29
Clustering  (0) 2023.11.25
Distance Measures  (5) 2023.11.25
Finding Similar Items  (0) 2023.10.19