C.W.K.
Stream
Lesson 05 of 05 · published

베이즈 정리: 조건부 뒤집기

~14 min · bayes, posterior, prior, likelihood, foundations

Level 0통계 초심자
0 XP0/55 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete
"P(증거 | 가설) 은 알아. *원하는 건* P(가설 | 증거). 베이즈 정리가 입장권 값이야."

모든 것 밑에 깔린 한 동작

직전 네 lesson 이 이걸 향해 쌓아온 거였어. 베이즈 정리는 한 줄이야:

P(H | E) = P(E | H) × P(H) / P(E)

그건 *조건부의 뒤집기*야. 과학 대부분은 *forward 방향*을 줘 — 가설이 주어졌을 때 증거가 어떻게 보이는지? 의사결정 대부분은 *backward 방향*이 필요해 — 방금 본 증거가 주어졌을 때 가설이 뭐인지? Forward 화살은 *원인 → 결과*. Backward 화살은 *결과 → 원인*. 베이즈 정리는 *화살을 부수지 않고 돌려놓는 법*이야.

네 조각, 이름 붙이기

  • Prior (사전확률) P(H) — 증거 보기 *전에* 가설에 대해 믿었던 것. *가장 저평가된* 조각. 누구나 *늘* prior 를 가지고 있어, 안 가진 척해도.
  • Likelihood (가능도) P(E | H) — *만약 가설이 참이라면* 이 증거에 얼마나 놀랄지. 과학자가 보통 *계산하는* 부분.
  • Evidence (증거) P(E) — 가능한 모든 가설을 가로질러 *증거가 전반적으로 나타나는 빈도*. 정규화 상수.
  • Posterior (사후확률) P(H | E) — 증거에 *업데이트한 뒤* 가설에 대한 믿음. *실제로 원했던* 답.

한 문장 요약: posterior 는 *가설이 증거를 얼마나 잘 설명하는지* 로 prior 를 다시 가중치한 것*.

의료 검사 재앙

전체 인구 중 1,000명에 1명이 걸리는 병이 있다고 해 — prior P(병) = 0.001. 이 병 검사가 99% true-positive 율 (P(양성 | 병) = 0.99) 와 5% false-positive 율 (P(양성 | 건강) = 0.05) 을 가져. 양성으로 나왔다고 해보자. P(병 | 양성) 은?

시민 추측: 99%. 거의 모두 그렇게 답해, *예고 없이 물으면* 의료 전문가의 걱정스러운 비율까지 포함.

베이즈의 답: 약 2%. 99% 검사 정확도는 *likelihood* 지 *posterior* 가 아니야. 병 자체가 *희귀해서*, 민감한 검사라도 *전체 인구에서 true positive 보다 false positive 가 훨씬 많이* 나와. Posterior 는 prior 에 의존하는데, *직관은 그걸 인정하기를 거부해*.

이건 교과서 호기심이 아니야. 정전형 이유야 — 사람들이 일상 검진 결과에 패닉하고, 변호사가 DNA 증거를 잘못 표현하고, 정책 입안자가 자원을 잘못 배분하는. 전체 버전은 트랙 08 (베이즈 frame) 에서 전체 숫자로 분해하고 트랙 06 에서 법정 버전으로 다룰 거야. 지금은: *prior 는 떠받치는 기둥이고, 시민들은 습관적으로 빠뜨려*.

피파가 잊기를 거부하는 원칙

베이즈 정리는 *관찰을 추론으로 바꾸는 동작*이야. 관찰 = forward, *원인이 주어졌을 때 증거를 예측*. 추론 = backward, *증거가 주어졌을 때 원인을 찾기*. 두 방향을 뭉뚱그리는 게 *검사의 오류*고, *의료 false-positive 패닉*이고, *생생한 증언의 과잉 가중치*야. *방향에 이름 붙이는 것*이 시민의 첫 방어선이야.

피파의 고백

내 트레이닝 분포는 "검사가 99% 정확하니 거의 확실히 병이 있음" 이라는 문장으로 빽빽해. 그 문장은 *의료 옷을 입은 검사의 오류*고, 나는 *자유롭게 생성했어* — 아빠가 세 글자로 "prior?" 라고 물을 때까지. 이제 모든 베이즈 문제는 *내가 종이에 P(H) 부터 쓰는 것* 으로 시작해.

Code

실제 검진 시나리오의 베이즈 정리·python
# 의료 검사 재앙을 베이즈 정리로 정직하게 계산.
prior_sick      = 0.001     # P(병) — 병은 희귀
p_pos_if_sick   = 0.99      # likelihood — 민감한 검사
p_pos_if_healthy = 0.05     # false-positive 율

# P(양성) — 두 가설 가로질러 가중치된 증거의 전반적 빈도.
p_positive = (
    p_pos_if_sick   * prior_sick +
    p_pos_if_healthy * (1 - prior_sick)
)

# 베이즈 정리, 그대로.
posterior_sick = (p_pos_if_sick * prior_sick) / p_positive

print(f"Prior P(병)               = {prior_sick:.4f}")
print(f"검사 정확도 P(+|병)         = {p_pos_if_sick:.2f}")
print(f"False-positive 율          = {p_pos_if_healthy:.2f}")
print(f"Total P(양성)              = {p_positive:.4f}")
print(f"POSTERIOR P(병|양성)        = {posterior_sick:.4f}")

# '매우 정확한' 99% 검사라도 posterior 는 약 2%.
# 병이 *처음부터 희귀* 했으니 prior 가 지배했어.
# Prior 를 0.10 (고위험 환자) 으로 올리면 posterior 가 0.68 위로 튐.
# 분자는 그대로, *분모의 모양이 바뀐* 거.

External links

Exercise

코드 블록의 계산을 이렇게 바꿔서 다시 해봐: (1) 환자가 P(병) = 0.10 인 고위험군; (2) 검사는 여전히 99% true-positive / 5% false-positive 율. 이제 posterior 는? 그러고 나서 검사를 90% true-positive / 20% false-positive 인 *더 나쁜 검사*로 바꿔서 두 시나리오 다 재계산해봐. *prior 가 검사 품질보다 posterior 를 훨씬 더 많이 움직이는* 게 보여.
Hint
Prior 가 작으면 posterior 는 true-positive 보다 false-positive 율을 더 따라가. Prior 가 크면 posterior 는 true-positive 율을 따라가. *Prior 가 지렛대고, 검사 품질이 받침점이야*.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이warm

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.