나이브 베이즈(naive Bayes) 뜻과 계산 해보기

나이브 베이즈(naive Bayes) 이론은 통계학과 기계 학습에서 널리 사용되는 분류 알고리즘 중 하나입니다. 이 알고리즘은 베이즈 정리를 기반으로 하며, 특히 특정 사건의 확률을 계산할 때 유용합니다. 나이브 베이즈는 “나이브(naive)”라는 단어가 붙는데, 이는 이 알고리즘이 데이터의 각 특성이 독립적이라고 가정하기 때문입니다. 이러한 가정은 현실에서는 자주 위배되지만, 실용적으로는 매우 강력한 성능을 발휘합니다.

베이즈 정리 (Bayes)

나이브 베이즈의 핵심은 베이즈 정리입니다. 베이즈 정리는 다음과 같이 표현됩니다:

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

여기서,

  • P(A|B): 사건 B가 일어났을 때 사건 A가 일어날 조건부 확률
  • P(B|A): 사건 A가 일어났을 때 사건 B가 일어날 조건부 확률
  • P(A): 사건 A가 일어날 확률(사전 확률)
  • P(B): 사건 B가 일어날 확률

나이브 베이즈 분류기는 주어진 특성(feature) 벡터 X = (x_1, x_2, …, x_n)가 주어졌을 때 특정 클래스 C_k에 속할 확률 P(C_k|X)를 계산합니다. 이 확률은 베이즈 정리에 따라 다음과 같이 계산됩니다:

P(C_k|X) = [P(X|C_k) * P(C_k)] / P(X)

나이브 베이즈 (naive Bayes)의 독립 가정

나이브 베이즈에서는 각 특성 x_i가 서로 독립적이라고 가정합니다. 즉, 각 특성은 클래스 C_k와만 관련이 있고 다른 특성과는 독립적입니다. 이를 통해 조건부 확률 P(X|C_k)를 개별 특성의 곱으로 표현할 수 있습니다:

P(X|C_k) = P(x_1|C_k) * P(x_2|C_k) * … * P(x_n|C_k)

이렇게 하면 계산이 훨씬 간단해지며, 나이브 베이즈의 계산 효율성이 높아집니다.

나이브 베이즈 (naive Bayes) 분류기

나이브 베이즈 분류기는 주어진 데이터 포인트가 특정 클래스에 속할 확률을 계산한 후, 가장 높은 확률을 가진 클래스로 해당 데이터를 분류합니다. 이때, 사전 확률 P(C_k)와 조건부 확률 P(x_i|C_k)를 곱하여 가장 높은 값을 가지는 클래스를 선택합니다:

C_hat = argmax_k [P(C_k) * product(P(x_i|C_k))]

나이브 베이즈 그래프

위 그래프는 나이브 베이즈 분류기를 간단히 시각화한 것입니다.

  • 빨간색 점들은 클래스 1 (Class 1)에 속하는 데이터 포인트들이며, 파란색 점들은 클래스 2 (Class 2)에 속하는 데이터 포인트들입니다.
  • 점선으로 표시된 검은색 선은 두 클래스 간의 경계선(Decision Boundary)을 나타냅니다. 이 경계선은 나이브 베이즈 알고리즘이 각 클래스의 확률을 계산한 후, 가장 높은 확률을 가지는 클래스를 선택하는 기준이 됩니다.

이 그래프를 통해 나이브 베이즈 분류가 어떻게 데이터 포인트를 분류하는지, 그리고 각 클래스 간의 분포가 어떤지 시각적으로 이해할 수 있습니다.

나이브 베이즈 (naive Bayes) 예시

이론을 좀 더 명확히 이해하기 위해 간단한 예시를 들어보겠습니다. 예를 들어, 스팸 메일 필터링 문제를 생각해 봅시다. 특정 이메일이 스팸일 확률을 계산하고자 할 때, 각 단어가 이메일에 등장할 확률을 기반으로 이메일이 스팸일 확률을 계산할 수 있습니다.

단어가 “무료(free)”일 때, 이 단어가 스팸 이메일에서 나타날 확률이 0.7이고, 스팸이 아닌 이메일에서 나타날 확률이 0.1이라고 가정합니다. 이메일에 “무료”라는 단어가 포함되어 있을 때, 이 이메일이 스팸일 확률은 다음과 같이 계산됩니다:

P(스팸|무료) = [P(무료|스팸) * P(스팸)] / P(무료)

여기서 P(무료|스팸)는 0.7, P(스팸)는 전체 이메일 중 스팸 이메일의 비율, P(무료)는 이메일에서 “무료”가 등장할 전체 확률입니다.

나이브 베이즈 예시 문제

문제 1: 스팸 메일 분류

문제:
어떤 이메일이 “스팸”인지 아닌지를 분류하는 문제입니다. “무료(free)”라는 단어가 포함된 이메일이 스팸일 확률을 계산하려고 합니다. 다음 정보를 참고하세요:

  • 전체 이메일 중 40%가 스팸입니다. (P(스팸) = 0.4)
  • 스팸 이메일 중 70%에 “무료(free)”라는 단어가 포함되어 있습니다. (P(무료|스팸) = 0.7)
  • 스팸이 아닌 이메일 중 10%에 “무료(free)”라는 단어가 포함되어 있습니다. (P(무료|스팸X) = 0.1)
  • 전체 이메일 중 30%가 “무료(free)”라는 단어를 포함합니다. (P(무료) = 0.3)

이 이메일이 “무료(free)”라는 단어를 포함할 때, 이 이메일이 스팸일 확률은 얼마일까요?

풀이:
베이즈 정리를 사용하여 이메일이 스팸일 확률을 계산할 수 있습니다.

베이즈 정리:

P(스팸|무료) = [P(무료|스팸) * P(스팸)] / P(무료)

여기서,

  • P(스팸|무료) = 이메일이 “무료(free)”라는 단어를 포함할 때 스팸일 확률
  • P(무료|스팸) = 스팸 이메일에서 “무료(free)”라는 단어가 나타날 확률 = 0.7
  • P(스팸) = 이메일이 스팸일 확률 = 0.4
  • P(무료) = 이메일에서 “무료(free)”라는 단어가 나타날 확률 = 0.3

계산해 보면:

P(스팸|무료) = (0.7 * 0.4) / 0.3
= 0.28 / 0.3
= 0.9333 (약 93.33%)

정답:
이메일에 “무료(free)”라는 단어가 포함될 때, 이 이메일이 스팸일 확률은 약 93.33%입니다.

문제 2: 날씨 예측

문제:
어느 날 비가 올 확률을 예측하려고 합니다. 날씨 관련 데이터에서 다음과 같은 정보를 얻었습니다:

  • 전체 날씨 중 20%는 비가 옵니다. (P(비) = 0.2)
  • 비가 올 때 구름이 낄 확률은 80%입니다. (P(구름|비) = 0.8)
  • 비가 오지 않을 때 구름이 낄 확률은 30%입니다. (P(구름|비X) = 0.3)
  • 전체 날씨 중 40%는 구름이 낍니다. (P(구름) = 0.4)

어느 날 구름이 끼었을 때, 비가 올 확률은 얼마일까요?

풀이:
마찬가지로 베이즈 정리를 사용하여 구름이 꼈을 때 비가 올 확률을 계산할 수 있습니다.

베이즈 정리:

P(비|구름) = [P(구름|비) * P(비)] / P(구름)

여기서,

  • P(비|구름) = 구름이 꼈을 때 비가 올 확률
  • P(구름|비) = 비가 올 때 구름이 낄 확률 = 0.8
  • P(비) = 비가 올 확률 = 0.2
  • P(구름) = 구름이 낄 확률 = 0.4

계산해 보면:

P(비|구름) = (0.8 * 0.2) / 0.4
= 0.16 / 0.4
= 0.4 (40%)

정답:
구름이 꼈을 때 비가 올 확률은 40%입니다.

나이브 베이즈의 장단점

나이브 베이즈는 여러 장점을 가지고 있습니다. 우선, 계산이 매우 간단하며, 대규모 데이터셋에서도 효율적으로 작동합니다. 또한, 적은 양의 학습 데이터로도 높은 성능을 발휘하는 경우가 많습니다. 특히 텍스트 분류 문제에서 자주 사용됩니다.

그러나 나이브 베이즈의 단점은 독립성 가정이 실제 데이터에서 잘 성립하지 않을 때 성능이 저하될 수 있다는 점입니다. 예를 들어, 텍스트 데이터에서 단어들은 서로 연관성을 가질 수 있으며, 이러한 연관성을 무시하는 것은 잘못된 결과를 초래할 수 있습니다.

결론

나이브 베이즈는 그 단순함에도 불구하고 강력한 분류 알고리즘으로, 특히 텍스트 분류와 같은 문제에서 널리 사용됩니다. 독립 가정이라는 제한이 있지만, 많은 실제 문제에서 유용하게 사용되고 있으며, 데이터가 적거나 계산 자원이 제한된 상황에서도 좋은 성능을 발휘할 수 있습니다. 이론적으로나 실용적으로 중요한 알고리즘 중 하나입니다.

이 게시물이 얼마나 유용했습니까?

평점을 매겨주세요.

평균 평점 0 / 5. 투표수 : 0

지금까지 투표한 사람이 없습니다. 가장 먼저 게시물을 평가 해보세요.

Leave a Comment

error: 우클릭을 할 수 없습니다.