Memory-based CF 추천 시스템 설계

김동준·2025년 12월 3일

Recommend System

목록 보기
6/14

Memory-based CF 추천 시스템 설계 상세 설명

이미지의 Memory-based Collaborative Filtering 시스템을 단계별로 설명하겠습니다.

1단계: Data Transform (데이터 변환)

Key Points:

  • 원본 데이터: USER_ID, ITEM_ID, RATING, TIMESTAMP 형태의 로그 데이터
  • 변환 목표: 사용자-아이템 평점 행렬 R 생성

예시:

원본 데이터:
- 사용자 243이 아이템 2904에 5점 부여
- 사용자 243이 아이템 23985에 3점 부여
- 사용자 65가 아이템 235에 3점 부여

변환 후 행렬 R:
     item1  item2  item3  item4  item5
u1:    5      .      .      2      3
u2:    .      4      1      .      .
u3:    .      5      5      3      .
u4:    5      .      4      .      4
u5:    1      1      .      4      5

핵심: 점(.)은 평가하지 않은 아이템을 의미하며, 이를 예측하는 것이 목표입니다.


2단계: Representation Learning (표현 학습)

Key Points:

  • 목적: 각 행(row)과 열(column)의 벡터 표현 학습
  • 방법: 별도의 representation learning 수행하지 않고, 행렬 R을 그대로 사용

예시:

행렬 R에서:
- 사용자 u3의 벡터: [., 5, 5, 3, .]
- 아이템 item3의 벡터: [., 1, 5, ., .]

핵심: Memory-based 방식은 원본 평점 데이터를 "기억"하여 직접 사용합니다.


3단계: Compatibility Modeling (유사도 계산)

Key Points:

  • 유사도 함수 정의: 코사인 유사도 사용
  • 계산 대상: 사용자 간 또는 아이템 간 유사도

2-1. Similarity Function (유사도 함수)

코사인 유사도 공식:

cos(θ) = (A·B) / (||A|| ||B||)

예시 - 사용자 간 유사도:

사용자 u1: [5, ., ., 2, 3]
사용자 u3: [., 5, 5, 3, .]

공통으로 평가한 아이템: item4
u1의 item4 평점: 2
u3의 item4 평점: 3

Sim(u1, u3) = cos(θ) 계산

예시 - 아이템 간 유사도:

아이템 i2: [., 4, 5, ., 1]
아이템 i3: [., 1, 5, 4, .]

공통으로 평가받은 사용자: u2, u3
Sim(i2, i3) 계산

2-2. Similarity Computation (유사도 계산)

핵심 원리: 점 A와 B 사이의 각도 θ가 작을수록 유사도가 높음


4단계: Prediction (예측)

Key Points:

  • 예측 공식: 가중 평균 방식
  • 가중치: 유사도 점수 사용

예측 공식:

r(u,i) = Σ[j∈Iᵤ\{i}] Rᵤ,ⱼ · Sim(i,j) / Σ[j∈Iᵤ\{i}] Sim(i,j)

구성 요소:

  • Iᵤ: 사용자 u가 평가한 아이템 집합
  • Rᵤ,ⱼ: 사용자 u가 아이템 j에 부여한 평점
  • Sim(i,j): 아이템 i와 j의 유사도

실제 예시:

목표: 사용자 u1이 아이템 i2에 부여할 평점 예측

1. u1이 평가한 아이템: i1(5점), i4(2점), i5(3점)

2. 각 아이템과 i2의 유사도 계산:
   - Sim(i2, i1) = 0.8
   - Sim(i2, i4) = 0.3
   - Sim(i2, i5) = 0.6

3. 예측 계산:
   r(u1, i2) = (5×0.8 + 2×0.3 + 3×0.6) / (0.8 + 0.3 + 0.6)
             = (4.0 + 0.6 + 1.8) / 1.7
             = 6.4 / 1.7
             ≈ 3.76점

4. 결과: 사용자 u1은 아이템 i2를 약 3.8점으로 평가할 것으로 예측

전체 시스템 흐름 요약

  1. 데이터 수집 → 사용자-아이템 평점 행렬 생성
  2. 유사도 계산 → 아이템 또는 사용자 간 코사인 유사도 측정
  3. 예측 → 유사한 아이템/사용자의 평점을 가중 평균하여 예측
  4. 추천 → 예측 점수가 높은 아이템을 사용자에게 추천

Memory-based CF의 장점:

  • 구현이 간단하고 직관적
  • 새로운 평점이 즉시 반영됨
  • 설명 가능성이 높음 (왜 추천했는지 설명 가능)

단점:

  • 데이터가 희소할 때 성능 저하 (Sparsity 문제)
  • 확장성 문제 (사용자/아이템 수 증가 시 계산량 증가)
profile
Story Engineer

0개의 댓글