스킬캠퍼스

오늘 끝나면

나이브 베이즈

  • 나이브 베이즈의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 나이브이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

단어 확률 계산해서 어디 속하는지 분류 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

통계 · 19

나이브
베이즈

메일 속 단어 확률을 쭉 곱해서 어느 쪽인지 가린다.
스팸에서 잘 나오는 단어가 있고, 정상에서 잘 나오는 단어가 있다.
곱이 더 큰 쪽이 정답이다.

P.01통계 · 19

베이즈에 '순진한' 가정을 더함

나이브 베이즈는 베이즈 정리로 분류하는 방법이다.
새 메일이 스팸일 확률과 정상일 확률을 비교한다.

베이즈 정리는 이렇게 말한다.
P(스팸|단어들) ∝ P(스팸) × P(단어들|스팸)

문제는 P(단어들|스팸)이다.
단어 묶음 전체의 확률은 경우의 수가 폭발해서 셀 수 없다.

그래서 순진한(naive) 가정을 넣는다.
단어들이 서로 독립이라고 가정한다.
그러면 묶음 확률이 각 단어 확률의 곱으로 쪼개진다.

P(클래스|단어들) ∝ prior × ∏ 우도
묶음 확률을 곱으로 쪼개기
못 세는 묶음 확률

P(무료, 당첨, 계좌 | 스팸)

단어 독립 가정 (naive)
곱으로 쪼갠다

P(무료|스팸)
× P(당첨|스팸)
× P(계좌|스팸)

경우의 수가 폭발하니 단어별 확률 곱으로 단순화한다
P.02통계 · 19

단어마다 클래스별 확률을 학습

학습은 단순하다. 단어가 각 클래스에서 얼마나 자주 나오는지 센다.

스팸 메일을 모아 ‘무료’가 든 비율을 세면 P(무료|스팸)이 나온다.
정상 메일에서도 똑같이 세면 P(무료|정상)이 나온다.

무료와 당첨은 스팸 쪽 확률이 높다.
회의와 첨부는 정상 쪽 확률이 높다.
이 확률표가 모형의 전부다.

한 단어도 안 본 경우엔 확률이 0이 되어 곱 전체가 0이 된다.
그래서 실무에선 작은 값을 더해준다(라플라스 평활).

무료·당첨은 스팸에 / 회의·첨부는 정상에
학습된 단어별 클래스 확률
무료스팸 0.7 · 정상 0.05
스팸 쪽으로 기운다
당첨스팸 0.65 · 정상 0.03
스팸 쪽으로 기운다
계좌스팸 0.5 · 정상 0.08
스팸 쪽으로 기운다
회의스팸 0.06 · 정상 0.45
정상 쪽으로 기운다
안녕스팸 0.2 · 정상 0.6
정상 쪽으로 기운다
첨부스팸 0.1 · 정상 0.4
정상 쪽으로 기운다
파란 칸 = 스팸 우도 비중
P.03통계 · 19

단어 확률을 곱해 점수를 냄

켠 단어마다 스팸 우도와 정상 우도를 prior에 차례로 곱한다.
스팸곱과 정상곱, 두 점수가 나온다.

무료나 당첨 같은 단어를 켜면 스팸곱이 커져 확률이 급등한다.
회의나 안녕 같은 단어를 켜면 정상곱이 커져 확률이 내려간다.

실제론 아주 작은 확률을 여러 번 곱해 값이 0으로 깔린다.
그래서 곱 대신 로그를 더하는 식으로 계산한다(언더플로 방지).

켠 단어들의 우도를 실시간으로 곱함
나이브 베이즈 · 스팸 판별기
입력, 메일에 든 단어를 켜 본다

↑ = 스팸에 자주, ↓ = 정상에 자주. 단어를 켤수록 곱이 한쪽으로 쏠린다.

출력, 스팸일 확률
93.3%
정상 ←판정: 스팸→ 스팸
베이즈 곱, prior에 우도를 차례로 곱함
×스팸×정상
prior0.50.5
무료0.70.05
= 곱3.50e-12.50e-2

스팸일 확률 = 스팸곱 / (스팸곱 + 정상곱) = 93.3%. 더 큰 쪽으로 분류한다.

P.04통계 · 19

더 그럴듯한 클래스로 분류

마지막은 비교다. 스팸곱과 정상곱 중 큰 쪽으로 분류한다.

확률 %로 보려면 정규화한다.
P(스팸) = 스팸곱 / (스팸곱 + 정상곱)

가정은 거칠다. 실제로 ‘무료’와 ‘당첨’은 같이 잘 나온다(독립이 아니다).
그래도 분류 정답에는 잘 먹힌다.

빠르고 가볍고 단어 많은 텍스트에 강하다.
스팸 필터와 문서 분류의 오래된 기본기다.

Q. 나이브 베이즈에서 순진한(naive) 가정이란?단어(특성)들이 서로 독립이라고 보는 가정이다.
덕분에 묶음 확률을 각 단어 확률의 곱으로 쪼갤 수 있다.
실제론 거칠지만(단어들은 보통 함께 나온다) 분류엔 잘 작동한다.
두 점수를 정규화 → 큰 쪽이 정답
예: ‘무료 + 당첨’ 든 메일
스팸곱2.27e-1
정상곱7.50e-4
↓ 정규화
스팸일 확률
99.7%
스팸으로 분류한다
큰 쪽이 정답이고, 스팸곱이 압도적이다

3줄 요약

  1. 1단어 확률 계산해서 어디 속하는지 분류
  2. 2나이브 베이즈은 분포 → 표본 → 검정 → 회귀 → 모델 선택 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

나이브

단어 확률 계산해서 어디 속하는지 분류

분포

데이터가 어떤 모양으로 퍼져 있는지 나타낸 것

표본

전체를 알기 위해 뽑아 본 일부 데이터