ALS(Alternating Least Squares)
알고리즘 설명
사용자 또는 상품 측면의 벡터가 주어져 있을 때 최소제곱해(Least Squares) 도출
이전 스텝에서 설명한 Matrix Factorization 모델을 implicit 패키지를 사용하여 학습해 봅시다.
- implicit 패키지는 이전 스텝에서 설명한 암묵적(implicit) dataset을 사용하는 다양한 모델을 굉장히 빠르게 학습할 수 있는 패키지입니다.
- 이 패키지에 구현된 als(AlternatingLeastSquares) 모델을 사용하겠습니다. Matrix Factorization에서 쪼개진 두 Feature Matrix를 한꺼번에 훈련하는 것은 잘 수렴하지 않기 때문에, 한쪽을 고정시키고 다른 쪽을 학습하는 방식을 번갈아 수행하는 AlternatingLeastSquares 방식이 효과적인 것으로 알려져 있습니다.
AlternatingLeastSquares 클래스의 __init__ 파라미터를 살펴보겠습니다.
- factors : 유저와 아이템의 벡터를 몇 차원으로 할 것인지
- regularization : 과적합을 방지하기 위해 정규화 값을 얼마나 사용할 것인지
- use_gpu : GPU를 사용할 것인지
- iterations : epochs와 같은 의미입니다. 데이터를 몇 번 반복해서 학습할 것인지
1과 4를 늘릴수록 학습 데이터를 잘 학습하게 되지만 과적합의 우려가 있으니 좋은 값을 찾아야 합니다.
AlternatingLeastSquares 클래스에 구현되어 있는 similar_items 메서드를 통하여 비슷한 아티스트를 찾습니다. (아티스트의 id, 유사도) Tuple 로 반환
AlternatingLeastSquares 클래스에 구현되어 있는 recommend 메서드를 통하여 제가 좋아할 만한 아티스트를 추천받습니다. filter_already_liked_items 는 유저가 이미 평가한 아이템은 제외하는 Argument입니다.
AlternatingLeastSquares 클래스에 구현된 explain 메서드를 사용하면 제가 기록을 남긴 데이터 중 이 추천에 기여한 정도를 확인할 수 있습니다.
728x90
'Study (Data Science) > DL' 카테고리의 다른 글
유사도 Similarity / 거리 Distance (0) | 2023.03.12 |
---|---|
비지도학습 / K-means, DBSCAN / PCA, T-SNE (0) | 2023.01.30 |
추천 시스템 알고리즘/ MF / CSR (0) | 2023.01.25 |
MLE, MAP / prior, posterior, likelihood (0) | 2023.01.18 |
확률과 통계 (0) | 2023.01.16 |
댓글