본문 바로가기

데이터 다루기/머신러닝 이론

[머신러닝] Naive Bayes Classifier

728x90
반응형

안녕하세요, 이번 포스팅에서는 Naive Bayes Classifier 에 대해서 배워보도록 하겠습니다.

Naive Bayes Classifier는 분류문제에서 좋은 성능을 보이는 머신러닝 기법입니다.

그렇기 때문에, Text mining에서 자주 사용됩니다.

Naive Bayes Classifier의 Naive는 순진한, 멍청한이라는 의미를 가지는데요.

왜 이런 단어가 앞에 붙었을까요??

그 이유는 바로 Naive Bayes Classifier의 학습 방법에 있습니다.

Naive Bayes Classifier은 전제 조건을 하나 가지고 있습니다.

그것은 바로, 입력변수의 모든 x들이 조건부 독립이라는 것입니다.

현실세계에서 이러한 가정을 말이 안되는 것입니다.

그렇기 때문에, Naive라는 단어가 앞에 붙어서, 순진한 분류기라는 것이지요.

하지만 의외로 성능이 나쁘지 않다는 것입니다.

지금부터 학습 알고리즘에 대해서 알아봅시다.

데이터의 Class를 V라고 하고, m개의 입력변수를 a_1부터 a_m 이라 정의하겠습니다.

이 때, 최적의 클래스는 다음과 같습니다.

이러한 문제는 예를 통해 배우는 것이 제일 이해하기 쉽겠습니다.

Naive Bayes Classifier에 대한 유명한 예제로 Play Tennis가 있습니다.

이 문제는, 테니스를 칠것인가 말것인가에 대한 의사결정에 영향을 주는 요인으로 날씨, 온도, 습도, 바람의 세기가 작용하는 문제입니다.

위 데이터를 바탕으로, {Sunny, Cool, High, Strong} 일 때의 테니스 여부의 의사결정을 해보겠습니다.

정말 쉽죠??

이렇게 간단한 Naive Bayes Classifier는 데이터에 따라 문제가 생길 수 있습니다.

예를 들어서, 위의 테니스 문제에서, Yes일때 날씨가 Sunny인 데이터가 없다고 생각해봅시다.

그러면 P(Sunny | Yes) = 0 이 되고, 결국 곱해지는 과정에서 {Sunny, Cool, High, Strong} 관측치가 Yes일 가능성은 0이 됩니다.

너무 극단적이지요.

이를 방지하기 위해 Laplacian smoothing 방법이 사용됩니다.

이 방법은 간단합니다.

가상의 데이터를 만들어 주는 것입니다.

모든 경우의 수에 대해서 가상의 데이터를 만들어주는데, 식은 다음과 같이 변합니다.

이렇게 되면 0이 되는 경우가 발생하지 않게됩니다.

반응형