본문 바로가기

부스트캠프 AI Tech/AI_Math

[08] 베이즈 통계학

조건부 확률

  • 베이즈 통계학의 이해를 위해서는 조건부확률 개념 이해 필요

$$
P(A \cap B) = P(B)P(A|B)
$$

  • 조건부확률 $P(A | B)$는 사건 B가 일어난 상황에서 사건 A가 발생할 확률

$$
P(A|B) = \frac{P(A \cap B)}{P(B)}
$$

  • $P(A|B)$는 A given B
  • 베이즈 정리는 조건부확률을 이용해 정보를 갱신하는 방법

$$
P(A \cap B) = P(B)P(A|B)
$$

$$
P(B|A) = \frac{P(A \cap B)}{P(A)} = P(B) \frac{P(A|B)}{P(A)}
$$

  • A라는 새로운 정보가 주어졌을 때, $P(B)$로부터 $P(B|A)$를 계산하는 방법 제공

베이즈 정리

$$
P(\theta | \mathcal{D}) = P(\theta) \frac{P(\mathcal{D} | \theta)}{P(\mathcal{D})}
$$

  • $\mathcal{D}$는 새로 관찰하는 데이터, $\theta$는 hypothesis로 모델링하는 이벤트, 모델에서 계산하고 싶은 parameter (모수)

  • 사전확률 (prior) $P(\theta)$ : 데이터 분석하기 전 모수, 가설, hypothesis, 모델링하고자 하는 타겟에 대해 미리 가정, 모델링 하기 이전 설정한 확률분포
    • 데이터 주어지지 않은 상황에서 $\theta$에 대한, 모델링하기 이전 사전에 주어진 확률
  • Evidence $P(\mathcal{D})$ : 데이터 자체(전체) 분포
  • 가능도 (likelihood) $P(\mathcal{D}|\theta)$ : 현재 주어진 파라미터에서 이 데이터 관찰될 확률 계산
  • 사후확률 (posterior) $P(\theta | \mathcal{D})$ : 데이터 관찰했을 때/주어졌을 때, 이 hypothesis가 성립할 확률
    • 데이터를 관찰한 이후 측정하는 확률
  • 즉, 사전확률 → 사후확률로 update

베이즈 정리 : 예제 1

COVID-99의 발병률이 10%로 알려져있다. COVID-99에 실제로 걸렸을 때 검진될 확률은 99%, 실제로 걸리지 않았을 때 오검진될 확률이 1%라고 할 때, 어떤 사람이 질병에 걸렸다고 검진결과가 나왔을 때 정말로 COVID-99에 감염되었을 확률은?

$$
P(\theta | \mathcal{D}) = P(\theta) \frac{P(\mathcal{D} | \theta)}{P(\mathcal{D})}
$$

$$
P(\theta | \mathcal{D}) = P(\theta) \frac{P(\mathcal{D} | \theta)}{P(\mathcal{D})}
$$

$$
P(\theta) = 0.1 \quad P(\mathcal{D}|\theta) = 0.99 \quad P(\mathcal{D} | \neg\theta) = 0.01
$$

  • 순서대로 사전확률과 가능도가 주어져있다
  • 사전확률 $P(\theta)$는 실제 데이터 관측하기 이전 발병률
  • 가능도 $P(\mathcal{D}|\theta)$는 실제로 걸렸을 때($\theta$, hypothesis), 검진된 경우($\mathcal{D}$)로 관찰된 경우
  • $\theta$를 COVID-99 발병 사건으로 정의(관찰 불가)하고, $\mathcal{D}$를 테스트 결과라고 정의(관찰 가능)한다

$$
P(\mathcal{D}) = \sum_{\theta}P(\mathcal{D} | \theta)P(\theta) = 0.99 \times 0.1 + 0.01 \times 0.9 = 0.108
\
P(\theta|\mathcal{D}) = 0.1 \times \frac{0.99}{0.108} \approx 0.916
$$

  • 여기서 마지막 0.9는 $P(\neg \theta)$이다
  • 만일 $P(\mathcal{D}|\neg\theta)$를 모른다면 이 문제는 풀기 어렵다
  • likelihood 이용 → marginal distribution, 조건부확률의 정의

베이즈 정리 : 예제 2

  • 만일 오검진될 확률(1종 오류)이 1%가 아닌 10%인 경우

$$
P(\theta) = 0.1 \quad P(\mathcal{D}|\theta) = 0.99 \quad P(\mathcal{D} | \neg\theta) = 0.1
$$

$$
P(\mathcal{D}) = \sum_{\theta}P(\mathcal{D} | \theta)P(\theta) = 0.99 \times 0.1 + 0.1 \times 0.9 = 0.189
\
P(\theta|\mathcal{D}) = 0.1 \times \frac{0.99}{0.189} \approx 0.524
$$

  • 오탐율(False alarm)이 오르면 테스트의 정밀도(Precision)이 떨어진다

조건부 확률의 시각화

  • confusion matrix

  • True Positive: 양성이 나왔을 때 실제 질병 걸린 경우
  • True Negative: 음성이 나왔을 때 실제로 질병에 걸리지 않은 경우
  • False Positive (1종 오류): 양성이 나왔을 때 실제로 병에 걸리지 않은 경우
  • False Negative (2종 오류): 음성이 나왔는데 실제로는 질병에 걸린 경우
  • 데이터 분석 성격에 따라 1종 오류 vs 2종 오류 어떤 것을 줄이는게 중요할지 민감
    • 의료문제에서는 False Negative (2종 오류) 신경써야 한다
  • $P(\theta)$ 사전확률 : data 분석 전 사전에 주어진 정보, 이거 없이는 베이즈 통계학 분석 어렵다

  • 정밀도 $\uparrow$

베이즈 정리를 통한 정보의 갱신

  • 베이즈 정리를 통해 새로운 데이터가 들어왔을 때 앞서 계획한 사후확률을 사전확률로 사용해, 갱신된 사후확률 계산 가능

$$
P(\theta | \mathcal{D}) = P(\theta) \frac{P(\mathcal{D} | \theta)}{P(\mathcal{D})}
$$

  • $P(\theta)$에 이전에 계산한 사후확률 $P(\theta | \mathcal{D})$를 넣어서 갱신된 사후확률 계산
    • $\theta$ (hypothesis, model parameter) 점점 update

앞서 COVID-99 판정을 받은 사람이 두 번째 검진을 받았을 때도 양성이 나왔을 때 진짜 COVID-99에 걸렸을 확률은?

$$
P(\theta|\mathcal{D}) = 0.1 \times \frac{0.99}{0.189} \approx 0.524
$$

$$
P(\mathcal{D}|\theta) = 0.99 \quad P(\mathcal{D} | \neg\theta) = 0.1
$$

$$
P(\mathcal{D}^*) = 0.99 \times 0.524 + 0.1 \times 0.476 \approx 0.566
$$

  • $P(\mathcal{D}^*)$는 갱신된 evidence
  • likelihood는 그대로 둔다

$$
P(\theta|\mathcal{D}^*) = 0.524 \times \frac{0.99}{0.566} \approx 0.917
$$

  • $P(\theta|\mathcal{D}^*)$는 갱신된 사후확률
  • 꽤 높은 precision이 나오고, 세 번째 검사에도 양성이 나오면 정밀도가 99.1%까지 갱신된다
  • 베이즈 정리의 장점: 데이터 새로 들어올 때마다 사후확률 update 가능

조건부 확률 → 인과관계?

  • 인과관계 : A가 B의 원인인가?
  • 조건부 확률은 유용한 통계적 해석을 제공하지만 인과관계(causality)를 추론할 때 함부로 사용해서는 안된다
  • 데이터가 많아져도 조건부 확률만 가지고 인과관계를 추론하는 것은 불가능
  • 인과관계는 데이터 분포의 변화에 강건한 예측모형을 만들 때 필요
  • 단, 인과관계만으로는 높은 예측 정확도를 담보하기는 어렵다 (강건하지만 전체적으로 엄청 높은 90%는 여기서 안나온다)

  • 조건부확률 기반 예측 모형
    • 유입되는 데이터 분포 바뀜 → 시나리오에 따라 예측확률 크게 변함
    • 데이터 분포 바뀌면
      1. 데이터 유입되는 상황 다르거나
      2. 새로운 정책 도입
      3. 새로운 치료법 도입
  • 인과관계를 알아내기 위해서는 중첩요인 (confounding factor)의 효과를 제거하고 원인에 해당하는 변수만의 인과관계를 계산해야 한다

  • Z의 효과를 제거하지 않으면 가짜 연관성 (spurious correlation)이 나온다
  • 이는 예측모형에서 데이터 분포, 모델 변화 생겼을 때 예측모델의 성능 떨어뜨리는 가장 큰 요인 될 수 있다
  • 예를 들어, Z - 나이, T - 키, R - 지능지수라고 하면
    • 나이의 효과를 제거하지 않으면 키가 커짐에 따라 지능지수가 증가하는 가짜 연관성이 나온다
    • 따라서 나이에 따른 키 연관관계를 제거해야 한다

인과관계 추론 : 예제

  • a는 개복 시술, b는 주사 시술
  • 조건부확률만 가지고 계산해서는 안된다
  • 치료법 a와 b중 어떤 게 나은가?
    • Overall을 보면 b가 더 낫지만, stones 크기에 따른 비교를 보면 b가 a보다 항상 안좋은 결과를 나타낸다
  • 신장결석 크기에 따른 a, b의 중첩효과를 제거해야함ㄴ 정확한 치료법에 따른 완치율 계산 가능

Treatment a

do$(T=a)$라는 조정(intervention) 효과를 통해 Z의 개입을 제거한다
$$
P^{\mathfrak{C}a}(R=1) = \sum{z \in {0, 1}} P^{\mathfrak{C}}(R=1 | T=a, Z=z)P^{\mathfrak{C}}(Z=z)

= \frac{81}{87} \times \frac{(87 + 270)}{700} + \frac{192}{263} \times \frac{(263+80)}{700} \approx 0.8325
$$

Treatment b

$$
P^{\mathfrak{C}b}(R=1) = \sum{z \in {0, 1}} P^{\mathfrak{C}}(R=1 | T=b, Z=z)P^{\mathfrak{C}}(Z=z)

= \frac{234}{270} \times \frac{(87 + 270)}{700} + \frac{55}{80} \times \frac{(263+80)}{700} \approx 0.7789
$$

  • 조건부확률로 계산한 치료효과와 정반대의 결과가 나오게 된다
  • 중첩효과 제거 → 더 믿을만한 결과
    • 안정적인 정책분석, 예측모형의 설계 가능
    • 데이터에서 추론할 수 있는 사실관계들, 데이터가 생성되는 관계들, domain 지식 활용
    • 변수들 간 관계 실제로 파악을 해야만 인과관계 추론 가능
    • robust 모델 만들 때 중요하다
  • 즉, 중첩효과를 제거한 인과관계를 고려한 분석이 중요!

'부스트캠프 AI Tech > AI_Math' 카테고리의 다른 글

[07] 통계학  (0) 2022.01.17
[06] 확률론  (0) 2022.01.16
[05] 딥러닝 학습방법 이해하기  (0) 2022.01.16
[04] 확률적 경사하강법 SGD  (0) 2022.01.15
[03] 경사하강법  (0) 2022.01.15