협업 필터링 (유저 기반, 아이템 기반)

HanJu Han·2024년 11월 27일
0

추천 시스템

목록 보기
17/49
       어벤져스  인셉션  타이타닉  인터스텔라
철수     5        4       null        5
영희     4        5       1        4
민수     5        4       2        5
지은     2        1       5        2

협업 필터링의 수식과 계산 과정

1. 유저 기반 협업 필터링 상세 계산

먼저 유저 간 유사도를 계산하기 위해 코사인 유사도를 사용합니다.
코사인 유사도 공식:

similarity = cos(θ) = A·B / (||A|| ||B||)
           = Σ(Ai × Bi) / (√Σ(Ai²) × √Σ(Bi²))

철수와 다른 사용자들의 유사도를 계산해보겠습니다:

a) 철수-영희 유사도:

  • 공통 평점이 있는 영화: 어벤져스(5,4), 인셉션(4,5), 인터스텔라(5,4)
  • 계산: (5×4 + 4×5 + 5×4) / (√(5² + 4² + 5²) × √(4² + 5² + 4²))
  • = (20 + 20 + 20) / (√(25 + 16 + 25) × √(16 + 25 + 16))
  • = 60 / (√66 × √57)
  • = 60 / 61.3
  • ≈ 0.979

b) 철수-민수 유사도:

  • 공통 평점: 어벤져스(5,5), 인셉션(4,4), 인터스텔라(5,5)
  • 계산: (5×5 + 4×4 + 5×5) / (√(5² + 4² + 5²) × √(5² + 4² + 5²))
  • = (25 + 16 + 25) / (√66 × √66)
  • = 66 / 66
  • = 1.000

c) 철수-지은 유사도:

  • 공통 평점: 어벤져스(5,2), 인셉션(4,1), 인터스텔라(5,2)
  • 계산: (5×2 + 4×1 + 5×2) / (√(5² + 4² + 5²) × √(2² + 1² + 2²))
  • = (10 + 4 + 10) / (√66 × √9)
  • = 24 / 24.4
  • ≈ 0.984

이제 철수의 타이타닉 평점을 예측해보겠습니다.
예측 공식:

예측 평점 = Σ(유사도 × 평점) / Σ(유사도)

대입:

  • 영희의 타이타닉 평점: 1
  • 민수의 타이타닉 평점: 2
  • 지은의 타이타닉 평점: 5

계산(유사도 가중 평균):

예측 평점 = (0.979×1 + 1.000×2 + 0.984×5) / (0.979 + 1.000 + 0.984)
          = (0.979 + 2.000 + 4.920) / 2.963
          = 7.899 / 2.963
          ≈ 2.666

2. 아이템 기반 협업 필터링 상세 계산

아이템 기반 협업 필터링에서는 영화들 간의 유사도를 계산한 후, 이를 바탕으로 평점을 예측합니다. 주어진 데이터로 타이타닉 영화의 평점을 예측해보겠습니다.

  1. 각 영화 쌍의 유사도 계산 (피어슨 상관계수 사용, 코사인 유사도 사용 가능)

피어슨 상관계수 공식:

r = Σ((x - μx)(y - μy)) / (√Σ(x - μx)² × √Σ(y - μy)²)

a) 타이타닉-어벤져스 유사도:

  • 공통 평점 페어: (1,4), (2,5), (5,2) [영희, 민수, 지은의 평점]
  • 타이타닉 평균(μx) = (1 + 2 + 5)/3 = 2.67
  • 어벤져스 평균(μy) = (4 + 5 + 2)/3 = 3.67

분자 계산:

Σ((x - μx)(y - μy)) = 
(1 - 2.67)(4 - 3.67) +
(2 - 2.67)(5 - 3.67) +
(5 - 2.67)(2 - 3.67)
= (-1.67 × 0.33) + (-0.67 × 1.33) + (2.33 × -1.67)
= -0.551 - 0.891 - 3.891
= -5.333

분모 계산:

√[Σ(x - μx)² × Σ(y - μy)²] =
√[((1 - 2.67)² + (2 - 2.67)² + (5 - 2.67)²) × 
  ((4 - 3.67)² + (5 - 3.67)² + (2 - 3.67)²)]
= √[(2.789 + 0.449 + 5.429) × (0.109 + 1.769 + 2.789)]
= √(8.667 × 4.667)
= √40.447
= 6.359

따라서, 타이타닉-어벤져스 유사도 = -5.333/6.359 = -0.839

b) 타이타닉-인셉션 유사도:

  • 공통 평점 페어: (1,5), (2,4), (5,1) [영희, 민수, 지은의 평점]
  • 타이타닉 평균(μx) = 2.67
  • 인셉션 평균(μy) = (5 + 4 + 1)/3 = 3.33

분자 계산:

Σ((x - μx)(y - μy)) = 
(1 - 2.67)(5 - 3.33) +
(2 - 2.67)(4 - 3.33) +
(5 - 2.67)(1 - 3.33)
= (-1.67 × 1.67) + (-0.67 × 0.67) + (2.33 × -2.33)
= -2.789 - 0.449 - 5.429
= -8.667

분모 계산:

√[Σ(x - μx)² × Σ(y - μy)²] =
√[8.667 × ((5 - 3.33)² + (4 - 3.33)² + (1 - 3.33)²)]
= √(8.667 × 8.667)
= √75.117
= 8.667

따라서, 타이타닉-인셉션 유사도 = -8.667/8.667 = -1.000

c) 타이타닉-인터스텔라 유사도:

  • 공통 평점 페어: (1,4), (2,5), (5,2)
  • 타이타닉 평균(μx) = 2.67
  • 인터스텔라 평균(μy) = (4 + 5 + 2)/3 = 3.67

이는 어벤져스와 동일한 패턴이므로 유사도도 -0.839가 됩니다.

  1. 철수의 타이타닉 평점 예측

예측 공식:

예측 평점 = Σ(유사도 × 평점) / Σ(|유사도|)

철수의 다른 영화 평점:

  • 어벤져스: 5
  • 인셉션: 4
  • 인터스텔라: 5

계산:

예측 평점 = 
(-0.839 × 5) + (-1.000 × 4) + (-0.839 × 5) / (0.839 + 1.000 + 0.839)
= (-4.195 - 4.000 - 4.195) / 2.678
= -12.390 / 2.678
≈ 2.31

따라서 아이템 기반 협업 필터링으로 예측한 철수의 타이타닉 평점은 약 2.31점입니다.

이 계산 결과는 직관적으로도 이해가 됩니다. 타이타닉은 철수가 높은 평점을 준 다른 영화들과 음의 상관관계를 보이므로, 철수는 타이타닉을 크게 선호하지 않을 것으로 예측됩니다.


번외.
코사인 유사도 사용

코사인 유사도 공식:

cos(θ) = A·B / (||A|| ||B||)
       = Σ(Ai × Bi) / (√Σ(Ai²) × √Σ(Bi²))
  1. 영화 간 코사인 유사도 계산

a) 타이타닉-어벤져스 유사도:

  • 공통 평점: 영희(1,4), 민수(2,5), 지은(5,2)
코사인 유사도 = (1×4 + 2×5 + 5×2) / (√(1² + 2² + 5²) × √(4² + 5² + 2²))
               = (4 + 10 + 10) / (√(30) × √(45))
               = 24 / √1350
               = 24 / 36.74
               ≈ 0.653

b) 타이타닉-인셉션 유사도:

  • 공통 평점: 영희(1,5), 민수(2,4), 지은(5,1)
코사인 유사도 = (1×5 + 2×4 + 5×1) / (√(1² + 2² + 5²) × √(5² + 4² + 1²))
               = (5 + 8 + 5) / (√30 × √42)
               = 18 / √1260
               = 18 / 35.50
               ≈ 0.507

c) 타이타닉-인터스텔라 유사도:

  • 공통 평점: 영희(1,4), 민수(2,5), 지은(5,2)
코사인 유사도 = (1×4 + 2×5 + 5×2) / (√(1² + 2² + 5²) × √(4² + 5² + 2²))
               = 24 / 36.74
               ≈ 0.653
  1. 철수의 타이타닉 평점 예측

예측 공식:

예측 평점 = Σ(유사도 × 평점) / Σ(유사도)

철수의 평점:

  • 어벤져스: 5
  • 인셉션: 4
  • 인터스텔라: 5

계산:

예측 평점 = (0.653×5 + 0.507×4 + 0.653×5) / (0.653 + 0.507 + 0.653)
          = (3.265 + 2.028 + 3.265) / 1.813
          = 8.558 / 1.813
          ≈ 4.72

피어슨 상관계수를 사용했을 때와 다른 결과가 나왔네요. 이는 각 유사도 측정 방식의 특성 때문입니다:

  1. 코사인 유사도:

    • 벡터의 방향만 고려하고 크기는 고려하지 않음
    • 항상 0~1 사이의 값을 가짐
    • 데이터의 스케일에 민감할 수 있음
  2. 피어슨 상관계수:

    • 선형 관계를 측정
    • -1~1 사이의 값을 가짐
    • 평균을 중심으로 한 편차를 사용하므로 스케일에 덜 민감

실제 추천 시스템 구현 시에는 데이터의 특성과 필요에 따라 적절한 유사도 측정 방식을 선택해야 합니다.

profile
시리즈를 기반으로 작성하였습니다.

0개의 댓글