Notice
Recent Posts
Recent Comments
관리 메뉴

GIS & Spatial Analysis in KOREA

Naive Bayes Classification - 이론 본문

Machine Learning/Machine Learning Basic

Naive Bayes Classification - 이론

Borin78 2018. 8. 30. 08:51

[Machine Learning]

#Data Analysis #Data Science #Data Scientist #Spatial Data Analysis #Big Data #Data Visualization

#AI #Machine Learning #Supervised Learning #Naive Bayes #Bayesian Machine Learning #sklearn

#데이터 분석 #데이터 과학 #데이터 과학자 #공간데이터 분석 #빅데이터 #데이터 시각화 

#인공지능 #기계학습 #머신러닝 #지도학습 #나이브 베이즈 #베이지안 머신러닝



[ Naïve Bayes Classification - 이론 ]




Naïve Bayes Classification 에 대해 이야기하기 위해 우선 논의를 끌어갈 시나리오에 대해 이야기하고, 다음으로 Naïve Bayses Classifier의 핵심인 베이즈 정리(Bayes Theorem)라고 알려진 사후확률(Posterior Probability)에 관한 수학적 논의를 할 예정이다.


1. 시나리오

   대화속의 단어 패턴을 잘 알고 있는 Alice와 Bob이라는 두 사람을 상상해보라. 이야기를 더욱 단순화하기위해 Alice는 Love, Great, Wonderful, Bob은 Dog, Ball, Wonderful 이라는 세 단어를 자주 사용한다고 가정해보자. 그리고, Alice 혹은 Bob이 보낸 것으로 생각되는 익명의 이메일을 받았다. 이 메일의 내용은,


“I love beach sand. Additionally the sunset at beach offers wonderful view.”


이다. 이 이메일이 누구로부터 온 것인지 유추할 수 있는가?


   만약 Alice로부터 온 것이라고 생각했다면 추측은 정확했다. 아마 그렇게 추론한 이유는 Alice가 자주쓰는 단어인 Love, Greeat, Wonderful 때문일 것이다. 


이제는 한 단계 더 나아가 각 단어마다 언급할 확률 값을 부여해보자. Alice와 Bob이 아래 표처럼 각 단어를 사용한다고 가정해보자.


 


그러면, 

“Wonderful Love.”

는 과연 누가 보낸 것일까?


   만약, Bob이 보낸 것이라고 생각했다면 추론은 맞았다. 이 추론을 수학적으로 한다면 베이지안 이론(Baysian Theorem)을 적용해야한다.


 

   B가 발생할 확률 아래 A가 발생할 확률을 P(A | B)라 쓰고, A가 발생할 확률 아래 B가 발생할 확률을 P(B | A)이라 쓰고, 각각 A, B가 발생할 확률은 P(A), P(B)라고 쓴다.

만약, 아래와 같이 씌여있다면

    • P(Fire | Smoke)는 Smoke(연기)를 볼 때 얼마나 자주 Fire(화재)가 발생했는지

    • P(Smoke | Fire)는 Fire(화재)가 발생했을 때 얼마나 자주 Smoke(연기)가 발생했는지

를 의미한다.


예) 만약 위험한 화재의 발생 확률은 1% (P(Fire) = 1%)이며, 공장들에 의한 연기 발생 확률이 10% (P(Smoke) = 10%)라고 한다면 위험한 화재의 90%에서 연기가 발생(P(Smoke | Fire) = 90%)한다.


P(Fire | Smoke) = P(Fire)P(Smoke | Fire) = 1% x 90% = 9%P(Smoke)10%


이 경우 9%는 연기가 할생했을 때 위험한 화재인 확률을 의미한다.(P(Fire | Smoke) = 9%)


2. Naïve Bayes Classifier

   Naïve Bayes Classifier 는 모든 요소에 대한 확률을 계산한다.(이메일 예제의 경우 Alice와 Bob이 주어진 입력 요소이다.) 이 분류에서 각 기능들(시나리오에서 각 단어들)은 독립적이라고 가정한다.

   이 분류법을 이용해 우리는

    • 실기간 예측(Real Time Prediction)

    • 텍스트 분류/스팸 필터링(Text Classification / Spam Filtering)

    • 추천 시스템(Recommendation System)

에 이용 할 수 있다.


   수학적으로는 다음과 같이 쓸 수 있다. 특정 Event E, Test Actor x1, x2, x3, 등이 있는 경우 우리는 먼저 P(x1 | E), P(x2 | E) … [이벤트 E가 발생한 경우 x1의 확률]로 읽으며, Test Actor x 중 최대 확률값을 선택한다.


   다음 글에서는 Python에서 sklearn 라이브러리를 이용해 이메일을 스팸이나 햄으로 분류하는 Naive Bayes Classifier를 구현하고자 한다.


- 끝 -



Comments