베이시안 통계 둘째 걸음!

딥벨리데이션
7 min readApr 22, 2017

--

지난 이야기 베이시안 통계 첫걸음이 이틀 만에 엄청난 뷰 카운트를 찍었습니다! 자, 여러분의 성은에 힘입어 베이시안 통계 2탄을 준비했습니다~ 백문이 불여일견! 이번 스토리에서는 실제로 확률이 어떻게 업데이트 되는지를 보겠습니다. 이 글 맨 아래 선물 (R 코드) 이 있습니다~!

동기부여를 위해 오늘의 마지막 결과물을 미리 살짝 공개할게요!

10번의 업데이트와 확률분포 변화 과정.gif!
꿈에서도 기억해야할 Bayes’ rule!

위 이미지는 통계학을 접하신 분이라면 한 번쯤은 봤었던 베이즈룰이에요! 지난 화에서 언급한, 사전분포 또는 사전 믿음(prior), 증거, 사후분포로 구성되었어요. 위에 오른쪽 이미지에서 P(H) = 사전분포, P(E|H) = 증거 그리고 P(H|E) = 사후분포입니다~

그러면, 지난 화에서 들었던 예시를 그대로 활용해서 실제 어떻게 확률이 업데이트되는지 볼까요?

예를 들어서, 마케팅 캠페인을 이번에 처음 해보는 거여서, 실제 얼마나 많은 사람이 클릭을 할지에 대한 배경지식이 없다고 해볼게요! 어라? 사전분포가 없으면 공식에 있는 “사전 믿음"에 어떤걸 넣어야하지? 사전 지식이 없다면 우리는 가장 안전하게 어떤 확률이든 균일하게 나올 수 있다라고 생각할 수 있겠죠? 자, 다시 한번 고교시절의 기억을 떠올려 봅시다! 이런 경우 어떤 분포를 쓸 수 있을까요? 바로 균일분포입니다!

균일분포 (uniform distribution)

여기서 응용! 그렇다면, 특정 수치를 기준으로 몰릴 확률이 높다면, 어떤 분포를 쓰면 좋을까요? 통계학자의 favorite! 가우시안분포를 쓰면 되겠죠!

우리의 영원한 친구 가우시안 분포!

혹시, 그래프가 나오니 당황하셨어요? 조금 더 쉽게 생각해봅시다! 베이시안은 우리가 평소에 사고하는 방식이랑 같아요! 누군가 우리에게 오늘 밖에 온도가 몇 도인지 물어봤다고 합시다. 만약 어제 온도를 기억하고, 오늘도 어제랑 비슷하다면 우리는 굉장히 확신을 갔고, “응 오늘은 14~ 16도 정도야!”라고 할 수 있겠죠. 이 경우, 0도 이거나 30도일 확률은 매우 희박합니다. 이런 경우 중간값이 15인 위와 같은 가우시안 분포를 쓸 수 있겠죠! 만약 밖에 나가본 지 너무 오래된 올드보이 최민식에게 묻는다면?

바깥 날씨에 감이 없는 최민식

이때는 균일분포를 통해서 “아… 잘 모르겠어. 0도 일수도 있고, 30도일 수도 있고…” 우리는 이럴 때, 모든 온도가 똑같이 가능성이 있기 때문에 균일분포를 쓰면 되겠죠!

다시 본론으로 돌아가서, 어떤 해당 캠페인을 통해 고객의 클릭률이 어떻게 되는지에 대한 사전 지식이 없는 상태이기 때문에, 균일분포를 쓰기로 하겠습니다. 그리고서 실제 데이터를 확인하면서 우리의 사후 믿음이 어떻게 진화해나가는지를 봅시다!

위부터 사전분포 (과거믿음) , 실제 데이터, 사후분포 (새로 계산된 믿음)

짜자잔~ 맨 위에는 사전지식! (10%가 클릭할 확률, 50%, 100%의 고객이 클릭할 확률등이 균일하게 같다고 가정합니다.) 가운데는 실제 데이터 (엄밀하게는 실제 데이터에 대한 likelihood를 뜻합니다. ) 이 경우, 약 25%의 고객이 실제로 클릭을 했네요! 맨 아래는 위 두 분포를 통해서 계산된 사후분포입니다. 사후분포가 실제 데이터의 분포와 같죠? 이유는 사전믿음이 없기 때문에 오로지 실제 데이터의 영향을 많이 받아서 그렇습니다! 그렇다면 이번에는 사전지식이 있는 상태에서 똑같은 실험을 해볼까요?

사전믿음이 있는 경우

위 이미지는 과거 경험 (약 25%의 고객이 클릭했었다.) 을 사전지식으로 활용하여 0.25에 가우시안분포를 띄고 있네요! 여기에 중간에 있는 실제 데이터분포를 감안해주면, 짜잔! 맨 아래에있는 사후분포가 나옵니다~ 이전 실험과 비교를 해볼까요? 이번에 나온 사후분포가 위의 사후분포보다 더 뽀족한 것을 볼 수 있죠? 이 뜻은 예측 구간이 좁아졌다는 것이고, 이 뜻은 더 정확히 판단할 수 있다는 얘기입니다! 한 가지 더! 꽤 좋은 사전분포가 있다면 훨씬 더 빨리 수렴하는 것을 볼 수 있죠! 예를 들어서, 비슷한 캠패인을 해본 사람의 경우, “음… 내 경험에 의하면 25%의 고객이 클릭할거야… (실제 데이터가 주워진 이 후) 봐바! 내말이 맞이? 내 말 믿으란 말이지~”

이햐! 그럼 이번에는 위에서 계산된 사후분포를 다시 사전분포라고 생각하고 반복을 해볼까요? 이렇게 5번의 반복해볼께요!

사후분포는 사전분포가되고 새로운 데이터를 감안 하다 X 5

위의 이미지는 이런 업데이트를 5번 반복한 결과에요! 사후분포를 보시면 훨씬 뾰족해졌죠? 자! 이렇게 계속해서 새로운 데이터를 통해 업데이트를 해주게 되고 일관성 있는 데이터를 통해서 훨씬 더 정확한 예측구간을 형성해 나갈 수 있어요!

그럼, 자연스레 이런 질문이 들 수 있어요. 어라? 그러면 내가 처음에 가진 사전지식이 잘못된 거였다면? 예를 들어, 나는 이 마케팅을 통해서 50%의 사람이 들어 온다고 아주 강하게 확신을 했고, 그래서 아주 뾰족한 가우시안 분포를 사전분포로 설정했는데… 괜찮나?

잘못된 강한 사전믿음이 있는 경우

맨 위의 이미지는 “잘못된” 강한 사전믿음을 뜻합니다. “나는 50%라고 확신해!” 그런데 중간 이미지에서 보여지듯이 실제로는 25%의 고객이 클릭했어요. 사전분포를 볼까요? 오! 왼쪽으로 살짝 움직였네! 그런데 왜 이렇게 조금 움직였지? 이렇게 생각해보세요. 고집이 아주 쎈 사람은 증거를 보더라도 쉽게 맘을 바꾸지 않습니다! 그 뜻은 더 많은 증거 (데이터)를 봐야 하는구나! 그럼 이걸 5번 반복해서 고집을 꺾어봅시다!

너의 믿음이 틀렸다는 걸 증명해주겠어!

위 이미지는 5번 반복한 결과에요! 신기하게도 왼쪽으로 많이 옮겨졌죠? 이제는 30%에 가깝게 되었네요! 그 뜻은, 실제 사전믿음이 잘못되었더라도 계속해서 업데이트를 하면서 데이터를 통해 분포가 수정된다라는 걸 알 수 있어요! 드디어 증거 (데이터) 를 통해서 고집을 많이 꺾었습니다!

마지막으로, 현실에서 적용해보세요! 첫 인상이 않좋았지만 (사전적 믿음) 시간이 지나면서 나한테 계속해서 잘해준다면? (데이터) 그 사람에 대한 인상이 계속해서 좋아지겠죠? (사후 믿음) 대신! 처음에 너무 않좋은 선입견을 갖고 있다면 (잘못된 강한 믿음), 굉장히 많은 업데이트가 필요하다는 사실!

위의 예제 코드는 이곳에서 (https://github.com/Minsu-Daniel-Kim/bayesian_secon_step) 찾을 수 있어요~ second_step.R을 돌리시면 됩니다!

--

--