예제

어느 벤쳐회사가 온라인에서 영화를 추천해주는 시스템을 개발하는 경우를 생각해 봅시다. 그 시스템 안에는 K 개의 영화가 있고 고객은 한편당 얼마씩 지불하며 영화를 스트리밍으로 볼수 있는데 영화 감상이 끝나면 영화에 대한 간단한 추천 여부를 클릭해야 한다고 합시다. (만약 중간에 영화 상영을 중단하면 비추천인 것으로 간주한다고 합시다.)

이 회사에서는 고객들의 영화 감상 취향을 파악하여 로그인한 고객들에게 기존 데이터를 바탕으로 그들의 영화 취향을 파악한후 맞춤형으로 영화를 추천하는 것을 목적으로 할때 어떤 식으로 추천 시스템을 구축해야 할까요?

풀이

이러한 문제는 전형적인 결측 자료 (missing data) 예측 문제입니다. $Y_k$를 영화 $k$를 추천하는지를 나타내는 여부를 나타내는 지시변수 (추천이면 1의 값을 갖고, 비추이면 0의 값을 갖는 변수)라고 정의하면 각각의 고객에게서 우리는 $Y_k$을 (1 또는 0로) 관측하거나 또는 $Y_k$를 관측하지 못합니다. 각각의 고객에게서 $Y_1$, $Y_2$, $….,$ $Y_K$ 에 대한 정보를 일부 수집하게 되는데 이중 많은 값들은 결측(missing)이 됩니다.

예를들어 간단히 $K=5$이라고 합시다. 즉, 이 회사에는 5개의 영화만 상영합니다. 그런데 홍길동이라는 사람은 이중에서 3개의 영화를 보았고 (영화 1,2,3 을 보았다고 합시다) 그 사람의 추천값이 $Y_1=1$, $Y_2=0$, $Y_3=1$ 라고 합시다. 그렇다면 그 사람에게 영화 4를 추천하는게 좋을까요 아니면 영화 5를 추천하는게 좋을까요?

이에 대답하기 위해서는 현재의 고객 데이터로부터 전체 영화들의 선호도 관계를 추정한후 $P(Y_4=1 \mid Y_1=1, Y_2=0, Y_3 =1 )$와 $P(Y_5=1 \mid Y_1=1, Y_2=0, Y_3 =1 )$의 조건부 확률을 계산하여 이 두개의 조건부 확률 중에서 더 큰 값을 갖는 항목에 해당하는 영화를 추천해 주면 되는 것입니다. 이러한 조건부 확률을 추정하기 위해서는 EM 알고리즘이라는 방법론을 사용하는 것이 정석입니다.

이러한 EM 알고리즘을 사용하기 위해 먼저 전체 변수의 결합 확률 $P(Y_1=a, Y_2=b, Y_3=c, Y_4=d, Y_5=e):=\pi_{abcde}$을 정의합니다. 이 결합확률로부터 조건부 확률을 구할수 있습니다. 예를 들어 $Y_4$와 $Y_5$가 결측인 경우에 대해 \begin{equation} P( Y_4=d , Y_5=e \mid Y_1=a, Y_2=b, Y_3=c) = \frac{ \pi_{abcde}}{\sum_{d=0}^1 \sum_{e=0}^1 \pi_{abcde} } \ \ \ \ \ \ (1) \end{equation} 를 구할수 있을 것입니다. 만약 이 조건부 확률값이

으로 얻어진다면 이 값을 바탕으로

고객 영화1 영화2 영화3 영화4 영화5
홍길동 추천 비추천 추천 ? ?
           

의 고객 데이터를

고객 영화1 영화2 영화3 영화4 영화5 가중치
홍길동 추천 비추천 추천 추천 추천 0.6
홍길동 추천 비추천 추천 추천 비추천 0.2
홍길동 추천 비추천 추천 비추천 추천 0.1
홍길동 추천 비추천 추천 비추천 비추천 0.1
             

으로 가상적으로 만들어낼수 있을 것입니다. 여기서 가중치란 결국 조건부 확률을 지칭합니다. 만약 모든 항목에 대해 관측이 된 케이스는 가중치가 1이 되는 것입니다. 만약 김재동 이라는 고객이 영화 2와 영화 4에 대해서만 평가를 했다고 하면 이에 대한 조건부 확률은

으로 얻어지게 됩니다. 이 경우 김재동의 가상데이터는 $(Y_1, Y_3, Y_5)$의 모든 가능한 값에 대한 8개의 조합을 바탕으로 구현하는데 이에 대한 가중치는 (2)에서 얻어진 조건부 확률을 사용합니다. 이런 식으로하면 모든 고객에 대해 가상 데이터를 만들수 있는데 이는 각 고객에게 모든 가능한 경우의 조합으로 자료를 확장하고 그에 대한 가중치를 구현해 줌으로써 전체 자료에 결측이 없는 것처럼 만들어 주는 것이 됩니다. 이를 E-step 이라고 합니다.

이를 이용하여 만들어진 전체 가상 자료를 이용하여 $\pi_{abcde}$의 추정치를 간단하게 업데이트 할수 있습니다. 이 추정에는 가중치를 반드시 사용해야 합니다. 즉, $\pi_{abcde}$의 추정치는 ($Y_1$=a, $Y_2$=b, $Y_3$=c, $Y_4$=d, $Y_5$=e)에 해당되는 케이스의 가중치를 모두 더해서 전체 가중치의 합으로 나누어주면 됩니다. 이렇게 모수 추정값을 다시 계산해 주는 것은 M-step 이라고 하는데 이렇게 업데이트된 모수 추정값은 식 (1)과 (2) 등에서 조건부 확률을 업데이트하는데 사용될수 있습니다. 이렇게 E-step 과 M-step 을 반복적으로 업데이트 하다보면 결국 수렴하는데 그 최종값으로 확률을 계산하면 그것을 EM 알고리즘이라고 합니다.

토론

  1. 위의 사례는 EM 알고리즘의 가장 간단한 형태입니다. 다변량 범주형 자료에서 무응답이 있는 경우에는 위의 EM 알고리즘이 매우 간편하게 사용될수 있습니다. 그 외에도 EM 알고리즘은 엄청나게 많은 통계 모형 추정 및 예측 문제에 적용될수 있습니다. 앞으로 이와 관련된 내용을 좀더 다루려고 합니다.

  2. 위의 예제에서는 원자료가 다항분포를 따르는 것으로 가정한 것입니다. 만약 0/1 의 binary 반응변수가 아닌 5점 척도의 ordinal data 라고 한다면 잠재변수에 대한 모형은 다항분포를 사용하는 것보다는 ordinal data 에 적합한 모형을 사용하는 것이 좋습니다. 예를 들면 cumulative logit model 같은 것이 그런 종류의 데이터에 더 적합한 모형입니다.

  3. 위의 사례에서 가상 데이터를 만드는 방법론은 일종의 fractional imputation 이라는 방법으로 이해할 수도 있습니다. 제가 2011년 Biometrika 라는 저널에 발표한 논문 “Parametric fractional imputation for missing data analysis”에도 소개된 방법론입니다. SAS 14.1 의 Proc Surveyimpute 라는 프로시져의 FEFI 옵션이 바로 이 방법론을 구현하는 것입니다. 제가 쓴 책에도 자세히 나와 있습니다. (링크 참조: https://www.crcpress.com/Statistical-Methods-for-Handling-Incomplete-Data/Kim-Shao/p/book/9781439849637)

. .

. .