2015년 2월 24일 화요일

신호와 소음

빅데이터 업계에서 유명한 송길영 다음소프트 부사장의 추천사가 이 책을 잘 요약하고 있다.

'예측이 실패하는 이유는 데이터의 부족이 아니며, 정보가 늘어나면 당연히 소음도 늘어난다. 예측의 성패는 소음의 효과적인 제거에 있다.'

저자는 '베이지안 확률'을 통해 효과적(?)으로 소음을 제거하는 방법을 소개하고 있다.

베이지안 확률은 영국의 '토마스 베이즈'가 개념을 제시하고, 프랑스의 '피에르 시몽 라플라스'가 완성한 '조건부 확률 이론'이라고.

개인적으로 꽤 익숙한 용어인데, 정보보안 또는 정보기술 분야 초창기부터 스팸메일 필터링 알고리즘의 하나로 사용되어온 '베이지안 확률'이 낯선 용어일 수가 없다.

그런데 좀 창피한 얘기지만 어떤 식으로 동작하는지는 잘 몰랐다(..) 일단 베이지안 확률 공식을 이용해서 '생일'이란 단어가 등장하는 메일이 스팸일 확률을 구해보자.

내가 어제 받은 메일의 스팸 확률은 50%. 그 중 5%에서 '생일'이란 단어가 등장했다. 반면 정상메일에서 '생일'이란 단어가 등장하는 경우는 10%이다.

그런데 오늘 받은 첫 번째 메일에서 '생일'이란 단어가 등장했다. 스팸메일 확률은 얼마나 될까? 책에서 소개하고 있는 베이지안 확률 공식은 이렇다.

X : 스팸메일 확률(50% 사전확률)
Y : 스팸메일에 '생일' 문자가 있을 확률(5%)
Z : 스팸메일이 아닌데 '생일' 문자가 있을 확률(10%)

XY / (XY + Z(1 - X)) : 사후확률

0.5*0.05 / (0.5*0.05 + 0.1(1 - 0.5)) = 0.333

대략 33%의 확률이 측정되었다. 그렇다면 두 번째 '생일' 단어가 포함된 메일의 스팸 확률은 얼마일까? 저자의 말을 빌면 첫 번째 상황의 사후확률은 두 번째 상황의 사전확률이 되므로, 두 번째 '생일' 단어가 포함된 메일의 스팸 확률은 대략 19%로 낮아진다.

0.33*0.05 / (0.33*0.05 + 0.1(1 - 0.33)) = 0.197


'생일' 단어를 포함한 메일이 한 통 뿐이니 스팸메일일 때 '생일' 문자가 있을 확률을 100%로 계산해야 하나?

0.33*1 / (0.33*1 + 0.1(1 - 0.33)) = 0.831

제대로 한 건지는 모르겠지만, 새로운 증거가 나타날 때마다 예측을 끊임없이 '갱신'해야 한다는 저자의 주장과는 맞아 떨어지지 않나 싶다(..) 오랫만에 숫자 붙들고 씨름했더니 머리가 아파온다. 하지만 다행히 이런 재미없는 숫자 얘기는 몇 페이지 안된다.

중요한 건 기저율(사전확률)

저자는 기저율을 무시하면 예측이 성공하기 어렵다는 얘기를 하고 있다. 대한민국 일반 남자가 회사원일 확률(기저율)이 대학교수일 확률보다 높기 때문에 지하철에서 외국인과 대화를 하고 있는 남자가 대학교수일 확률은 회사원일 확률보다 낮다는 것.

또한 저자는 현재의 정보를 가지고 과거의 판단을 추론, 즉 과거를 예측하는 행위(내 그럴 줄 알았지?)에 대해 주의를 당부하면서, 진정한 예측을 하려면 사건이 발생하기 전에 대부분 쓸모가 없(어 보이)는 수만, 수십만 건에 이르는 관련 정보에 대한 충분한 검토가 필요하다고 얘기하고 있다. 한마디로 어렵다는 얘기.

정보보안 분야에서도 이런 일은 비일비재하다. APT(Advanced Persistent Threat)로 결론 내려진 보안사고는 모두 과거를 예측(?)한 후, '지능형 지속 위협 공격'이란 근사한 이름을 붙여줬을 뿐이며, '예측'된 APT 공격을, 해당 용어가 대중화된 2010년 이후로 나는 들어본 적이 없다(..)

저자는 예측의 어려움을 얘기하면서 '예측할 수 없는 것에 대한 겸손함과 예측할 수 있는 것을 예측할 수 있는 용기, 그리고 이 둘 사이의 차이를 아는 지혜'를 구하라고 충고한다. 

우리에게 필요한 것은 예측을 잘 하는 것이 아니라, 예측할 수 있는 것과 예측할 수 없는 것의 차이를 아는 것이란 뜻이다. 말은 쉽게 했지만 정말 어려운 목표인 듯 하다. 하지만 불가능해 보이진 않는다. 

측정이 핵심

저자는 측정하려 하지 않고, 예측하려 할수록 예측은 더 어려워진다고 했다. 이 얘기는 측정할 수 없다면 예측도 할 수 없다는 뜻이 아닐까?
측정할 수 없으면 관리할 수 없다 - 피터 드러커

당신이 말하는 것을 측정하지 못하고, 숫자로 나타내지 못한다면 당신은 그것을 모르는 것 - 윌리엄 톰슨 캘빈
측정할 수 있으면 관리할 수 있다. 하지만 목표와 상관없는 것을 측정하면 그 목표를 이룰 수 없을 것이다 - 운과 실력의 성공 방정식(315페이지)

측정의 중요함을 알 수 있다. 데이터를 수집하고, 소음을 걸러낸 후, 걸러진 데이터에 대한 측정이 이루어져야 비로소 예측을 시작할 수 있는 것.

그런데 그리 고생스럽게 예측해서 뭐가 나아질까? 

2008년 서브프라임 모기지 사태에 대한 예측이 없지 않았다. 그러나 무시됐다. 주택 가격 거품이 꺼지지 않기를 바라는 사람이 더 많았기 때문이다.

'지구온난화'가 얄팍한 선동인지, 과학적 진리인지 역시 중요하지 않다. 진실이냐 아니냐가 중요한 게 아니라, 누가 더 이득을 많이 보느냐가 중요하다는 사실이 서글프다. 마음에 드는 문구를 남긴다.
사실 관계가 바뀔 때, 나는 내 마음을 바꾼다 - 존 메이너드 케인즈

사족
위키백과의 베이지안 확률 설명과 책을 비교해 봤다. H는 가설, D는 데이터

P(H|D) = P(D|H)P(H) / P(D)
           = P(D|H)P(H) / P(D|H)P(H) +  P(D|!H)P(H)

X : 스팸메일일 확률 = P(H)
Y : 스팸메일일 때 '생일' 문자가 있을 확률 = P(D|H)
Z : 스팸메일이 아닐 때 '생일' 문자가 있을 확률 = P(D|!H)

XY / (XY + Z(1 - X)) = P(D|H)P(H) / P(D|H)P(H) + P(D|!H)P(H)

P(스팸|생일) = P(생일|스팸)*P(스팸) / P(생일)
                    = P(생일|스팸)*P(스팸) / P(생일|스팸)*P(스팸) + P(생일|!스팸)*P(스팸)

0.05*0.5 / 0.05*0.5 + 0.1*0.5 = 0.333

(1 - X) 는 (1 - P(H)) 이니, Z(1 - X)는 P(D|!H)(1-P(H)) 인데 왜 P(D|!H)P(H) 인지 모르겠다. 그런데 결과값은 같다. 머리 나쁘면 평생 고생이라더니, 누가 좀 가르쳐 줬으면 좋겠다(..)

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스