관리 메뉴

HAMA 블로그

파이썬 코딩으로 말하는 데이터 분석 - 2. 베이즈 확률 본문

통계 & 머신러닝 & 딥러닝

파이썬 코딩으로 말하는 데이터 분석 - 2. 베이즈 확률

[하마] 이승현 (wowlsh93@gmail.com) 2017. 1. 15. 14:51



순서 

1. 통계 - 카운팅,min,max,평균,중앙값,산포도,분산,편차,공분산,상관관계 

2. 가설과 추론 (베이지언 - 사후확률,우도) 

3. 군집화 (K-Means)

4. 연관 (Apriori)

5. 함수형으로 데이터 다루기 

6. 경사하강법

7. 회귀분석

8. 은닉 마코프법 (HMM) 

9. k-NN

10. DTW 

 * 참고로 "밑바닥부터 배우는 데이터과학" 서적은 numpy,scikit-learn 등의 외부라이브러리를 활용은 배제되었습니다.


여기서 배울 베이즈 이론의 경우 데이터 분석 및 요즘 유행하고 있는 딥러닝 및 뇌과학에서도 핵심에 있는 중요한 이론입니다.박문호 박사님의 아래 동영상에서는 모든것은 베이즈로 이루어져 있다고도 말합니다. 시간 날때 함 보세요 재밌습니다.

-> 뇌과학으로 본 인공지능의 현주소와 미래 01

그리고 분류를 위해 사용하는 머신러닝중  스팸 필터링을 위해서 나이브베이즈 모형을 주로 사용하는데 베이즈 이론을 공부하고 나면 나이브베이즈도 쉽게 이해할 수 있을 것입니다.


베이즈 확률


두개의 상자가 있다고 해보자.
 
A 상자에는 빨강색 공 3개와 파랑색 공 7개가 있다.
A 상자에서 눈을 감고 하나를 골라내었을 경우 빨강색 공일 경우의 확률은? 

간단히 3/10 이다. 

자 B 상자가 있다, 빨강색 공 7개와 파랑색 공 3개가 있다.
B 상자에서 눈을 감고 하나를 골라내었을 경우 빨강색 공일 경우의 확률은? 

간단히 7/10 이다.

이 경우는 너무 쉽다. 
하지만 반대로 되면 어떨까? 

즉 빨강공을 당신에게 주고서, 이 빨간공이 A,B상자 중에서 A상자에서 나왔을 확률을 계산하라고 하면?

말문이 막힐거 같다. ㅎㅎ (이 글을 다 읽으면 쉽게 구할 수 있게 된다. 하지만 중요한것은 공식이 아니라 이런 경우에는 베이지언을 사용한다는 것이다. 즉 베이지언 확률이 필요한 경우에 대한 감을 잡는게 중요하다.) 

즉 빨강공이라는 조건이 있을 때 A 상자에서 나왔을 조건부확률을 구하는 것이다.
반대로 A상자라는 조건이 있을 때 빨강공이 나올 조건부확률은 위에 구했다시피 3/10이다. 


무한도전 

무한도전에서 박명수는 시민들에게 무작위로 선물을 주기 위해 선물트럭을 몰고 시내로 나갔습니다. 트럭에는 3개의 칸막이가 있고, 지나가던 시민은 그 중 하나를 선택하면 그 칸막이 뒤에 있는 선물을 받게 됩니다.

하나의 칸막이에는 벤츠자동차가 있으며 , 나머지 칸막이에는 각각 박명수,유재석의 사인 카드가 있습니다.

일단 시민이 칸막이 A를 선택했고 , 박명수는 나머지 칸막이 중 자동차가 없는 칸막이 하나 (B)를 보여 주며 긴장감을 고조 시킵니다. 그리고 시민에게 묻습니다.


" 혹시 선택을 나머지 C 로 바꾸겠습니까?" 


처음 선택한 칸막이를 고수 할 것인가?  나머지 하나의 칸막이로 바꿀 것인가?  당신의 선택은 ??  

자!! 이 문제의 답은 게시글 마지막에 함께 풀어보도록 하며 , 먼저 확률에 대해서 알아 보도록 합시다. 


확률

확률은 매우 간단합니다. 주사위로 생각해 봅시다.

주사위 1개를 던저 나오는 눈의 수를 생각 할때 , 주사위 던지는 조작을 "시행"이라고 합니다.

이 시행으로 얻어진 결과 중에서 조건에 맞는 결과 집합을 "사상" 이라고 합니다.

만약 홀수가 나오는 사상이라면 시행의 결과가 1,3,5 인 눈의 집합이 됩니다.

결국 공식을 다음과 같이 정의 할 수 있습니다.

확률 P =   문제 삼고 있는 사상이 일어나는 경우의 수 (A) /  일어날 수 있는 모든 경우의 수 (U) 


곱사상

두 사상 A,B 가 있다고 합시다.

- A 는 4 이하의 눈이 나오는 사상 

- B 는 짝수가 나오는 사상 

A 와 B 가 동시에 일어나는 "동시확률" 은 ?

A 는 4/6 

B 는 3/6  

A * B = 1/3     즉 두개의 사상이 함께 일어날 확률은 두 사상을 곱하여 계산합니다. 


조건부 확률

어떤 사상 A 가 일어났다고 하는 조건 아래서 사상 B 가 일어나는 확률을 , A 의 조건 아래서 B 가 일어나는 "조건부 확률" 이라고 합니다.

P(B|A) 라고 합니다. ( A 가 일어난 후에 B가 일어날 확률 ) 


P(B | A)    =  '4 이하의 눈이 나왔을 때 그 눈이 짝수 일 확률' =   2/4 

P(A | B)    = '짝수의 눈이 나왔을때 그 눈이 4이하일 확률' = 2/3


승법정리

P(A∩B) = P(A)P(B|A) = P(B)P(A|B) 

검증해볼가요?  (위의 주사위 확률을 문제로 삼고 진행해 봅시다) 

A 사상과 B 의 사상이 함께 일어날 확률은?  위 곱사상 편에서 보면  1/3 이었습니다.

P(A) 는 ?  4/6  이 었지요.

P(B|A) 는 ? 2/4 였습니다 ( 위의 조건부 확률에서 확인) 

P(A)와 P(B|A) 를 곱하면 ?   네 1/3 이 됩니다. 


베이즈 정리는 이 승법정리에서 간단히 유도 됩니다.


베이즈 정리 

위의 승법정리를 토대로 간단히 다음과 같은 식이 얻어집니다.

P(AB)=P(B)P(A)P(BA)



위에서 A 나 B 로 하면 먼가 이해하기 힘들거 같아서 

A 를 H 로 바꾸고 (Hypothesis :  '원인' 혹은 '가정' )

B 를 D 로 바꾸어 보겠습니다. ( Data :  '결과' 혹은 '데이터') 


P(HD)=P(D)P(H)P(DH)


여기서 좀 상상해 보는 시간을 갖도록 하겠습니다.

위의 정리는 이렇게 말하고 있습니다.

P(H | D) :   결과 데이터가 이렇게 이렇게 나왔는데 , 이렇게 결과 나오려면 어떤 원인이 있었던 것일까??

P(D)    :      모든 결과 (어떤 가설에든 포함되는 데이터의 비율로 , 한정 상수라고도 한다) 

P (H)   :    (결과 데이터 D 를 얻기 전에)  원인인 H가 성립될 확률 

P(D | H) : 원인 H 가 일어났을때 데이터 D 가 얻어질 확률 


정리하면 아래와 같다.

 확률 기호 

 명칭 

 의미  

 P(H | D)

 사후 확률 

 데이터 D 가 얻어졌을때 그 원인이 H 일 확률 

 P(D | H)

 가능도 (우도,likelihood)

 원인 H 가 일어났을때 데이터 D 가 얻어질 확률 

 P (H)

 사전확률

 (결과 데이터 D 를 얻기 전에)  원인인 H가 성립될 확률


사후확률이라는 이름을 딱 보면 먼가 일어나고 나서 발생하는 확률이라고 착각하기 쉬운데 ..
무엇인가 나중에 일어났을때 그게 일어나는 원인을 찾는 확률이다. 헥깔리기 쉽다.

또한 우도라고 주로 표현하는데 개인적으로 가능도가 더 마음에 든다.


예1 ) 

실생활적으로 생각해보면 음성인식에서 어떤 데이터의 값들이 얻어졌을때 그 원인이 "아" 라고 발음해서인 확률인것이다.

예2 ) 

어느 지역의 기상통계에서 4월 1일 흐릴 확율은 0.6이고, 다음 날인 2일 비가 올 확률은 0.4 였다. 또한 1일 날 흐릴 때 다음날 2일에 비가 올 확률은 0.5 이다. 이 지역에서 2일에 비가 왔을 때 전날인 1일 날 흐릴 확률은 ? 

예3 ) 

다른 구체적인예로는 색깔이 있는 초콜렛인  M&Ms 는 1994년에는 노랑이 20% 녹색이 10% 였고 , 1996년에는 노랑이 14%, 녹색이 20% 비율로 들어가 있다. 당신이 M&M 두 봉지를 샀을때 각각 1994 년과 1996년 제품이 었다. 각 봉지에서 하나씩 꺼냈을때 한 알은 노란색이고 , 한알은 녹색이었다. 이 때 노랑 초콜렛이 1994년에 생산된 봉지에서 나왔을 확률은 ??


무한도전 문제 풀이 (일명 : 몬티 홀 문제) 

" 혹시 선택을 바꾸겠습니까?" 

대부분의 사람들은 그냥 선택을 바꾸거나 안바꾸거나 고급자동차를 뽑을 확률은 1/2 의 이라고 생각하기 쉽다. 

하지만 그렇지 않다. 베이즈 확률을 이용하여 계산하여 보자.

먼저 3개의 가설을 정의 한다. A,B,C 는 자동차가 A,B,C 칸막이 뒤에 있다는 가설이다. 

    사전 확률   P (H) 

 가능도 P(D | H) 

 P(H) P(D | H) 

  한정상수 P(D) 

  사후 확률P(H|D) 

           A

    1/3

  1/2

    1/6

     1/2

   1/3

           B

    1/3

   0

    0

     1/2

    0

           C

    1/3

   1

    1/3

     1/2

   2/3 

상품은 임의로 놓여진다고 했으므로 차는 어느 문 뒤에든 동일한 1/3 확률로 있으므로 사전확률은 쉽다.

가능도만 좀 헥깔릴 수 있는데 , 다음처럼 생각해보자

- 만약 차가 실제로 문 A 뒤에 있다면 박명수는 문 B 나 C 를 안전하게 열 수 있다. 따라서 박명수가 문 B 를 선택할 확률은 B 와 C 둘 중 하나 선택하면 되므로 1/2 이다. 그리고 차가 문 A 뒤에 있으므로 차가 문 B 뒤에 없을 확률은 1이다.

- 만약 차가 문 B 뒤에 있다면 박명수는 문 C 를 열어야 하므로 박명수가 문 B를 열 확률은 0이다.

- 마지막으로 차가 문 C 뒤에 있다면 박명수는 1의 확률 (당연히) 로 문 B 를 열 것이고, 1의 확률로 차가 없을 것이다.

이제 나머지는 초딩도 할 수 있는 산수이다. 한정 상수 1/2 는 P(H) P(D | H)  를 모두 합한 수다. 

결국 사후 확률은 C 로 결정을 바꾸는 결과가 2/3 으로 훨씬 높다. 즉 바꾸는게 유리하다. 


* 막간 코너 )  베이즈파와 빈도론파의 확률을 둘러싼 대립 

둘의 차이는 한마디로 '확률을 미리 상정하는가', '상정하지 않는가' 로 표현 할 수 있다.

예를 들어보면  여기 두종류의 동전이 있다고 가정하자. 하나는 앞면과 뒷면이 나올 확률이 반반인 동전이며, 다른 하나는 앞면이 나올 확률이 80%인 가짜 동전이다. 둘다 외형적으로는 전혀 구별되지 않는다고 가정하고 몇번인가 던진 회수를 집계 분석해 진짜 동전인지 가짜 동전인지 판단해보자.

빈도론파 )

10 번 던진 중 10번 모두 앞면이 나왔다는 데이터를 얻었다고 하자. 이 동전이 진짜 동전이라고 말 할수 있을까? 누군가 이 동전을 진짜라 했다고 가정하자. 그 가정 아래서 10번 중 전부가 앞면이 되는 확률을 계산하면 

' 1/2 의 확률로 나오는 앞면이 우연히 10번 전부 나올 확률은 2^10 분의 1 , 즉 0.10% 이다.  이 0.10% 라는 확률이 이른바 p- 값이다. 다시 말해 이런 기적 같은 확률이 실제로 일어났다고 생각하기보다는, 본래의 '이 동전은 진짜' 라는 가정을 '생각하기 어렵다' 라며 버리는 편이 이치에 합당하다고 판단한다.

즉 빈도론은 확률을 이렇게 ' 몇번 중 몇번' 처럼 '빈도' 로 파악한다는 의미이다.

베이즈파 )

베이즈론자가 이 동전을 분별할 때는 우선 아무 정보도 없는 시점에서 어느 정도의 확률로 이 동전은 가짜인가 진짜인가를 생각한다.이 시점에서의 확률을 '사전확률' 이라고 부른다. 사전 확률은 아무 값으로 설정해도 상관없다. 베이즈론자는 진짜인 경우와 가짜인 경우 등 각각의 상황에서 사전확률과 조건부 확률의 곱셈을 한다. 사전확률과 데이터에 근거해 산출된 '사후확률' 을 계산한다. 

사회조사,역학,생물통계학등은 빈도론자가 많고, 계량경제학자 중에는 베이즈론자가 증가하고 있다. 데이터마이닝 머신러닝 분야에서는 베이즈론 쪽으로 치우치는 경향이 있다.  둘은 뿌리 깊은 대립 구도를 형성하고 있다. 빈도론자들은 베이즈론자들을 향해서 '사전확률을 설정' 하는 것은 도무지 말이 되지 않는다라고 한다. 


- 빅데이터를 지배하는 통계의 힘에서 발췌 



레퍼런스) 

그림으로 설명하는 개념 쏙쏙 통계학

Think Bayes (파이썬을 활용한 베이지안 통계) 



Comments