SVD 분해 과정
먼저 중심화된 행렬 R'을 다시 보겠습니다:
어벤져스 타이타닉 매트릭스 인셉션
Alice 0.75 1.75 -2.25 -0.25
Bob 2.0 -1.0 1.0 -2.0
Carol -2.0 1.0 -1.0 2.0
이 행렬을 R' = U × Σ × V^T로 분해하는 과정을 설명하겠습니다.
a) R'R'^T를 계산하여 U 구하기:
R'R'^T =
[10.81 -3.25 -7.56]
[-3.25 10.0 -6.75]
[-7.56 -6.75 14.31]
이 행렬의 고유벡터가 U의 열이 됩니다.
b) R'^TR'를 계산하여 V 구하기:
R'^TR' =
[8.56 -2.13 3.44 -9.88]
[-2.13 7.06 -5.19 0.25]
[3.44 -5.19 9.25 -7.50]
[-9.88 0.25 -7.50 17.13]
이 행렬의 고유벡터가 V의 열이 됩니다.
c) 특이값(Σ) 구하기:
결과적으로 얻어진 분해:
U (사용자-잠재요인):
요인1 요인2 요인3
Alice -0.4 0.7 0.6 # Alice는 요인2와 요인3에 강한 양의 관계
Bob -0.6 -0.7 -0.4 # Bob은 모든 요인에 음의 관계
Carol 0.7 0.2 -0.7 # Carol은 요인1에 강한 양의 관계
Σ (특이값):
4.2 0 0 # 가장 중요한 요인
0 2.1 0 # 두 번째로 중요한 요인
0 0 1.0 # 가장 덜 중요한 요인
V^T (영화-잠재요인):
어벤져스 타이타닉 매트릭스 인셉션
요인1 -0.5 0.2 -0.3 0.6 # 첫 번째 잠재 요인에서 인셉션이 가장 큰 양의 값
요인2 0.3 0.7 -0.4 -0.2 # 두 번째 잠재 요인에서 타이타닉이 가장 큰 양의 값
요인3 0.4 -0.3 0.5 0.6 # 세 번째 잠재 요인에서 인셉션과 매트릭스가 큰 양의 값
U의 각 열은 사용자들의 잠재적 취향을 나타냅니다
Σ의 값들은 각 잠재 요인의 중요도를 나타냅니다
V^T의 각 열은 영화들의 잠재적 특성을 나타냅니다
이렇게 분해된 행렬들을 통해:
1) 사용자들의 취향 패턴
2) 영화들의 특성 패턴
3) 각 패턴의 중요도
를 파악할 수 있습니다.
이는 마치 "취향 사전"을 만드는 것과 같습니다. 사용자와 영화 모두 이 "사전"의 용어(잠재 요인)로 표현되며, 각 용어의 중요도(특이값)가 정해집니다.
참고
먼저 R'은 우리가 가진 중심화된 평점 행렬:
어벤져스 타이타닉 매트릭스 인셉션
Alice 0.75 1.75 -2.25 -0.25 # Alice의 평점들
Bob 2.0 -1.0 1.0 -2.0 # Bob의 평점들
Carol -2.0 1.0 -1.0 2.0 # Carol의 평점들
그리고 R'^T는 이 행렬을 "눕힌" 것입니다. 행과 열을 바꾸는 거예요:
Alice Bob Carol
어벤져스 0.75 2.0 -2.0
타이타닉 1.75 -1.0 1.0
매트릭스 -2.25 1.0 -1.0
인셉션 -0.25 -2.0 2.0
R'R'^T는 이 두 행렬을 곱하는 거예요. 행렬의 곱셈은 다음과 같이 합니다:
1. 첫 번째 행렬의 행과 두 번째 행렬의 열을 곱해서 더합니다.
2. 이걸 모든 행과 열의 조합에 대해 반복합니다.
예를 들어, Alice와 Alice의 값을 구해볼까요?
Alice의 평점: [0.75, 1.75, -2.25, -0.25]
×
Alice의 평점(전치): [0.75, 1.75, -2.25, -0.25]
= (0.75 × 0.75) + (1.75 × 1.75) + (-2.25 × -2.25) + (-0.25 × -0.25)
= 0.5625 + 3.0625 + 5.0625 + 0.0625
= 10.81
이런 식으로 모든 조합을 계산하면:
Alice Bob Carol
Alice 10.81 -3.25 -7.56
Bob -3.25 10.0 -6.75
Carol -7.56 -6.75 14.31
이 결과가 의미하는 건:
예를 들어:
이렇게 R'R'^T는 사용자들 사이의 '취향 관계'를 보여주는 행렬이 됨
R'^T는 아까 봤던 "눕힌" 행렬:
Alice Bob Carol
어벤져스 0.75 2.0 -2.0
타이타닉 1.75 -1.0 1.0
매트릭스 -2.25 1.0 -1.0
인셉션 -0.25 -2.0 2.0
그리고 R'은 원래 행렬:
어벤져스 타이타닉 매트릭스 인셉션
Alice 0.75 1.75 -2.25 -0.25
Bob 2.0 -1.0 1.0 -2.0
Carol -2.0 1.0 -1.0 2.0
이번엔 영화들 사이의 관계를 보는 것
예를 들어, 어벤져스와 어벤져스의 값을 구해볼까요?
어벤져스 평점: [0.75, 2.0, -2.0]
×
어벤져스 평점(전치): [0.75, 2.0, -2.0]
= (0.75 × 0.75) + (2.0 × 2.0) + (-2.0 × -2.0)
= 0.5625 + 4.0 + 4.0
= 8.56
어벤져스와 타이타닉의 관계는:
어벤져스 평점: [0.75, 2.0, -2.0]
×
타이타닉 평점: [1.75, -1.0, 1.0]
= (0.75 × 1.75) + (2.0 × -1.0) + (-2.0 × 1.0)
= 1.31 - 2.0 - 2.0
= -2.13
이런 식으로 모든 영화 쌍을 계산하면:
어벤져스 타이타닉 매트릭스 인셉션
어벤져스 8.56 -2.13 3.44 -9.88
타이타닉 -2.13 7.06 -5.19 0.25
매트릭스 3.44 -5.19 9.25 -7.50
인셉션 -9.88 0.25 -7.50 17.13
이 결과가 의미하는 건:
재미있는 발견:
1. 인셉션이 가장 큰 강도(17.13)를 보임 → 사람들이 가장 극단적인 평가를 내린 영화
2. 어벤져스와 매트릭스는 양의 관계(3.44) → 비슷한 취향의 사람들이 좋아함
3. 어벤져스와 인셉션은 강한 음의 관계(-9.88) → 한 영화를 좋아하는 사람은 다른 영화를 싫어하는 경향
이렇게 R'^TR'는 영화들 사이의 '평가 패턴 관계'를 보여주는 행렬