베이지안 통계(1)
베이즈 정리 기초 개념 및 Python 구현
- 확률(probability) : 유한한 집합에서의 비율
-
조건부 확률: 조건에 따른 확률
– 예: 한 응답자가 은행원일 때, 여성일 확률P(여성|은행원)
– 모든 은행원을 골라낸다. 이 중 여성의 비율을 구한다.- [중요] 조건부 확률은 교환 가능하지 않다.
- 한 응답자가 은행원일 때 여성일 확률과 한 응답자가 여성일 때 은행원일 확률은 같지 않음.
P(여성|은행원) != P(은행원|여성)
베이즈 정리
- 베이즈 정리
P(A|B) = P(A)*P(B|A) / P(B)
-
사건 B가 발생함으로써(사건 B가 진실이라는 것을 알게 됨으로써, 즉 사건 B의 확률 P(B)=1이라는 것을 알게 됨으로써) 사건 A의 확률이 어떻게 변화하는지를 표현한 정리. 베이즈 정리는 새로운 정보가 기존의 추론에 어떻게 영향을 미치는지를 나타낸다. (출처: 데이터 사이언스 스쿨)
-
문제를 해결하는 데에 완벽한 데이터를 가지고 있다면 베이즈 정리는 필요 없음. 하지만 완전한 데이터를 항상 가질 수 없으므로, 베이지 정리가 유용하게 사용될 수 있음. (특히 데이터 수가 적을 때 유용함.)
-
- 통시적 베이즈: 데이터 일부 D가 주어졌을 때, 가설 H의 확률을 갱신하는 방법
-
‘통시적’ : 시간에 따라 변한다
-
P(H|D) = P(H)*P(D|H) / P(D)
P(H)
는 데이터를 확인하기 전에 구한 가설의 확률로, 사전확률이라고 한다.P(H|D)
는 데이터를 확인한 후의 가설 확률로, 사후확률이라고 한다.P(D|H)
는 가설 하에서 해당 데이터가 나올 확률로, 가능도(우도)라고 한다.P(D)
는 어떤 가설에서든 해당 데이터가 나올 확률로, 데이터의 전체확률이라고 한다.
-
- 베이즈 갱신(Bayesian Update): 데이터와 사전확률을 사용해서 사후확률을 구하는 과정
예제: 쿠키 문제
- 첫 번째 그릇(그릇 A)에는 바닐라 쿠키 30개와 초콜릿 쿠키 10개가 들어있다.
-
두 번째 그릇(그릇 B)에는 바닐라 쿠키와 초콜릿 쿠키가 20개씩 들어있다.
- 전체 쿠키 중에서 쿠키를 하나 집었을 때 그 쿠키가 바닐라 쿠키였다면, 이 바닐라 쿠키(V)가 그릇 A(Bowl_A)에서 나왔을 확률은 얼마인가?
– 그릇 A라는 조건 하에서 바닐라 쿠키를 꺼낼 조건부 확률: P(V|Bowl_A)
– 그릇 B라는 조건 하에서 바닐라 쿠키를 꺼낼 조건부 확률: P(V|Bowl_B)
– P(Bowl_A|V) = P(Bowl_A)*P(V|Bowl_A) / P(V)
– P(Bowl_A)
: 어떤 쿠키를 골랐던 상관없이 그릇 A를 골랐을 확률. 그릇을 임의로 선택했으므로 1/2이다.
– P(V|Bowl_A)
: 그릇 A에서 바닐라 쿠키를 고를 확률로, 3/4
– P(V)
: 각 그릇에서 바닐라 쿠키를 고를 확률
– P(Bowl_A|V) = (1/2)*(3/4) / (5/8) = 3/5
- 쿠키 문제 베이즈 갱신: Python 코드 구현
import pandas as pd
table = pd.DataFrame(index=['Bowl_A', 'Bowl_B'])
# 사전확률
table['prior'] = 1/2, 1/2
# 가능도(우도) - 바닐라 쿠키가 A와 B 그릇에서 각각 나올 확률
table['likelihood'] = 3/4, 1/2
# 표준화되지 않은 사후확률: 사전확률과 가능도의 곱
table['unnorm'] = table['prior'] * table['likelihood']
# 전체확률
prob_data = table['unnorm'].sum()
# 사후확률 (표준화, 전체 합이 1)
table['posterior'] = table['unnorm'] / prob_data
# 전체 표 출력
print(table)
- 결과 표 확인
prior likelihood unnorm posterior A 0.5 0.75 0.375 0.6 B 0.5 0.50 0.250 0.4
-
결과 표를 보면, Python 코드를 통해 확인한 전체 쿠키 중에서 쿠키를 하나 집었을 때 그 쿠키가 바닐라 쿠키였다면, 이 바닐라 쿠키(V)가 그릇 A(Bowl_A)에서 나왔을 확률은 0.6으로,
-
위에서 공식으로 구한 값과 동일한 것을 알 수 있다.
출처
- 앨런 B. 다우니 (2022) <파이썬을 활용한 베이지안 통계(2판)>. 한빛미디어. (원서명: Think Bayes)
- 데이터 사이언스 스쿨