3. 학습 자료
• 다음의 두 문서
– Large-‐scale
Parallel
Collabora(ve
Filtering
for
the
NeFlix
Prize
• hHp://goo.gl/YrUxB
– Collabora(ve
Filtering
for
Implicit
Feedback
Datasets
• hHp://goo.gl/caoyqY
3
4. 기본은 행렬 분해
• 평가 행렬 R이 있을 때,
– nu * nm 행렬: 사용자 수 nu, 아이템 수 nm임
– rij는 사용자 i가 아이템 j에 대한 평점
• R을 분해한 U, M 행렬 구함
– U는 nf * nu 행렬, M은 nf * nm 행렬
• nf: 특징 개수
– rij ≅ ui
T*mj
• ui: U의 i열 벡터, mj: M의 j열 벡터
– 기존에 평가 데이터가 없는 rij를 r'ij로 예측
4
6. 알고리즘
• U와 M을 구하는 과정
– 1단계: M
행렬 초기화 (nf
*
nm 행렬)
• 각 아이템 평가 점수의 평균을 1행 값으로 사용
• 나머지 행은 작은 임의 숫자로 채움
– 2단계:
M을 고정시키고 U 행렬 생성
(목적함수를
최소화하는 U 행렬 구함)
– 3단계:
U를 고정시키고 M
행렬 생성 (목적함수를
최소화하는 M
행렬 구함)
– 4단계: 종료 조건 충족할 때 까지 2와 3단계를
반복
• 예,
RMSE 향상이 1
bps 미만이면 중지 (bps:
0.0001)
6
7. 사용할 목적 함수
Tmj ( )2
Σ
f (U,M) = rij − ui
Σ + nmj
+λ nui
ui
2
i
mj
2
Σ
j
#
&
((
' %%$ (i, j )∈I
오류 제곱의 합
I: 사용자i가 평가한 아이템j
nui:
사용자i의 평점 개수,
nmj: 아이템j의 평점 개수
λ:
벌점 가중치
평가 개수가 많고 특징 개수가 많을수록
가중치 벌점 증가 è 과적합 방지 목적
7
8. M이 주어질 때 U를 구하는 법
−1Vi,∀i
ui = Ai
Ai = MIi
T +λnui
MIi
E
Vi = MIi
RT i, Ii ( )
Ii:
사용자 i가 평가한 아이템 j의 집합
MIi:
Ii에 속한 j
컬럼들의 M
부분 행렬
R(i,Ii):
R의 i번째 행에서 평가 점수가 있는 Ii
에 속한 j
컬럼들의 행 벡터
8
9. 유도식
1
2
∂f
∂uki
= 0,∀i, k
Tmj − rij ( )mkj
Σ u+λni
ui
j∈Ii
uki = 0,∀i, k
Σ mmTu+λnkjj
i
ui
j∈Ii
Σ ,∀i, k
uki = mkjrij
j∈Ii
( MMT +λnE)u= MIi
Ii
ui
i Ii
RT i, Ii ( ),∀i
−1Vi,∀i
ui = Ai
누가 설명 좀...
9
10. U가 주어질 때 M을 구하는 법
−1Vj,∀j
mj = Aj
Aj =UI j
T +λnmj
UI j
E
Vj =UI j
R(I j, j)
Ij:
아이템j를 평가한 사용자 i의 집합
UIj:
Ij에 속한 i
컬럼들의 U
부분 행렬
R(Ij,j):
R의 j번째 컬럼에서 평가 점수가 있는
Ij에 속한 i
컬럼들의 열 벡터
10
11. 결정할 값
• 정확도/과적합
– λ 값: 평가 개수에 대한 벌점 가중치
– Feature
개수: 예측 정확도에 관여
• 연산 시간/정확도
– 반복:
M,U를 점진적으로 구하는 반복회수
11
12. 예측 값 후처리
• 후처리1:
– 예측 P의 평균이 기존 입력값 평균과 같지 않
으면, 모든 예측 값을 평균 차이만큼 보정
• 후처리2:
– 두 개의 예측값을 구하고 두 값을 일정 비율로
반영
– 예, 예측 P0와 P1을 구하고,
RMSE(Px)를 최소화
하는 x를 구해서,
Px를 예측으로 사용
• Px
=
(1-‐x)P0
+
xP1
12
22. Implicit
Feedback
• Implicit
Feedback
– 비디오 시청, 구매 내역, 조회 내역 등
– 직접적인 평가 점수가 아닌 간접 피드백
– 평가 값을 구할 수 없는 경우 사용
• 주요 특징
– 부정 피드백 없음
– 노이즈가 존재 (단순 조회가 긍정 피드백인지
알 수 없음)
– 숫자는 긍정에 대한 신뢰 수준을 의미
22
23. Implicit
Feedback
이용 모델
• 다음을 값으로 갖는 행렬을 사용
– pij
=
rij
>
0
?
1
:
0
(rij:
implicit
feedback)
– 즉, 피드백이 한 번이라도 있으면 1, 없으면 0
• 긍정 정도를 구하기 위한 신뢰 수준 정의
– cij
=
1
+
αrij
(α:
상수)
• 사용할 목적 함수(x:
사용자,
y:
아이템)
23
Tmj ( )2
Σ
f (U,M) = cij pij − ui
Σ
+λ ui
Σ
2 + mj
2
j
i
#
$ %%
&
' ((
i, j
24. U와 M을 구하는 과정
• 앞의 과정과 동일
• M이 주어질 때 U를 구하는 공식
• U가 주어질 때 M을 구하는 공식
24
ui = (MCiMT +λ I )−1
MCi p(i)T
mj = UCjUT ( +λ I )−1
UCj p( j)
Ci = cjj
ij
Cj = cii
ij
p(i)
=
사용자 i
행 벡터
p(j)
=
아이템 j
열 벡터
25. 예제
• 앞과 동일한 원본 평가 행렬 R
• Feature:
3
• 반복:
5회
• Lamda:
2
• Alpha:
40
25