본문 바로가기
Archive/TIL

[TIL] 0805 아침스터디 - 나이브 베이즈 복습

by 다람이도토리 2022. 8. 5.

Naive Bayes란?

원리 - 베이즈 정리

베이즈 정리란, 사전확률과 사후확률의 관계를 나타내는 정리이다.

사전확률은, 특정 사건이 일어나기 전에 우리가 구하고자 하는 사건의 확률을 의미한다.
(예시 - 어떤 질병에 걸릴 확률)

여기에 증거, 즉 추가적인 조건을 붙힌다면, 이 때 확률은 어떻게 될지를 구하는 것이, 베이즈 정리이다.

다시 말해, A -> B라는 관계가 있을 때, B가 일어날 확률만 아는데, < A라는 일이 먼저 발생했을 때 >, B가 일어날 확률을 구하는 것이 베이즈 정리의 목표이다.

다음과 같이, 조건부 확률 형태로 얻을 수 있다.

작동 원리

기본적으로, 나이브 베이즈는 feature끼리는 서로 독립이어야 한다.
독립을 가정하게 되면 좋은 점은, 여러 특성들을 가졌을때, 그 확률의 곱을 쪼갤 수가 있다는 것이 가장 큰 장점이다.!

즉, Naive Bayes는 X변수 각 항목간의 독립을 가정하고, 베이즈 정리를 활용하여 해당 변수가 특정 class에 속할 확률을 구하겠다는 것을 뜻한다.

수식으로 정리하면, X, Y 라는 특성으로 A 를 예측하는 상황을 가정하면, 독립을 가정하기 때문에 P(X, Y) = P(X)*P(Y)가 확보가 되고, 베이즈 정리를 적용하면.

를 얻게 된다.

 

Example - Spam Mail 문제

광고, 결제 라는 단어가 들어가면 스팸메일일까? 를 물어보고 싶다.

그러면 스팸메일 중에서 광고 라는 단어가 들어갈 확률, 결제라는 단어가 들어갈 확률은 구할 수 있을 것이며,
전체 메일 중 스팸메일 개수도 쉽게 구할 수 있을 것이다.

광고, 결제라는 단어가 들어가는 사건을 "독립"이라고 가정하고, 위의 문제의 식에 대입하여 풀 수 있다.

Additional. Laplace Smoothing

문제는, 위의 방식대로 풀면 훈련하지 않은 케이스에 대해서는 정상적인 값으로 분류되지 않을 것이다.

Ex- 위의 스팸메일 문제를 고려하면 성인 광고 관련 메일일 경우 스팸메일일 것인데 광고나 결제라는 단어가 없다면, 확률이 0이 되어 스팸메일로 처리하지 않을 것이다.

따라서, Laplace Smoothing이라는 것을 생각하게 된다.
이를 간단하게 표현하면, 보지 않은 데이터에 대해서도 "보았다"라는 보정을 실시하는 것이다.

가중치 α값을 선택하여, 다음과 같이 확률을 결정한다. 여기서 분모가 2α인 이유는 smoothing을 단순히 위의 상황 뿐만 아니라 표본이 매우 적은 극단적 상황을 고려할 수 있을 것인데, 0인 케이스 1건과, 1인 케이스 1건을 더해준다는 의미로 고려하면 된다. (이렇게 할 경우, 극단적인 값을 0.5에 가까운 값으로 보정하는 역할을 하게 된다.)

 

실제 사용?

역시, scikit-learn에 이미 다 준비가 되어있다.

from sklearn.naive_bayes import GaussianNB # 설명변수가 연속형일때
from sklearn.naive_bayes import MultinomialNB #설명변수가 이산형일때