-
[RecSys] 4-4. Collaborative Filtering - MBCF_MF인공지능/부스트캠프 Ai Tech 2022. 3. 11. 18:30728x90
[RecSys] 4-4. Collaborative Filtering-MBCF_MF In [1]:from IPython.core.display import display, HTML display(HTML("<style>.container { width:90% !important; }</style>"))
협업필터링(Collaborative Filtering, CF)¶
CF 분류¶
- Neighborhood-based CF (Memory-based CF)
2. Model-based CF
* Singular Value Decomposition * Matrix Factorization(SGD, ALS, BPR) * Deep Learning
- Hybrid CF
Matrix Factorization(MF)¶
User-Item 행렬을 저차원의 User와 Item의 latent factor 행렬의 곱으로 분해하는 방법
SVD의 개념과 유사하나, 관측된 선호도(평점)만 모델링에 활용해, 관측되지 않은 선호도를 예측하는 일반적인 모델을 만드는 것이 목표.
Rating Matrix를 P와 Q로 분해하여 R과 최대한 유사하게 ${\hat{R}}$을 추론(최적화)
$${R \approx P \times Q^T = \hat{R}}$$${R \approx P \times Q^T = \hat{R}}$
${P \rightarrow |U| \times k}$
${Q \rightarrow |I| \times k}$
${|U|}$ 와 ${|I|}$은 각각 학습 파라미터가 된다.
- ${|U|}$ : 전체 유저
- ${|I|}$ : 전체 아이템
Object Function을 정의하고 최적화 문제를 푸는 것
- True rating : ${r_{u,i}}$
- predicted rating : ${\hat{r_{u,i}} = p_u^Tq_i}$
Objective Function¶
$${\min_{P,Q}\sum_{observed r_{u,i}}(r_{u,i} - p_u^Tq_i)^2 + \lambda(||p_u||_2^2 + ||q_i||_2^2)}$$${r_{u,i} :}$ 학습 데이터에 있는 유저 u의 아이템 i에 대한 실제 rating
${p_u(q_i):}$ 유저(아이템) u(i)의 latent vector
- 최적화 문제를 통해 업데이트 되는 파라미터임
${\lambda}$(상수)배 된 penalty term은 L2-정규화(regularization)을 의미
학습 데이터에 과적합되는 것을 방지
실제 관측된 데이터만(${observed}$)을 사용하여 모델을 학습
- SVD는 행렬 분해를 위해 결측 entry를 채워 넣었고, 그 과정에서 문제가 생길 수 있었다.
정규화?¶
weight의 과적합을 막기위해 사용, Regularization Term에 곱해지는 ${\lambda}$의 크기에 따라 영향도가 달라진다.
대표적으로 L1, L2 정규화가 있다.
L1 정규화 ${}$
L2 정규화
MF-Loss¶
SGD를 사용한 경우 Loss 함수는
Loss : ${\sum(r_{u,i}-p_u^Tq_i)^2 + \lambda(||p_u||_2^2 + ||q_i||_2^2)}$
Error : ${e_{ui} = r_{ui} - p_u^Tq_i}$
Gradient : ${{\partial L \over \partial p_u} = {\partial (r_{ui}- p_u^Tq_i)^2 \over \partial p_u} + {\partial \lambda ||p_u||_2^2 \over \partial p_u} = -2(r_ui - p_u^Tq_i)q_i + 2\lambda p_u = -2(e_{ui}q_i - \lambda p_u)}$
Gradient의 반대 방향으로 p_u, q_i를 업데이트 한다.
${p_u \leftarrow p_u + \eta \cdot (e_{ui}q_i - \lambda p_u)}$
${q_i \leftarrow q_i + \eta \cdot (e_{ui}p_u - \lambda q_i)}$
MF + 알파 테크닉¶
Adding Biases¶
유저에 따라 전체적으로 평점을 짜게, 많이 줄 수도 있다.
- 이런 편향을 제거하기 위해 전체 평균(${\mu}$) , 유저/아이템(${b_u, b_i}$) bias를 추가해 예측 성능을 높인다.
Bias가 추가된 목적함수¶
$${\min_{P,Q}\sum_{observed r_{u,i}}(r_{u,i} - \mu - b_u - b_i - p_u^Tq_i)^2 + \lambda(||p_u||_2^2 + ||q_i||_2^2 + b_u^2 + b_i^2)}$$Error
$${e_{ui} = r_{ui} - \mu - b_u - b_i - b_u^Tq_i}$$Gradient의 반대 방향으로 ${b_u, b_i, p_u, q_i}$를 업데이트
$${b_u \leftarrow b_u + \eta \cdot (e_{ui} - \lambda b_u)}$$$${b_i \leftarrow b_i + \eta \cdot (e_{ui} - \lambda b_i)}$$$${p_u \leftarrow p_u + \eta \cdot (e_{ui}q_i - \lambda p_u)}$$$${q_i \leftarrow q_i + \eta \cdot (e_{ui}p_u - \lambda q_i)}$$Adding Confidence Level¶
모든 평점이 동일한 신뢰도를 갖지 않는다. 이 경우 ${r_{u,i}}$ 에 대한 신뢰도 ${c_{u,i}}$ 추가
대규모 광고 집행과 같이 특정 아이템이 많이 노출되어 클릭되는 경우 : 신뢰도를 낮게 만들어 모델이 덜 학습되게 만든다.
유저의 아이템에 대한 평점이 정확하지 않은 경우(Implicit Feedback)
- 기존 목적 함수
Confidence Level이 추가된 목적 함수¶
$${\min_{P,Q}\sum_{observed r_{u,i}}c_{u,i}(r_{u,i} - \mu - b_u - b_i - p_u^Tq_i)^2 + \lambda(||p_u||_2^2 + ||q_i||_2^2 + b_u^2 + b_i^2)}$$Adding Temporal Dynamics¶
시간에 따라 변하는 유저, 아이템의 특성을 반영하는 방법
- 아이템은 시간이 지남에 따라서 인기도가 오르거나 떨어진다.
- 유저도 시간이 지남에 따라서 평점의 기준이 엄격해진다.
시간을 반영한 평점 예측¶
학습 파라미터가 시간을 반영하도록 모델 설계
$${\widehat{r_{ui}(t)} = \mu + b_u(t) + b_i(t) + p_u^Tq_i(t)}$$ex) ${b_u(t) = b_u + \alpha_u \cdot sign(t-t_u) \cdot |t - t_u|^\beta}$
Alternative Least Square(ALS)¶
유저와 아이템 매트릭스를 번갈아가면서 업데이트 , 두 매트릭스 중 하나를 상수로 놓고 나머지 매트릭스를 업데이트 한다. ${p_u, q_i}$ 중 하나를 고정하고 다른 하나를 least-square 문제를 푸는 것
vs SGD : Spase한 데이터에 대해 SGD보다 Robust, 대용량 데이터를 병렬처리(행렬연산)하여 빠른 학습 가능
${p_u}$ 나 ${q_i}$ 를 상수로 고정할 경우 목적함수가 quadratic form이 되어 convex 함수가 된다.
ALS 목적함수¶
$${\min_{P,Q}\sum_{observed r_{u,i}}(r_{u,i} - \mu - b_u - b_i - p_u^Tq_i)^2 + \lambda(||p_u||_2^2 + ||q_i||_2^2 + b_u^2 + b_i^2)}$$P, Q 를 번갈아 가면서 업데이트
$${p_u = (Q^TQ + \lambda I)^{-1}Q^Tr_u}$$$${q_i = (P^TP + \lambda I)^{-1}P^Tr_i}$$이 경우 한번의 행렬연산으로 계산할 수 있다.
Implicit Feedback 고려¶
- Preferernce : 유저 u가 아이템 i를 선호하는지 여부를 binary로 표현
- Confidence : 유저 u가 아이템 i를 선호하는 정도를 나타내는 increasing function, ${\alpha}$는 postive/negative feedback 간의 상대적인 중요도를 조정하는 하이퍼 파라미터
알파가 크면 신뢰도의 영향력이 높아지고, 작으면 신뢰도의 영향력이 작아진다.
목적 함수¶
- 기존 목적 함수
- 새로운(Preference, Confidence 반영) 목적 함수
해의 형태¶
- 기본 해
- Preference, Confidence 반영 해
'인공지능 > 부스트캠프 Ai Tech' 카테고리의 다른 글
[RecSys] 5. Item2Vec and ANN (0) 2022.03.17 [L1_P_stage] 개인 회고 (0) 2022.03.12 [RecSys] 4-3. Collaborative Filtering-MBCF_SVD (0) 2022.03.11 [RecSys] 4-2. Collaborative Filtering - Rating Prediction (0) 2022.03.11 [RecSys] 4-1. Collaborative Filtering (0) 2022.03.11