캡쳐 사진 및 글작성에 대한 도움 출저 : 유튜브 - 허민석님


확률론

image

위 그림에서 사과를 짚을 확률은 2/3. 바나나를 짚을 확률은 1/3이다.


다음은 조건부확률(Conditional Probablility)이다.
the probablity of an event (A), given that another (B) has already occurred

조건부 확률은 2가지 경우가 있다.

  1. A와 B사건이 서로 영향을 끼치지 않을 때,
    예를 들어, 녹색셔츠를 입고(B)갔을 때, 카지노에서 잭팟(A)이 터질 확률은?
    여기서 녹색셔츠를 입든 말든 잭팟이 터질확률 1%에 영향을 미치지 않는다. 반대도 마찬가지다
    이 경우에 A와 B가 동시에 일어날 확률 P(A ∩ B) P(A) * P(B)이다.
    그리고 B가 일어났을 때, A가 일어날 확률은, 그냥 P(A). 반대의 경우도 P(B)이다
    결과적으로 P( B/ A) = P( B) 반대의 경우도 마찬가지다.

    image

  2. A와 B사건이 서로 영향을 끼칠 때,
    예를 들어, 비가 오는 날(A)에는 우산 장사(B)가 더 잘될 것이다. 서로 영향을 미치는 것에 대해서는 조건부확률의 공식이 달라진다.
    A와 B가 동시에 일어날 P(A ∩ B)은 P(A) * P(B)가 아니라, P(A) * P( B/A) ( P(B) in the given P(A) )이다.
    즉, 조건부확률 P( B/A)  = P(A ∩ B) / P (A) 가 된다.
    image



나이브 베이즈(Naive Bayes) 알고리즘

만약 셜록 홈즈가 이런 말을 했다고 가정해보자

' 너는 여자친구가 없어, 왜냐하면 주말에 유튜브만 보고 있고, 뚱뚱하고, 패션감각이 없기 때문이지'

image


셜록홈즈는 항상 근거를 가지고 있다. 그리고 만약에 나이브베이즈 알고리즘을 썼다면, 근거가 있는 말일 것이다.
즉,  유튜브/뚱뚱한/패션감각없는 확률을 미리 알고 있었다면,  여자친구가 없을 확률에 대해 충분히 납득해야할 것이다.


앞서 학습한, 서로 영향을 끼칠 때의 두 사건에 대한 conditional probability를 사용해 나이브 베이즈 이론을 증명해보자

조건부확률 공식에서 분자를 기준으로 정렬하면 아래와 같다.
P(A ∩ B)은 , P(A) * P( B/A) 이다.
P(B ∩ A)은 , P(B) * P( A/B) 이다.
여기서 두 교집합은 서로 같다
P(A ∩ B) = P(B ∩ A)
그러므로 P(A) * P( B/A) = P(B) * P( A/B)가 성립하게 된다.
결과적으로 A가 일어났을 때의 B의 확률
P(B/A) = P(B) * P( A/B) / P(A)가 된다.


image



아래와 같은 문제에 나이브 베이즈 이론을 적용시켜보자.

image

10개의 메일 중에, 3개는 스펨메일이다. 그리고 그와 상관없이 free라는 단어를 포함하는 메일이 4개가 있다.
문제는 free라는 메일이 와있을 때(A) 그것이 스펨매일(B)인지 아닌지를 구분해야하는 것이다.

기본적으로 필요한 요소는 3가지이다.

  1. 스펨메일의 확률 = 3/10

  2. free를 포함하는 메일의 확률 = 4/10
  3. 스펨메일 중에 포함된 free포함메일 = 2/3


P(B/A) = P(B) * P( A/B) / P(A)
해석 : A(관련요소)가 일어났을 때, B(판단요소)의 확률 B(판단요소)확률 * B가 일어났을 때의 A 확률 / A(관련요소)의 확률

P( spam / free ) = P(spam) * P ( free / spam ) / P (free)
P( spam / free ) = 3/10 * 2/3  /  4/10
image


이렇게 2사건(판단요소(spam) + 관련요소(free))에 대한 3개의 요소를 가지고 있으면,
새로운 1개의 조건부 확률(관련요소가 있을 때의 판단요소 확률)을 구할 수 있다. 이게 바로 나이브베이즈 이론이다.

즉, 관련요소(free)가 일어났을 때, 판단요소(spam)에 대한 확률은
판단요소확률 * 판단요소가일어났을 때 관련요소의 확률  / 관련요소의 확률


여기까지는 너무 쉬울 수 있다. 머신러닝이 필요한가에 대한 의문도 들 수 있다.

하지만, 실제는 다르다. 머신러닝이 필요한 이유는 아래와 같다.

spam메일도 무수히 많을 뿐만 아니라,
free말고도 coupon , fuXX, sexy 등 무수히 많은 단어들이 스팸메일안에 들어가 있기 때문이다.




아래는 조금 더 복잡한 예제이다.
free뿐만 아니라, coupon이라는 단어도 동시에 포함되어있는 상황에서 스팸메일인지 아닌지를 알아보자.

14개의 메일 중에, free라는 단어를 포함하는 메일과 coupon이라는 단어를 포함하는 메일들이 와있다.

imageimage

이전 예제에서는 2가지요소에 대해서 3개의 인자를 알아야된다고 했는데,
이번엔 3가지 사건(판단(spame) + 관련요소1(free) 관련요소2(coupon)의 교집합 ) 에 대해서는 미리 3가지 요소를 알아야한다.

관련요소1과 관련요소2가 있을 때, 판단요소일 확률은?

  1. 스팸메일(판단요소)의 확률 : 6/14


  2. 스팸메일(판단요소) 중 free와 coupon을 모두 포함하는 메일(관련요소 교집합) = 1/2
    - P( free ∩ coupon / spam) = 1 / 2
  3. free와 coupon을 모두 포함하는 메일(관련요소 교집합) = 2/7
    - P( free ∩ coupon ) = P(free ) * P( coupon / free) = 7/14 *   4 / 7 = 2/7


결과적으로 확률은
P( spam / free ∩ coupon ) = P(spam) * P( free ∩ coupon / spam)   /   P( free ∩ coupon)
P( spam / free ∩ coupon ) = 6/14 * 1/2 / 2/7 
P( spam / free ∩ coupon ) = 3/14 * 7/2 = 3/4 ( 0.75 = 75%)

 

이러한 확률을 다른식으로 해석해보자.
계산에 있어서, 관련요소1,2 들은 모두 독립이라고 가정하게 되면, 분자 중 빨간색 부분을 아래와 같이 쪼갤 수있다.
P( spam / free ∩ coupon ) = P(spam) * P( free ∩ coupon / spam)   /   P( free ∩ coupon)

P( spam / free ∩ coupon ) =  P(spam) * P( free / spam) * P( coupon / spam)   /   P( free ∩ coupon) 방식으로 쪼갤 수 있다.P

분모 역시 아래와 같은 방식으로 쪼갤 수 있다.( 서로 독립이므로)

P( spam / free ∩ coupon ) =  P(spam) * P( free / spam) * P( coupon / spam)   /   P( free ∩ coupon) 

P( spam / free ∩ coupon ) =  P(spam) * P( free / spam) * P( coupon / spam)   /   P( free ) P(coupon) 방식으로 쪼갤 수 있다.


즉 요약하자면, 나이브 베이즈 알고리즘을 사용하는데 있어서,

독립적인 관련요소(w0,w1, w2, w3, ...)이 일어났을 때의 판단요소(spam)의 확률은

판단요소 * (관련요소1/판단요소) * (관련요소1/판단요소) * ... * (관련요소n /판단요소)
------------------------------------------------------------------------------------------------
관련요소1 * 관련요소2 * ... * 관련요소n
 


image




참고

free 와 coupon이 들어간 메일은 스팸메일거라는 확률이 75프로 (실제로 높은 확률이라고 생각하지만) 라는 근거로 이메일이 스팸이다 라고 가정할수 있는데, 혹시 몇 프로 이상일때 스팸일 것이라고 정의 할만한 유의확률(?) 같은 것이 있나요? 아니면 어디까지나 구현하는 사람의 기준에 의해 달라질수 있는 것인가요? (예로, 확률이 10프로 이상만 되도 스팸이라고 가정하는 것은 그런 시스템 구현자의 의지인가요? 아니면 머신러닝의 결과물이 되는건가요?)

정답은 없습니다만 많은 트레이닝과 실습으로 유의확률을 결정하는 게 거의 맞다고 보시면 될 거 같습니다. test 이후 confusion matrix를 보며 accuracy, precision 등등의 케이스를 연구 후 유의 확률을 높히는 것이 실제 더 맞을 거 같습니다.


0.75 라는 확률은free랑 coupon이 동시에 들어가있는 이메일이 스팸일 확률 인거죠? free만도아니고 coupon만도아니고 두개가 동시에. 그렇다면 강의 마지막 부분에 w1,w2,w3 등으로 여러단어를 나열했을때 더욱 의의가 있다고 하시는데. w1~w20까지 했을경우 그 20개단어가 모두 들어가는 이메일은 거의 없지 않을까요?답변 부탁드립니다 ㅜ


아주 예리한 질문이십니다. 인자가 많을 경우 오히려 올바른 예측을 못하게 되는 경우를 오버피팅(overfit)이라고 합니다.

+ Recent posts