ALS WS에 대한 이해 자료

Preview:

Citation preview

Alterna(ng  Least  Squares    Weight  λ  Regulariza(on  이해 시도  

최범균,  madvirus@madvirus.net  

주의: 나는 전문가가 아니며,  오류가 존재할 수 있습니다.  

2  

학습 자료  

•  다음의 두 문서  – 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  

기본은 행렬 분해  

•  평가 행렬 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  

그림으로  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

5   4   2   4   ?  

1   2   5   ?   4  

-­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

R U M

4.9   3.9   1.9   3.8   2.1  

0.8   1.8   4.7   1.9   4.1  

-­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

UTM

R' R'의 오류가 가장 작은 (U,M)을 구하는 것이 목적

-­‐   -­‐  

-­‐   -­‐  

-­‐   -­‐  

-­‐   -­‐  

-­‐   -­‐  

-­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐  

UT

M

5  

알고리즘  

•  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  

사용할 목적 함수  

f (U,M ) = rij −uiTmj( )

2+λ nui ui

2

i∑ + nmj

mj2

j∑

#

$%%

&

'((

(i, j )∈I∑

I: 사용자i가 평가한 아이템j  nui:  사용자i의 평점 개수,  nmj: 아이템j의 평점 개수  λ:  벌점 가중치  

오류 제곱의 합   평가 개수가 많고 특징 개수가 많을수록  가중치 벌점 증가 è 과적합 방지 목적  

7  

M이 주어질 때 U를 구하는 법  

ui = Ai−1Vi,∀i

Ai =MIiMIi

T +λnuiE

Vi =MIiRT i, Ii( )

Ii:  사용자 i가 평가한 아이템 j의 집합  MIi:  Ii에 속한 j  컬럼들의 M  부분 행렬  R(i,Ii):  R의 i번째 행에서 평가 점수가 있는 Ii에 속한 j  컬럼들의 행 벡터  

8  

유도식  12∂f∂uki

= 0,∀i,k

uiTmj − rij( )mkj

j∈Ii

∑ +λnuiuki = 0,∀i,k

mkjmjTui

j∈Ii

∑ +λnuiuki = mkjrijj∈Ii

∑ ,∀i,k

MIiMIi

T +λnuiE( )ui =MIiRT i, Ii( ),∀i

ui = Ai−1Vi,∀i

누가 설명 좀...  

9  

U가 주어질 때 M을 구하는 법  

mj = Aj−1Vj,∀j

Aj =UIjUI j

T +λnmjE

Vj =UIjR I j, j( )

Ij:  아이템j를 평가한 사용자 i의 집합  UIj:  Ij에 속한 i  컬럼들의 U  부분 행렬  R(Ij,j):  R의 j번째 컬럼에서 평가 점수가 있는 Ij에 속한 i  컬럼들의 열 벡터  

10  

결정할 값  

•  정확도/과적합  – λ 값: 평가 개수에 대한 벌점 가중치  – Feature  개수: 예측 정확도에 관여  

•  연산 시간/정확도  – 반복:  M,U를 점진적으로 구하는 반복회수  

11  

예측 값 후처리  

•  후처리1:  – 예측 P의 평균이 기존 입력값 평균과 같지 않

으면, 모든 예측 값을 평균 차이만큼 보정  

•  후처리2:  – 두 개의 예측값을 구하고 두 값을 일정 비율로

반영  – 예, 예측 P0와 P1을 구하고,  RMSE(Px)를 최소화

하는 x를 구해서,  Px를 예측으로 사용  •  Px  =  (1-­‐x)P0  +  xP1  

12  

M,U  도출 과정 과정 예  

•  R:  10  *  11 행렬 (10 사용자,  11 아이템)  •  Feature 개수:  3  •  λ:  0.01  

13  

예시, 데이터  1   2   3   4   5   6   7   8   9   10   11  

1   2   -   -­‐   4   4   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐  

2   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5  

3   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   1   -­‐   4   -­‐  

4   3   3   4   -­‐   3   -­‐   -­‐   2   2   -­‐   -­‐  

5   5   5   5   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐  

6   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5   -­‐   -­‐   5   -­‐  

7   4   -­‐   4   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5  

8   -­‐   -­‐   -­‐   -­‐   -­‐   4   -­‐   -­‐   -­‐   -­‐   4  

9   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5   -­‐   -­‐   5   -­‐  

10   -­‐   -­‐   -­‐   3   -­‐   -­‐   -­‐   -­‐   4   5   -­‐  

평가 점수가 없는 경우 행렬에서 0을 사용  14  

M 행렬 초기화  

3.5   4.0   4.33333   3.5   3.5   4.0   5.0   1.5   3.0   4.75   4.66666  

0.05908   0.36506   0.85858   0.28166   0.43807   0.48437   0.14459   0.05967   0.68708   0.05128   0.76919  

0.02826   0.91683   0.02493   0.21998   0.91913   0.51776   0.19809   0.72384   0.10324   0.49281   0.29010  

1행은 평가한 값들의 평균  

1  

2  

0  

0  

3  

5  

0  

4  

0  

0  

0  

(2  +  3  +  5  +  4)  /  4  =  3.5  

M은 3(Feature 개수)  *  11(Item  개수) 행렬  

15  

1라운드,  초기 M에서 U1  도출  

0.66341   1.03871   0.88439   0.84802   1.2167   0.99720   1.14286   0.89562   0.98662   0.86231  

3.29432   0.17120   -­‐0.02988   -­‐0.18622   -­‐0.12343   0.02883   -­‐0.97586   -­‐0.59622   -­‐0.12357   1.43946  

0.39629   0.06456   -­‐0.42366   0.13694   -­‐0.17829   0.03950   1.03662   1.19990   0.57735   1.08375  

u1   u2  

16  

U1의 u1  열벡터 도출 공식  

u1 = A1−1V1

A1 =MI1MI1

T +λnu1E

V1 =MI1RT 1, I1( )

I1  =  {1,4,5},  λ=0.01,  nu1=3  

Mi1  =    3.5   3.5   3.5  

0.05908   0.28166   0.43807  

0.02826   0.21998   0.91913  

R(1,  I1)  =  [2,  4,  4]    

A1=  [  [36.780,  2.726,  4.086]                      [2.726,  0.305,  0.466]                      [4.086,  0.466,  0.924]]  

 V1=[[35.000]                    [2.997]                    [4.613]]  

A1-­‐1=[[0.081,  -­‐0.774,  0.033]  

                   [-­‐0.774,  21.800,  -­‐7.580]                      [0.033,  -­‐7.580,    4.763]]  

u1=A1-­‐1V1  =[[0.663]                                                [3.294]                                                [0.397]]  

17  

5회 반복으로 구해진 M,U  

3.69398   3.63956   4.24002   0.58407   2.90055   1.35310   4.55255   1.65115   1.69608   4.26497   4.24155  

-­‐0.05280   -­‐0.55535   0.84728   1.17631   0.36669   -­‐0.91911   0.23995   0.11801   0.90227   0.54173   -­‐0.36714  

-­‐0.56573   -­‐0.47156   0.17572   0.82723   1.05549   1.84661   0.50122   1.46317   1.15103   0.55385   0.01934  

0.71980 1.14974 0.96309 0.87816 1.25417 1.06552 1.10438 0.88598 1.00243 0.85348

2.33512 -­‐0.05156 0.23567 0.12294 -­‐0.34731 0.04600 -­‐0.82199 -­‐0.60182 0.58327 1.26160

1.00074 0.00876 -­‐0.40704 0.32348 -­‐0.42788 0.10816 0.28093 1.20912 0.58822 1.21846

M  

U  

18  

결과 예측 행렬  1.97 0.85 5.21 4.00 4.00 0.68 4.34 2.93 4.48 4.89 2.22 4.25 4.21 4.83 0.62 3.33 1.62 5.23 1.91 1.91 4.88 4.90 3.78 3.57 4.21 0.50 2.45 0.34 4.24 1.02 1.38 4.01 3.99 3.05 2.98 3.88 0.93 2.93 1.67 4.19 1.94 1.97 3.99 3.69 4.89 4.96 4.95 -0.03 3.06 1.23 5.41 1.40 1.32 4.92 5.44 3.87 3.80 4.58 0.77 3.22 1.60 4.92 1.92 1.97 4.63 4.51 3.96 4.34 4.04 -0.09 3.20 2.77 4.97 2.14 1.46 4.42 4.99 2.62 2.99 3.46 0.81 3.63 3.99 4.50 3.16 2.35 4.12 4.00 3.34 3.05 4.85 1.76 3.74 1.91 5.00 2.59 2.90 4.92 4.05 2.40 1.83 4.90 2.99 4.22 2.25 4.80 3.34 3.99 5.00 3.18

2   -   -­‐   4   4   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   1   -­‐   4   -­‐  

3   3   4   -­‐   3   -­‐   -­‐   2   2   -­‐   -­‐  

5   5   5   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5   -­‐   -­‐   5   -­‐  

4   -­‐   4   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5  

-­‐   -­‐   -­‐   -­‐   -­‐   4   -­‐   -­‐   -­‐   -­‐   4  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5   -­‐   -­‐   5   -­‐  

-­‐   -­‐   -­‐   3   -­‐   -­‐   -­‐   -­‐   4   5   -­‐  

예측 행렬(UTM)  

원본 평가 행렬  

19  

ALS의 장점  

•  대량 데이터 처리 •  사용자/아이템 개수 대비 데이터가 드물게

존재하는 경우에도 적용 가능  •  노이즈 데이터에 강함  

20  

ALS  WR  with  Implicit  Feedback  

Implicit  Feedback  

•  Implicit  Feedback  – 비디오 시청, 구매 내역, 조회 내역 등  – 직접적인 평가 점수가 아닌 간접 피드백  – 평가 값을 구할 수 없는 경우 사용  

•  주요 특징  – 부정 피드백 없음  – 노이즈가 존재 (단순 조회가 긍정 피드백인지

알 수 없음)  – 숫자는 긍정에 대한 신뢰 수준을 의미  

22  

Implicit  Feedback  이용 모델  

•  다음을 값으로 갖는 행렬을 사용  – pij  =  rij  >  0  ?  1  :  0  (rij:  implicit  feedback)  – 즉, 피드백이 한 번이라도 있으면 1, 없으면 0  

•  긍정 정도를 구하기 위한 신뢰 수준 정의  – cij  =  1  +  αrij  (α:  상수)  

•  사용할 목적 함수(x:  사용자,  y:  아이템)  

23  

f (U,M ) = cij pij −uiTmj( )

2+λ ui

2+ mj

2

j∑

i∑#

$%%

&

'((

i, j∑

U와 M을 구하는 과정  

•  앞의 과정과 동일  •  M이 주어질 때 U를 구하는 공식  

•  U가 주어질 때 M을 구하는 공식  

24  

ui = MCiMT +λI( )−1MCip(i)T

mj = UC jUT +λI( )−1UC j p( j)

Cjji = cij

Ciij = cij

p(i)  =  사용자 i  행 벡터  

p(j)  =  아이템 j  열 벡터  

예제  

•  앞과 동일한 원본 평가 행렬 R  •  Feature:  3  •  반복:  5회  •  Lamda:  2  •  Alpha:  40  

25  

결과 M,  U  

26  

2.536 1.604 2.138 1.316 2.658 0.522 1.878 1.028 1.215 2.54 1.151 1.2 1.709 1.565 0.699 0.228 -­‐1.063 -­‐0.883 0.352 1.351 1.187 -­‐0.354

0.722 -­‐0.06 0.529 1.571 0.425 0.317 -­‐1.472 -­‐1.244 -­‐0.459 -­‐0.571 2.069

0.297 0.11 0.249 0.396 0.224 0.198 0.15 0.272 0.313 0.117 -­‐0.095 -­‐0.215 0.091 0.199 0.329 -­‐0.285 0.251 -­‐0.724 -­‐0.01 0.691 0.397 0.376 -­‐0.497 -­‐0.389 0 -­‐0.226 0.423 0.2 -­‐0.243 0.213

M  

U  

결과 예측 행렬  

27  

0.925   0.289   0.696   0.948   0.935   0.382   0.056   -­‐0.223   0.049   0.414   1.197  

0.294   -­‐0.213   0.099   0.586   0.404   0.405   -­‐0.157   -­‐0.43   -­‐0.329   -­‐0.189   0.981  

0.383   0.586   0.413   -­‐0.389   0.472   -­‐0.125   1.119   0.907   0.654   1.025   -­‐0.774  

0.964   0.999   0.953   0.051   0.934   -­‐0.127   1.141   0.961   0.929   1.465   -­‐0.418  

0.962   0.922   0.993   0.524   0.669   -­‐0.233   0.13   0.347   0.717   0.959   0.14  

-­‐0.002   -­‐0.155   -­‐0.141   -­‐0.293   0.366   0.334   0.956   0.385   -­‐0.04   0.295   -­‐0.138  

0.988   0.645   0.938   1.039   0.637   -­‐0.053   -­‐0.562   -­‐0.284   0.327   0.438   0.961  

-­‐0.034   -­‐0.813   -­‐0.445   0.167   0.643   0.975   0.855   -­‐0.224   -­‐0.74   -­‐0.282   0.984  

0.607   0.5   0.526   0.023   0.727   0.097   0.955   0.621   0.479   0.923   -­‐0.14  

1.278   1.355   1.443   0.971   0.558   -­‐0.605   -­‐0.704   0.098   0.977   0.995   0.33  

2   -   -­‐   4   4   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   1   -­‐   4   -­‐  

3   3   4   -­‐   3   -­‐   -­‐   2   2   -­‐   -­‐  

5   5   5   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5   -­‐   -­‐   5   -­‐  

4   -­‐   4   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5  

-­‐   -­‐   -­‐   -­‐   -­‐   4   -­‐   -­‐   -­‐   -­‐   4  

-­‐   -­‐   -­‐   -­‐   -­‐   -­‐   5   -­‐   -­‐   5   -­‐  

-­‐   -­‐   -­‐   3   -­‐   -­‐   -­‐   -­‐   4   5   -­‐  

예측 행렬(UTM)    

원본 평가 행렬  

참고자료  

•  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  

•  Simple  Matrix  Factoriza(on  for  Recommenda(on  in  Mahout  – hHp://goo.gl/lQHvpf  

28  

Recommended