추천시스템 - 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 |