준비하는 대학생

[기계학습] 나이브 베이즈(Naive Bayes) 원리 본문

Programming/Machine learning

[기계학습] 나이브 베이즈(Naive Bayes) 원리

Bangii 2023. 4. 10. 14:46

나이브 베이즈(Naive Bayes) 분류기는 지도 학습의 한 종류로, 베이즈 정리(Bayes' theorem)에 기반한 분류 알고리즘입니다. 특히 텍스트 분류, 스팸 메일 필터링, 감성 분석 등 다양한 분야에서 활용되며, 간단하고 빠르게 구현할 수 있다는 장점이 있습니다. 이 글에서는 나이브 베이즈 분류기의 원리와 활용에 대해 자세히 알아보겠습니다.

1. 베이즈 정리란?

나이브 베이즈 분류기의 기반이 되는 베이즈 정리는 확률 이론에서 가장 중요한 개념 중 하나입니다. 베이즈 정리는 사전 확률(prior probability)을 조건부 확률(conditional probability)을 사용하여 사후 확률(posterior probability)로 업데이트하는 방법을 제공합니다. 수식으로 나타내면 다음과 같습니다.

P(A|B) = (P(B|A) * P(A)) / P(B)

여기서 P(A)는 사전 확률, P(A|B)는 사후 확률, P(B|A)는 가능도(likelihood), P(B)는 정규화 상수(normalizing constant)입니다.

베이즈 정리는 주어진 데이터와 가정하에 어떤 사건의 확률을 추정하는 데 사용되며, 이를 통해 불확실성이 있는 상황에서 결정을 내릴 수 있습니다. 예를 들어, 어떤 이메일이 스팸일 확률이 70%라면, 이 이메일을 스팸으로 분류하고 처리하는 것이 합리적인 선택이 됩니다. 이렇게 베이즈 정리는 데이터를 기반으로 한 의사결정에 큰 도움을 주는 방법론입니다.

2. 나이브 베이즈 분류기의 원리

나이브 베이즈 분류기는 베이즈 정리를 사용하여 주어진 데이터를 특정 클래스에 속할 확률을 계산하고, 가장 높은 확률을 가진 클래스를 선택하는 방식으로 동작합니다. 이때, 모든 특성(feature)이 서로 독립적이라고 가정하며, 이러한 가정이 '나이브'라는 이름에 기인합니다.

분류를 위해 아래의 과정을 거칩니다.

  1. 각 클래스의 사전 확률 P(C)를 계산합니다.
  2. 각 특성별로 조건부 확률 P(x_i|C)를 계산합니다.
  3. 테스트 데이터의 모든 특성에 대해 조건부 확률을 곱하여 P(x|C)를 구합니다.
  4. P(x|C)와 P(C)를 곱하여 사후 확률 P(C|x)를 구합니다.
  5. 가장 높은 확률을 가진 클래스를 선택합니다

3. 예제: 스팸 메일 필터링

나이브 베이즈 분류기를 사용하여 스팸 메일을 필터링하는 예제를 살펴보겠습니다. 이 예제에서는 두 가지 클래스가 있습니다: 스팸(spam)과 정상 메일(ham). 텍스트 메시지에 등장하는 단어를 특성으로 사용하며, 각 단어가 주어진 클래스에 속할 확률을 계산하여 메시지를 분류합니다.

3.1. 데이터 준비

먼저 스팸 메일과 정상 메일로 구성된 학습 데이터를 준비합니다. 이 데이터를 사용하여 나이브 베이즈 분류기를 학습시킬 것입니다.

Spam: "Free money", "Get rich quick"
Ham: "Important meeting", "Lunch appointment"

3.2. 사전 확률 계산

각 클래스의 사전 확률을 계산합니다. 이 예제에서는 스팸 메일 2개와 정상 메일 2개가 있으므로, 두 클래스의 사전 확률은 각각 0.5입니다.

P(Spam) = 0.5
P(Ham) = 0.5

3.3. 조건부 확률 계산(likelihood)

각 단어에 대해 클래스별 조건부 확률을 계산합니다. 이때, 특성이 독립적이라고 가정하며, 조건부 확률을 구할 때 분자에는 +1, 분모에는 전체 단어 수를 더하여 라플라스 스무딩(Laplace smoothing)을 적용합니다.

P("Free"|Spam) = (1+1) / (4+6) = 0.2
P("Free"|Ham) = (0+1) / (4+6) = 0.1

3.4. 사후 확률 계산

새로운 메시지 "Free lunch"를 분류해 보겠습니다. 각 클래스에 대해 사후 확률을 계산하기 위해 조건부 확률을 곱하고 사전 확률을 곱합니다.

P(Spam|"Free lunch") ∝ P("Free"|Spam) * P("lunch"|Spam) * P(Spam) = 0.2 * 0.1 * 0.5 = 0.01
P(Ham|"Free lunch") ∝ P("Free"|Ham) * P("lunch"|Ham) * P(Ham) = 0.1 * 0.3 * 0.5 = 0.015

3.5. 클래스 선택

계산된 사후 확률을 비교하여 가장 높은 확률을 가진 클래스를 선택합니다.

P(Spam|"Free lunch") < P(Ham|"Free lunch")

따라서, "Free lunch" 메시지는 정상 메일로 분류됩니다.

4. 결론

나이브 베이즈 분류기는 베이즈 정리를 기반으로 한 간단한 분류 알고리즘이지만, 높은 성능과 빠른 학습 속도를 자랑합니다. 특히 텍스트 데이터와 같이 희소한 데이터에 적합하며, 독립적인 특성을 가진 데이터셋에서 잘 작동합니다.

하지만 나이브 베이즈 분류기는 모든 특성이 독립적이라고 가정하기 때문에, 실제로 특성 간의 상관관계가 존재하는 경우에는 성능이 저하될 수 있습니다. 또한, 데이터가 부족한 경우에는 라플라스 스무딩과 같은 방법을 사용하여 확률을 조정해야 합니다.

이러한 한계점에도 불구하고, 나이브 베이즈 분류기는 빠른 학습 속도와 간단한 구현, 높은 성능을 바탕으로 다양한 분야에서 활용되고 있습니다. 스팸 메일 필터링, 감성 분석, 텍스트 분류 등의 분야에서 나이브 베이즈 분류기를 사용하여 효과적인 결과를 얻을 수 있습니다.

Comments