어벤져스 인셉션 타이타닉 인터스텔라
철수 5 4 null 5
영희 4 5 1 4
민수 5 4 2 5
지은 2 1 5 2
협업 필터링의 수식과 계산 과정
먼저 유저 간 유사도를 계산하기 위해 코사인 유사도를 사용합니다.
코사인 유사도 공식:
similarity = cos(θ) = A·B / (||A|| ||B||)
= Σ(Ai × Bi) / (√Σ(Ai²) × √Σ(Bi²))
철수와 다른 사용자들의 유사도를 계산해보겠습니다:
a) 철수-영희 유사도:
b) 철수-민수 유사도:
c) 철수-지은 유사도:
이제 철수의 타이타닉 평점을 예측해보겠습니다.
예측 공식:
예측 평점 = Σ(유사도 × 평점) / Σ(유사도)
대입:
계산(유사도 가중 평균):
예측 평점 = (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
아이템 기반 협업 필터링에서는 영화들 간의 유사도를 계산한 후, 이를 바탕으로 평점을 예측합니다. 주어진 데이터로 타이타닉 영화의 평점을 예측해보겠습니다.
피어슨 상관계수 공식:
r = Σ((x - μx)(y - μy)) / (√Σ(x - μx)² × √Σ(y - μy)²)
a) 타이타닉-어벤져스 유사도:
분자 계산:
Σ((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) 타이타닉-인셉션 유사도:
분자 계산:
Σ((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) 타이타닉-인터스텔라 유사도:
이는 어벤져스와 동일한 패턴이므로 유사도도 -0.839가 됩니다.
예측 공식:
예측 평점 = Σ(유사도 × 평점) / Σ(|유사도|)
철수의 다른 영화 평점:
계산:
예측 평점 =
(-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²))
a) 타이타닉-어벤져스 유사도:
코사인 유사도 = (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² + 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² + 2² + 5²) × √(4² + 5² + 2²))
= 24 / 36.74
≈ 0.653
예측 공식:
예측 평점 = Σ(유사도 × 평점) / Σ(유사도)
철수의 평점:
계산:
예측 평점 = (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
피어슨 상관계수를 사용했을 때와 다른 결과가 나왔네요. 이는 각 유사도 측정 방식의 특성 때문입니다:
코사인 유사도:
피어슨 상관계수:
실제 추천 시스템 구현 시에는 데이터의 특성과 필요에 따라 적절한 유사도 측정 방식을 선택해야 합니다.