Memory based Collaborative Filtering
Based on the following lectures
(1) “Recommendation System Design (2024-1)” by Prof. Ha Myung Park, Dept. of Artificial Intelligence. College of SW, Kookmin Univ.
(2) "Recommender System (2024-2)" by Prof. Hyun Sil Moon, Dept. of Data Science, The Grad. School, Kookmin Univ.
Collaborative Filtering
-
협업 필터링(Collaborative Filtering) : 과거 여러 사용자들이 다양한 아이템에 대하여 평가 점수를 매긴 기록을 활용하여 아직 상호작용하지 않은 아이템에 대한 사용자의 평점을 추론하는 방법론
- 사용자 기반 협업 필터링(User-Based Collaborative Filtering) : Identify like-minded users
- 아이템 기반 협업 필터링(Item-Based Collaborative Filtering) : Identify buying patterns
-
사용자-아이템 상호작용 행렬(User-Item Interaction Matrix) : $M$ 명의 사용자와 $N$ 가지 아이템 간의 상호작용을 수치적으로 표현한 행렬로서, 통상 행 벡터는 사용자를, 열 벡터는 아이템을 의미함
\[r_{u,i} \in \mathbf{R} \in \mathbb{R}^{M \times N}\]- 협업 필터링은 실질적으로 사용자-아이템 상호작용 행렬의 결측치(위 예시의 $-1$)를 채우는 방법이므로 행렬 완성 문제라고도 부름
Function
-
Bias-aware Collaborative Filtering Function
\[\begin{aligned} \hat{r}_{u,i} &= \mu + \beta_{u} + \beta_{i} + \text{what} \end{aligned}\]- $\hat{r}_{u,i}$ : 사용자 $u$ 의 아이템 $i$ 에 대한 평점 예측값
- $\mu$ : 커뮤니티 평점 평균
- $\beta_{u}$ : 사용자 $u$ 의 평균 평점 편차로서 사용자의 평점 척도
- $\beta_{i}$ : 아이템 $i$ 의 평균 평점 편차로서 아이템의 인기도
-
What?
- k-NN Algorithm(Memory based Collaborative Filtering)
- Decision Tree Algorithm
- Association Rules Algorithm
- Naive Bayes Algorithm
- Matrix Factorization Algorithm(Latent Factor Model)
Memory based Collaborative Filtering
-
메모리 기반 협업 필터링(Memory based Collaborative Filtering) : (사용자 기반 협업 필터링 기준으로) 사용자가 상호작용하지 않은 아이템에 대한 선호를 예측함에 있어, 해당 아이템에 대한 피어 그룹의 선호를 유사도만큼 가중 평균하는 방법
\[\begin{aligned} \text{what} &= \frac{\sum_{v \in p(i \mid u)}{\text{sim}(u,v) \cdot \left(r_{v,i}-\overline{r}_{v}\right)}}{\sum_{v \in p(i \mid u)}{\vert \text{sim}(u,v) \vert}} \end{aligned}\]- $v \in p(i \mid u)$ : 타깃 사용자 $u$ 의 $k$-Nearest Neighbor 중 타깃 아이템 $i$ 에 대하여 펑점을 매긴 사용자 집합으로서 피어 그룹(Peer Group)
How to Calculate $\text{sim}(u,v)$
-
피어슨 상관계수(Pearson Correlation Coefficient) : 사용자 벡터 간 평점 척도에 차이가 클 경우 유용함
\[\begin{aligned} \text{sim}(u,v) &= \frac{\sum_{j \in I_{u} \cap I_{v}}{\left(r_{u,j}-\overline{r}_{u}\right)\cdot\left(r_{v,j}-\overline{r}_{v}\right)}}{\sqrt{\sum_{j \in I_{u} \cap I_{v}}{\left(r_{u,j}-\overline{r}_{u}\right)^{2}}}\cdot\sqrt{\sum_{j \in I_{u} \cap I_{v}}{\left(r_{v,j}-\overline{r}_{v}\right)^{2}}}} \end{aligned}\] -
코사인 유사도(Cosine Measure) : 상호작용 데이터가 희박할 경우 유용함
\[\begin{aligned} \text{sim}(u,v) &= \frac{\overrightarrow{\mathbf{r}}_{u} \cdot \overrightarrow{\mathbf{r}}_{v}}{\Vert \overrightarrow{\mathbf{r}}_{u} \Vert_{L2} \cdot \Vert \overrightarrow{\mathbf{r}}_{v} \Vert_{L2}} \end{aligned}\]- \(\overrightarrow{\mathbf{r}}_{u} \in \mathbf{R}_{M \times N}\) : 사용자-아이템 상호작용 행렬의 행 벡터로서 사용자 벡터
Discounted Similarity
-
유사도 할인(Discounted Similarity) : 두 사용자 간 공동으로 상호작용한 아이템 갯수($\vert I_{u} \cap I_{v}\vert$)가 적을 경우, 유사도 값을 신뢰하기 어려우므로 이에 비례하여 유사도를 할인함
\[\begin{aligned} \text{sim}(u,v) &\leftarrow \underbrace{\frac{\min{\Big(\vert I_{u} \cap I_{v}\vert, \beta\Big)}}{\beta}}_{\text{Discount Factor}} \cdot \text{sim}(u,v) \end{aligned}\]
Discounted Importance
-
중요도 할인(Discounted Importance) : 대중성 있는 아이템의 경우 사용자가 이미 경험했거나 인지하고 있지만 소비하지 아니하기로 결정한 아이템일 가능성이 높으므로, 대중성에 비례하여 아이템의 중요도(평점)을 할인함
\[\begin{aligned} \overrightarrow{\mathbf{r}}_{i} &\leftarrow \underbrace{\log{\frac{M}{m_{i}}}}_{\text{Discount Factor}} \cdot \overrightarrow{\mathbf{r}}_{i} \end{aligned}\]- \(\overrightarrow{\mathbf{r}}_{i} \in \mathbf{R}_{M \times N}\) : 사용자-아이템 상호작용 행렬의 열 벡터로서 아이템 벡터
- $M$ : 총 사용자 수
- $m_{i}$ : 아이템 $i$ 에 대하여 상호작용한 사용자 수
이미지 출처
- https://towardsdatascience.com/essentials-of-recommendation-engines-content-based-and-collaborative-filtering-31521c964922
- https://buomsoo-kim.github.io/recommender%20systems/2020/09/25/Recommender-systems-collab-filtering-12.md/