본문 바로가기

IT 로그

잠재요인 협업 필터링의 원리를 정리해보자

728x90
반응형

잠재요인 협업 필터링 : 사용자 - 아이템 평점 행렬에 잠재된 어떤 요인이 있다고 가정하고, 행렬 분해를 통해 그 요인을 찾아내는 방식을 말함 

잠재요인이 뭔지 구체적 정의는 어렵다 

 

행렬 분해 ?

출처 : https://hipster4020.tistory.com/115

원본행렬을 분해한 후 내적 곱 결과를 구한다. 

사용자 - 잠재 요인 행렬 / 아이템 -잠재요인 행렬의 전치 행렬 (잠재요인 - 아이템 행렬) 로 분해된 데이터셋을 다시 

내적 곱으로 결합하면서 사용자가 예측하지 않은 아이템에 대한 평점을 도출하는 방식을 이용한다. 

행렬 분해로 추출되는 잠재요인이 어떤 것인지는 알 수 없지만, 예를 들어 영화 평점 기반의 사용자 - 아이템 행렬 데이터라면 영화가 가지는 장르별 특정 선호도로 가정할 수 있다.

즉, 사용자 - 잠재 요인 행렬은 사용자의 영화에 대한 선호도로, 아이템- 잠재요인은 그 영화의 장르별 특성값으로 정의가 가능하다. 

 

위 그림을 이렇게 생각해보기 

사용자 - 잠재요인 행렬에서 FACTOR 1 은 액션 영화 선호도, FACTOR 2 는 로맨스 영화 선호도 이다. 

P(u,k)에서 u는 사용자 아이디 k는 잠재요인 칼럼인 장르별 선호도로 정의한다.

P(1,1) 는  0.94 P(1,2) 0.96 이다. 

 

아이템 - 잠재요인 행렬은 영화별로 여러 장르 요소로 구성된 영화의 장르별 요소 행렬 Q로 가정해보자 

Factor 1 은 영화의 Action 요소값, Factor 2 는 영화의 Romance 요소 값이다.

Q(i,k)에서 i는 아이템 아이디, k는 잠재 요인 칼럼인 장르별 요소 

Q 행렬을 위 P값과 내적 계산을 통해 예측 평점을 계산하기 위해 Q의 행겨 열 위치를 서로 교환한 Q.T로 변환 

즉, Q(i,k) 는 Q.T(k,i) 이다. 

 

출처 : 파이썬 머신러닝 완벽가이드 572 p 

평점이란 사용자의 특정 영화 장르에 대한 선호도와 개별 영화의 그 장르적 특성값을 반영된다고 생각해볼 수 있다. 

ex -> 사용자가 액션 영화를 매우 좋아하는데 특정 영화가 액션 영화의 특성이 매우 크다면 사용자가 해당 영화에 높은 평점을 줄 것이다. 따라서 평점은 사용자의 장르별 선호도 벡터와 영화의 장르별 특성 벡터를 서로 곱해서 만들 수 있다. 즉 User1이 item 1 에 준 4점은 P[1:] 과 Q.T[:,1]의 내적값이다. 

 

자 그럼 User 1이 item 2에 몇점을 줄지 예측 평점을 수행해보자 

R(1,2)를 구해보자 

어떻게 구할 수 있을까 

위와 같은 논리로 P[1:] 과 Q.T[:,2] 의 내적 결과값인 2.56 이 될 수 있다. 

 


 

위 방법처럼 잠재요인 협업 필터링은 숨겨져 있는 '잠재 요인'을 기반으로 분해된 매트릭스를 이용해 사용자가 아직 평가하지 않은 아이템에 대한 예측평가를 수행하는 것 

사용자 - 아이템 평점 행렬과 같이 다차원 Matrix를 저차원 Matrix로 분해하는 기법이 바로 행렬분해 이다.

 

 

출처 : 파이썬 머신러닝 완벽가이드 (저자 : 권철민) 

반응형