본 포스팅은 Fastcampus 강의를 수강하며 일부 내용을 정리한 글임을 밝힙니다. 보다 자세한 내용은 아래 강의를 통해 확인해주세요.
참고 : Fastcampus 딥러닝을 활용한 추천시스템 구현 올인원 패키지 Online
특징 1. Matrix Factorization을 통해 Implicit Feedback 데이터 잘 활용 (implicit feedback 데이터를 이전에 잘 활용하기 어려웠는데, matrix factorziation을 통해 성능을 더욱 높일 수 있었음)
특징 2. BPR: 유저에 대해 아이템의 ranking을 매기는 문제
BPR-Opt
) 제시Maximum Posterior Estimator에 기반한 최적화 기법인 BPR-OPT 제안
BPR-OPT를 위한 LearnBPR
제안 ➡️ 기존 SGD보다 성능 우수
LearnBPR을 그 당시 최신 모델에 적용
BPR-OPT가 다른 방법보다 우수함을 실험적으로 증명
추천시스템 구현하기 위해 2가지 형태가 일반적 ➡️ Explicit과 Implicit 데이터
보통 Implicit 데이터가 더 많은 비중 차지하고, 더 어려운 문제
Implicit 데이터로 user의 선호도 또는 취향 파악해야 함
Implicit feedback으로 ranking을 추천할 수 있는 알고리즘 제시
저자가 정의한 ranking을 추천하기 위한 optimization은 다음과 같다
Personalized Ranking
User에게 ranked list of items를 제안(또는 추천)하는 것
Item Recommendation
이라고도 부름
본 논문은 Implicit Feedback으로 user의 취향 고려
Implicit Feedback은 주로 대부분이 positive feedback (단점)
Non-observed Item을 다루는 것이 중요한 포인트
Non-observed Item = real negative feedback + missing values
즉, Implicit Feedback을 사용하는 이유는 관측되지 않은 아이템을 다룸으로써 관측되지 않은 아이템이 실제로 negative한지 missing values(관심이 있는데 안 본 아이템)인지 분류해가면서 랭킹 매길 수 있기 때문
totality
: 아이템 i와 j가 다르면 i와 j의 순서가 있고, user u가 아이템 i를 더 선호할 수도 있고 아이템 j를 더 선호할 수도 있다는 것antisymmetry
: user u가 아이템 i를 더 선호한다는 조건 + user u가 아이템 j를 더 선호한다는 조건 ➡️ 아이템 i=jtransitivity
: user u가 아이템 j보다 i를 더 선호하고, 아이템 k보다 아이템 j를 더 선호한다 ➡️ user u는 아이템 k보다 아이템 i를 더 선호한다그림 1은 기존에 많이 사용하던 데이터 처리 방법
?는 관측되지 않은 데이터, +는 관측된 데이터
0은 관측되지 않은 데이터 = 선호하지 않는 데이터(negative)
1은 관측된 데이터 = 선호하는 데이터(positive)
Implicit data를 다루는 중요한 문제점이 있음
그림 2는 저자가 제안한 방법
전체 데이터를 pairwise preference ()로 나타냄
+
: user가 item j에 비해 item i를 더 선호
-
: user가 item i에 비해 item j를 더 선호
User가 보지 못한 item j에 비해 관측된 item i를 더 선호한다고 가정
유저가 (i, j) 모두 관측했거나, 관측하지 않았다면 어떤 선호도도 추론할 수 없음 (테스트셋으로 활용)
: 어떤 유저인지, 어떤 아이템인지, 둘 중 어느 것을 더 선호하는지 tripple 형태의 데이터셋 구성 (중요한 포인트!)
의 의미: User u는 item j보다 item i를 더 선호한다는 것
는 antisymmetric이기 때문에 negative는 implicit이라고 가정
주어진 학습 데이터 로 Bayesian Personalized Ranking 구하는 방법 설명
에 대한 likelihood function과 model parameter 에 대한 prior probability를 사용한 베이지안 문제로 볼 수 있음
다음과 같은 순서로 section 구성
- 사후확률에 대한 수학적 표현 참고
Totality
와 Antisymmetry
에 따라 최종적으로 맨 아래 식으로 간단하게 정리 가능최종적으로 BPR-OPT는 posterior을 구하기 위해 likelihood와 prior로 나누어 다음과 같은 식이 도출됨 ➡️ 최종적으로 모델 파라미터를 최적화하는 과정의 중요한 포인트가 됨
BPR Learning Algorithm은 를 계속해서 업데이트하는 과정
미분가능하기 때문에 gradinet descent로 optimizaiton함
SGD가 적절한 선택지가 아니기 때문에 LEARN-BPR 제안
랜덤하게 triples를 선택하는 SGD 알고리즘을 사용한다는 것
BPR을 활용해 어떻게 Matrix Factorization과 Adaptive k-NN에 적용할 수 있을까
➡️ 사실상 gradient만 알면 모델 파라미터를 계속해서 업데이트 시킬 수 있기때문에 gradient를 어떻게 정의할 것인지가 중요, 즉 LearnBPR 최적화를 위해 모든 모델 파라미터 에 대한 의 gradient만 알면 됨
추후에 논문 참고하여 BPR을 FM과 k-NN에 적용한 방법에 대해 더 자세히 살펴보기
Rossmann
이라는 데이터셋과 Netflix
데이터셋을 활용하여 어떤 방법이 더 성능이 좋은지 비교