1. User-free Model
- Memory-bsed (Similarity based)
- Model based
- 다 기억하는 게 아니라
- 이력을 저차원 표현으로 압축해서, 압축된 걸 활용해서 예측하는 것
- Item Matrix와 User Matrix로 표현을 압축한 다음에, 벡터로(gamma) 내적으로 예측
1.1 의미 및 특징
“item feature만으로 좋은 추천이 가능하지 않을까?“
- 사용자 표현 없이, 아이템 표현만으로 좋은 추천이 가능한가?
- Memoryed, Model based 두 경계에 있는 학습 방법
- Item은 학습하니까 ⇒ Model-based 성격
- 근데 추론할때, 예측할 때는 이력을 확인함 ⇒ Memory-based 성격
- 이 방법이 필요한 이유? 선호하는 이유?
-
새로운 유저의 vector를 어떻게 표현할지 모르니까 계속 추가 학습해야 됨
⇒ User-free로 하면, 학습 생략이 가능하기 때문에 추천시스템 serving할 때 간편
-
상호작용이 적은 사용자에게도 합리적 예측 가능
- 상호작용이 적다 = 학습할 데이터가 적다 = 다른 유저들에 비해 학습이 적게 된다 = 아직 수렴 전에 학습 종료 or 오버피팅
⇒ 각 유저의 특성 학습 없이, item 만으로 예측하기 때문에 합리적!
-
아이템 소비 순서 활용 가능
- 유저가 어떻게 인터렉션을 했는지 순서 반영 가능…(이해못함?????/)
SLIM _ User-free Model 알고리즘 1
2.1 아이디어 / 학습 알고리즘
유사도 기반 방법
유사도 지표 사용하는 대신, 아이템 간 관련성을 데이터로부터 학습
- item-item CF 와 유사한 알고리즘
- 차이점 : 유사도 지표를 사용하는 대신, 아이템 간 관련성을 직접 학습
!image.png
- R은 고정되어 있고 / W(초기값 0)를 학습함
- R : User Interacton (use * Item) implicit data 활용하기 때문에 ⇒ 1로 표현됨
- W : Item Correlation
- (0,1) ⇒ 0.4 (0이 1과 느끼는 유사도? / 1이 0에느끼는 유사도?)
- (1,0) ⇒ 0.3 (1이 0과 느끼는 유사도? / 0이 1에느끼는 유사도?)
- 각 요소 값들의 의미 : 유사도 (절친느끼는 정도 다르듯이) (따라서 0 이상의 값만 취급)
- W_ij ≠ W_ji 인 이유?
- 순서도 반영?
- e.g) 시리즈에서 1 → 2 보는 거 / 2→ 1 보는 거 평점 매기는 게? 다를 수 있으므
- 유저 b가 item 4 몇 점을 매길 것인가??
- (R_matrix의 두번째 행) dot (W의 4번째 컬럼값)
- (0,1,0,0,1) dot (0.15, 0, 0, 0.25, 0, 0.45)
- 유저 g가 아이템 2에 몇 점을 매길 것인가?
- (0,0,1,1,1,) * (0.4, 0, 0.3, 0, 0.05)
2.2 최적화 과정
- 문제점 : W가 I*I로 꽉찬 행렬이다
- 전략 Solution : W가 sparse 해지게 만들고자 함
-
⇒ CSR / CSC 포맷으로 저장 (sparse한 matrix를 효율적으로 나타내는 방법)
-
sparse하게 만들기 위해서 → L1 정규화 (절댓값 형태) 넣음
-
L2정규화 (2차 함수 형태) : 과적합 방지
⇒ L1을 활용하면 L2와 달리, 0과 가깝든 멀든, 같은 패널티를 주겠다.
!image.png
- 두 가지 제약
- W_{i,j} ≥ 0
- “자기자신 = 대각 행렬”은 0 인 이유?
- 2번 아이템 예측하는데 2번 주면 → 과적합됨
- 따라서, 자기 자신 제외
2.3 장점
- 빠른 추론 가능
- W를 sparse하게 만들기 때문에 연산해야 하는 parameter 수가 적다
- Long-tail 성능
- 비인기 아이템도 잘 처리할 수 있
- Latent factor 모델은 인기 아이템에 치우침
FISM _ User-free Model 알고리즘 2
3.1 아이디어
- SLIM에서는 유저를 따로 표현하지 않고, 유저가 본 아이템들로 Item Matrix를 곱?했는데
- 자체적으로 표현
기존 (Item) latent factor 모델의 사용자 벡터(gamma_u)를
→ “아이템 표현(gamma_i)의 평균”으로 대체
- 이 때, 표현력이 떨어지는 걸 방지해서 그냥 gamma_i랑 구분해서 새롭게 gamma_i ‘를 사용
- 기존 gamma_i를 target embeddings 으로,
- 새로운 gamma_i’를 query embeddings 으로 나타냄 → 이거 활용해서 user embedding 만듦
⇒ item matrix(gamma_i)랑 interaction(R)이랑 조합해서 평균 낸 걸로 고려해서 예측
<aside>
예시)
g유저의 벡터는?
R에서 g가 3,4,5를 가지고 있음 ⇒
</aside>
3.2 학습 알고리즘
!image.png
- FISMrmse
- 기본 RMSE와 동일한 구조
- 실제로 interaction한 것과 에측 간 사이에서, L2 norm을 최소화 하는 loss func
- FISMauc
- BPR과 유사함!! (본 게, 안 본 것보다 점수가 높아야 한다. auc를 최대화 하는 방향으로 학습)
- 이 loss func 대신에 BPR 하는 게 더 안정적일 수 있음?
3.3 장점
- 사용자 상호작용이 sparse한 경우에 효과적임
- 사용자 표현을 학습하기엔 데이터가 부족함.
- 아이템 이력의 평균이 더 안정적인 추정이 가능함.
- 딱 하나만 본 유저에게도, 예측할 수 있음?
Other User-free Model 알고리즘
AutoRec
- Auto Encoder 기반의 추천 모델
- Encoder-only??? 모델? Decoder-only 추천 모델도 있다고 함~~
- 저차원으로 의도적으로 정보 손실을 하면서, 불필요한 정보는 없애고 필요한 정보만 저차원에 꽊꽉 눌러 담음
- input : 사용자의 interaction 정보 (e.g. 봤는지, 안 봤는지 10010 이런 식)
- FISM과 유사/차이점
- 유사점 : interaction 정보만 사용하므로 user embedding 사용 x (user-free)
- 차이점 : auto rec은 딥러닝 기반이므로 비선형 연산을 사용/ 학습 가능
Item2vec
- W2v 기반의 추천 모델
- 앞뒤에 있는 애들이랑 비슷해지게 학습함.
- 상호작용 시퀀스에서 같은 문맥의 아이템 → 유사 아이템
- FISM과 유사/차이점
- 유사점 : 아이템 표현만 학습 (user - free)
Sequential Models
- interaction에 대한 순서를 반영해서 예측, 추천하려고 함 ⇒ user free모델을 쓸 수 밖에 없음
- 순서정보 반영 가능
- 유저 임베딩이 존재하면, 순서 고려하기 어려움.
- 신경망 기반 seq 추천 모델의 대부분이 user-free 모델