본문으로 바로가기
반응형

T아카데미에서 오픈된 토크ON세미나 강연 동영상을 보고 정리해보았다.

 

 

협업필터링

  • 사용자의 구매 패턴이나 평점을 가지고 다른 사람들의 구매 패턴, 평점을 통해서 추천을 하는 방법이다.
  • 추가적인 사용자의 개인정보나 아이템의 정보가 없이도 추천할 수 있는게 큰 장점이다.
  • Netflix Prize Competition(2006-2009) 우승 알고리즘
  • 최근접 이웃기반 (Neighborhood based method - KNN) / 잠재 요인기반 (Lantent Factor Collaborative Filtering)

[장점]

  • 도메인 지식이 필요하지 않다.
  • 사용자의 새로운 흥미를 발견하기 좋다.
  • 시작단계의 모델로 선택하기 좋다. (추가적인 문맥정보들의 필요가 없다)
    • baseline으로 적용하고, 후에 컨텐츠 기반, 다른 딥러닝, 통계기반 모델들과 결합한다.

[단점]

  • 새로운 아이템에 대해서 다루기가 힘들다.
  • side features(고객의 개인정보, 아이템의 추가정보)를  포함시키기 어렵다.

 

 

Neighborhood based method - KNN

  • Neighborhood based Collaborative Filtering은 메모리 기반 알고리즘으로 협업 필터링을 위해 개발된 초기 알고리즘이다.
  • 데이터 (Explicit Feedback) : 유저가 직접적으로 선호도를 표현 (평점이 존재)

 

 

[알고리즘]

1. User-based collaborative filtering

  • 사용자의 구매 패턴(평점)과 유사한 사용자를 찾아서 추천 리스트 생성
  • 유저가 자신의 선호도를 직접적으로 표현한 데이터
  • 원래 평점을 잘 주는 사용자의 bias term을 제거해주어야 한다.

 

2. Item-based collaborative filtering

  • 특정 사용자가 준 점수간의 유사한 상품을 찾아서 추천 리스트 생성
  • 유저가 자신의 선호도를 직접적으로 표현한 데이터
  • 마찬가지로 bian term 제거해주어야한다.

 

[장점]

  • 간단하고 직관적인 접근 방식 때문에 구현 및 디버그가 쉽다.
  • 특정 Item을 추천하는 이유를 정당화하기 쉽고 Item 기반 방법의 해석 가능성이 두드러진다.
  • 추천 리스트에 새로운 item과 user가 추가되어도 상대적으로 안정적이다.

 

[단점]

  • User 기반 방법의 시간, 속도, 메모리가 많이 필요하다.
  • 희소성 때문에 제한된 범위가 있다.
    • John의 Top-K에만 관심이 있다.
    • John과 비슷한 이웃중에서 아무도 해리포터를 평가하지 않으면, John의 해리포터에 대한 등급 예측을 제공할 수 없다.
    • 빈익빈 부익부 : 많이 보는 상품은 다 많이 보고, 적게 보는 상품은 다 적게 보는 식으로 예측된다.
      • 컨텐츠 기반의 모델을 통해 상호보완한다.

 

 

Lantent Factor Collaborative Filtering

  • 이웃 기반의 협업 필터링은 Item Space와 User Space간에 유사도를 통해 모델이 구성되고, 잠잭 요인 기반 협업 필터링은 Item Space의 Latent Space와 User Space의 Latent Space 벡터의 곱으로 구성된다.
  • 잠재 요인 협업 필터링은 Rating Matrix에서 빈 공간을 채우기 위해서 사용자의 상품을 잘 표현하는 차원(Latent Factor)을 찾는 방법이다.
  • 잘 알려진 행렬 분해는 추천 시스템에서 사용되는 협업 필터링 알고리즘의 한 종류이다.
  • 행렬 분해 알고리즘은 사용자-아이템 상호 작용 행렬을 두 개의 저 차원 직사각형 행렬의 곱으로 분해하여 작동한다.
  • SVD / SGD / ALS

 

[알고리즘]

1. SGD

  • 고유값 분해(eigen value Decomposition)와 같은 행렬을 대각화 하는 방법이다.
  • Regularization term을 더해줘서 weight가 폭발하는것을 방지한다.

 [알고리즘]

1. User Latent와 Item Latent을 임의로 초기화

2. Gradient Descent 진행 (regularization 적용) - Back Propagation

3. 모든 평점에 대해서 반복 (epoch : 1)

4. 2~3 과정을 10번 반복 (epoch : 10) - total cost 떨어지며 값이 비슷하게 수렴.

5. 4를 바탕으로 예측 (높은 평점을 추천 , 마이너스는 추천x)

 

[장점]

  • 매우 유연한 모델로 다른 Loss function을 사용할 수 있다.
  • parallelized가 가능하다 (분산처리가 가능)

[단점]

  • 수렴까지 속도가 매우 느리다. (좋은 딥러닝 모델을 사용하면 극복 가능)

 

2. ALS

  • 기존의 SGD가 두개의 행렬 (User Latent, Item Latent)을 동시에 최적화하는 방법이라면, ALS는 두 행렬 중 하나를 고정시키고 다른 하나의 행렬을 순차적으로 반복하면서 최적화하는 방법이다. 이렇게 하면, 기존의 최적화 문제가 convex형태로 바뀌기에 수렴된 행렬을 찾을 수 있는 장점이 있다.
  • 값을 다 알고 있고, 식에 대입만 하면 되기때문에, 되게 간단하다.

[알고리즘]

1. 초기 아이템, 사용자 행렬을 초기화 (?는 0으로 설정)

2. 아이템 행렬을 고정하고 사용자 행렬을 최적화

3. 사용자 행렬을 고정하고 아이템 행렬을 최적화

4. 위 2~3과정을 반복

 

[장점]

  • SGD보다 수렴속도가 빠르다.
  • parallelized가 가능하다 (분산처리가 가능)

[단점]

  • 오직 Loss Squares만 사용 가능하다.

 

 

 

 

 

[실습 링크]

https://www.kaggle.com/chocozzz/00-sgd-1

 

00. 협업필터링 기반 추천시스템 - SGD#1

Explore and run machine learning code with Kaggle Notebooks | Using data from T Academy Recommendation2

www.kaggle.com

https://www.kaggle.com/chocozzz/00-als

 

00. 협업필터링 기반 추천시스템 - ALS

Explore and run machine learning code with Kaggle Notebooks | Using data from T Academy Recommendation2

www.kaggle.com

https://github.com/yoonsungsong/TIL/tree/main/RecommenderSytem

 

GitHub - yoonsungsong/TIL: Today I Learned..

Today I Learned.. Contribute to yoonsungsong/TIL development by creating an account on GitHub.

github.com

 

 

 

 

 

 

 

Reference : 

 

https://www.youtube.com/watch?v=TFbTU9VG3is 

 

반응형