추천 시스템 개요
추천 시스템의 목표는 사용자가 좋아할 만한 데이터를 추천하는 것이다.
영화 추천, 상품 추천, 유뷰트 알고리즘 추천 등이 그 예이다.
기반이 되는 정보는 유저의 구매 기록, 평가, 클릭 이력, 시청 시간 등이 있다.

추천 시스템의 분류
Content-based approach
사용자가 좋아했던 아이템과 비슷한 콘텐츠를 추천한다.
Collaborative filtering(CF) approach
비슷한 취향의 다른 사용자들이 좋아한 아이템을 추천한다.
Hybrid approach
Content-based + Collaborative filtering 을 섞은 방식이다.
Content Based Approach
content based approach의 핵심은 사용자 자체를 이해해서 그 사람에게 맞는 걸 찾아주는 것이다.
📍 과정
1. 사용자의 프로필을 파악한다.
2. 아이템과 유사도를 비교한다.
3. 유사도가 높은 아이템을 추천한다.

Collaborative Filtering(CF) Approach
사용자가 좋아하는 아이템과 비슷한 걸 좋아하는 사람들이 어떤 것을 좋아했는지 보는 방식이다.
📍 과정
1. 사용자와 비슷한 취향의 이웃 사용자를 찾는다.
2. 그 사람들이 좋아한 다른 아이템을 예측한다.
3. 그 중 점수가 가장 높은 것을 추천한다.

Heuristic-Based Method
CF에서 사용하는 방법이다.
아래와 같이 유저와 아이템 사이의 평점 행렬을 기반으로 이웃을 찾고 점수를 예측한다.

유저 간 유사도를 수치로 표현하는 방법 중인 PCC도 여기에 포함된다.
PCC
PCC란 두 유저의 공통으로 평가한 아이템들에 대해, 평가 패턴이 얼마나 유사한지를 계산하는 것이다.
Vu,j : 유저 u가 아이템 j에 준 평점
Vˉu : 유저 u의 평균 평점
j : u와 v가 공통으로 평가한 아이템
이 값이 1에 가까우면 매우 유사한 것이고, 0이면 상관 없음, -1에 가까우면 반대가 되는 것이다.
예를 들어 6개의 영화에 대한 사용자 3명의 평점이 아래와 같다고 가정해보자
A - <4.0, 1.0, 4.5, 5.0, 2.0, _>
B - <_, 1.5, 5.0, 4.5, 2.0, 5.0>
C - <1.0, _ , 1.5, 1.0, 5.0, 1.0>
PCC를 이용하여 각각 계산하면 아래와 같은 그래프가 나올 것이다.

코사인 유사도
평균 평점 없이 평점 벡터 사이의 각도로 유사도를 측정하는 방식이다.
유저 u와 v가 각각 준 평점을 벡터로 보고 벡터간 코사인 각도를 이용해 유사도를 계산하는 것이다.
계산이 간단하다는 장점이 있지만, 유저의 평점 성향 반영이 어렵다는 단점이 있다.
수식은 아래와 같다.
예를 들어 6개의 영화에 대한 사용자 3명의 평점이 아래와 같다고 가정해보자
A - <4.0, 1.0, 4.5, 5.0, 2.0, _>
B - <_, 1.5, 5.0, 4.5, 2.0, 5.0>
C - <1.0, _ , 1.5, 1.0, 5.0, 1.0>
코사인 유사도를 이용하여 각각 계산하면 아래와 같은 그래프가 나올 것이다.

평점 예측 방식 : Aggregation
이웃 유저들이 아이템에 준 평점을 바탕으로, 타겟 유저의 예측 평점을 계산하는 것이다.
일반적인 집계 함수는 아래와 같다.
방법 1. 단순 평균
C는 타겟 유저 c의 이웃들을 의미하고, s는 예측하려는 아이템을 의미한다.
방법 2. 유사도 기반 가중 평균
유사한 유저일수록 더 큰 영향력을 미친다.
방법 3. 정규화된 가중 합산
각 유저의 평균 평점 차이까지 반영하여 성향 보정이 가능하다.
NGCF : Neural Graph Collaborative Filtering
개요
💡 핵심 아이디어
추천 시스템을 그래프로 모델링하면 더 강력해진다.
NGCF는 유저와 아이템을 이중 그래프 형태로 표현한다.
노드는 사용자와 아이템을, 엣지는 상호작용을 의미한다.
목표
과거 유저-아이템 사이의 상호작용을 바탕으로 미래에 어떤 아이템과 상호작용할지 예측 및 추천하는 것을 목표로 한다.
이건 결국 링크 예측 문제로 바뀌는 것이다.
임베딩 기반 구조
각각의 노드를 벡터로 변환한다.
유저 u∈U : 벡터 u∈Rᵈ → user embedding
아이템 v∈V : 벡터 v∈Rᵈ → item embedding
fθ( , ) : R x R → R → 함수 f의 입출력의 정의역과 공역
그리고 유저의 선호도를 계산한다.
유저 벡터와 아이템 벡터의 내적으로 선호도를 계산하면 된다.
이렇게 계산된 점수가 높을수록 추천 가능성이 높아지는 것이다.

핵심 아이디어
NGCF는 단순히 직접 연결된 노드만 보는 것이 아니라 고차 연결까지 고려한다.
직접 연결되지는 않았지만 두 유저가 공통된 아이템을 2개 선택했다면 둘이 비슷한 취향이라고 판단한다.
이런 간접 연결(고차 이웃) 관계를 임베딩에 반영하여 더 정확하고 풍부한 표현을 만든다.

'CS > 기계학습' 카테고리의 다른 글
| [기계학습] GML - Representation Learning (1) | 2025.06.16 |
|---|---|
| [기계학습] GML - Ranking (2) | 2025.06.16 |
| [기계학습] Generative ML (2) | 2025.06.14 |
| [기계학습] RNN (5) | 2025.06.14 |
| [기계학습] 대표적인 CNN 모델 (2) | 2025.06.13 |