본문 바로가기
Study (Data Science)/DL

추천시스템 - ALS

by 콜라찡 2023. 1. 26.

ALS(Alternating Least Squares)

알고리즘 설명

사용자 또는 상품 측면의 벡터가 주어져 있을 때 최소제곱해(Least Squares) 도출

 

이전 스텝에서 설명한 Matrix Factorization 모델을 implicit 패키지를 사용하여 학습해 봅시다.

  • implicit 패키지는 이전 스텝에서 설명한 암묵적(implicit) dataset을 사용하는 다양한 모델을 굉장히 빠르게 학습할 수 있는 패키지입니다.
  • 이 패키지에 구현된 als(AlternatingLeastSquares) 모델을 사용하겠습니다. Matrix Factorization에서 쪼개진 두 Feature Matrix를 한꺼번에 훈련하는 것은 잘 수렴하지 않기 때문에, 한쪽을 고정시키고 다른 쪽을 학습하는 방식을 번갈아 수행하는 AlternatingLeastSquares 방식이 효과적인 것으로 알려져 있습니다.

AlternatingLeastSquares 클래스의 __init__ 파라미터를 살펴보겠습니다.

  1. factors : 유저와 아이템의 벡터를 몇 차원으로 할 것인지
  2. regularization : 과적합을 방지하기 위해 정규화 값을 얼마나 사용할 것인지
  3. use_gpu : GPU를 사용할 것인지
  4. iterations : epochs와 같은 의미입니다. 데이터를 몇 번 반복해서 학습할 것인지

1과 4를 늘릴수록 학습 데이터를 잘 학습하게 되지만 과적합의 우려가 있으니 좋은 값을 찾아야 합니다.

 

AlternatingLeastSquares 클래스에 구현되어 있는 similar_items 메서드를 통하여 비슷한 아티스트를 찾습니다. (아티스트의 id, 유사도) Tuple 로 반환

 

AlternatingLeastSquares 클래스에 구현되어 있는 recommend 메서드를 통하여 제가 좋아할 만한 아티스트를 추천받습니다. filter_already_liked_items 는 유저가 이미 평가한 아이템은 제외하는 Argument입니다.

 

AlternatingLeastSquares 클래스에 구현된 explain 메서드를 사용하면 제가 기록을 남긴 데이터 중 이 추천에 기여한 정도를 확인할 수 있습니다.

728x90

댓글