확률
4–5주차의 확률을 정리한다. 확률의 기본 개념과 법칙에서 시작해 조건부 확률·베이즈 정리, 이산/연속 확률 분포, 기댓값·분산, 그리고 중심 극한 정리로 마무리한다.
확률의 기본 개념
- 확률probability
는 어떤 일이 일어날 가능성을 구간의 수치로 나타낸 것이다( ). 일어날 수 없으면 , 반드시 일어나면 이다. - 표본 공간sample space
는 한 사건event의 모든 가능한 결과outcome를 모은 이산 집합 또는 연속 구간이다. 개별 사건은 의 부분집합, 즉 하나의 표본sample에 해당한다. 예를 들어 동전 던지기의 표본 공간은 이다. - 어떤 사건이 일어날 가능성을 나타내는 값을 가능도likelihood(우도)라 한다. 확률이 사건의 발생 가능성을 나타낸다면, 가능도는 관측된 사건이 주어졌을 때 그 사건이 발생했을 가능성을 나타내는 함수이다.
- 표본 공간에서 특정 확률로 값을 취하는 변수를 확률 변수random variable라 한다. 이산 표본 공간이면 이산 확률 변수discrete random variable(대문자 표기), 연속이면 연속 확률 변수continuous random variable(소문자 표기)이다.
확률 법칙
- 표본 공간의 모든 확률의 합은
이므로, 임의의 사건 에 대해 이고 이다. 사건 의 여사건complementary event 확률은 다음과 같다.
- 두 사건이 동시에 일어날 수 없으면 상호 배반적mutually exclusive, 한 사건이 다른 사건의 발생 여부에 영향을 주지 않으면 독립적independent이라 한다.
- 합의 법칙sum rule은 "
또는 "의 확률, 곱의 법칙product rule은 " 그리고 "의 확률을 다룬다.
- 사건
의 발생을 조건으로 한 의 확률을 조건부 확률conditional probability 라 한다. 두 사건이 종속dependent일 때 곱의 법칙은 다음과 같으며, 일반적으로 이다.
- 표본 공간을 서로소disjoint인 영역
로 나눈 것을 분할partition이라 한다. 이때 의 전체 확률total probability은 다음과 같다.
생일 역설birthday paradox
한 해를
결합 확률과 주변 확률
- 결합 확률joint probability
는 여러 조건이 동시에 참일 확률이고, 주변 확률marginal probability은 다른 변수의 값과 무관하게 한 부분집합에 대해서만 계산한 확률이다. 주변 확률은 다른 변수의 모든 값에 대해 합산해 구한다. - 예를 들어
명의 남녀별 색맹 여부를 정리한 결합 확률표joint probability table에서 처럼 주변 확률을 구한다. - 곱의 법칙을 일반화한 것을 확률의 연쇄법칙chain rule for probability이라 한다.
베이즈 정리
- 결합 확률의 대칭성
과 로부터 베이즈 정리Bayes' theorem를 얻는다.
베이즈 정리
사후 확률posterior probability
- 암 진단 예제. 무작위로 뽑은 40대 여성의 유방암 보유 확률
, 유방암이 있을 때 검사 양성 확률 , 없을 때 양성 확률 이 주어진다. 주변 확률과 사후 확률은 다음과 같다.
- 다른 병원에서 재검사도 양성이면, 앞의 사후 확률을 새로운 사전 확률로 삼아 갱신한다.
이고 로, 증거가 쌓일수록 믿음의 정도가 커진다. - 베이즈 정리는 단순 베이즈 분류기naïve Bayes classifier의 기반이다. 분류명class label
와 특징 벡터feature vector 에 대해, 주변 확률을 무시하면 다음 비례식이 성립하며, 모든 특징이 독립이라 가정해 결합 확률을 개별 확률의 곱으로 근사한다.
python
# 베이즈 정리로 유방암 진단 확률을 반복 갱신
p_bc = 0.008 # 사전확률 P(bc+)
p_pos_given_bc = 0.9 # P(+ | bc+)
p_pos_given_no = 0.07 # P(+ | bc-)
def update(prior):
marg = p_pos_given_bc*prior + p_pos_given_no*(1 - prior) # 주변확률 P(+)
return p_pos_given_bc*prior / marg # 사후확률 P(bc+ | +)
post1 = update(p_bc) # 1차 양성 결과 반영
post2 = update(post1) # 2차 양성 결과 반영
print(f"사전확률 P(bc+) = {p_bc:.4f}")
print(f"1차 양성 후 사후확률 P(bc+|+) = {post1:.4f}")
print(f"2차 양성 후 사후확률 P(bc+|+) = {post2:.4f}")확률 분포
- 확률 분포probability distribution는 미리 정의된 확률에 따라 무작위로 값을 생성하는 함수이다. 주사위처럼 각 값이
의 균등한 확률로 나오는 분포를 균등 분포uniform distribution라 한다. - 이산 확률 분포discrete probability distribution는 확률 질량 함수probability mass function로 규정된다. 대표적인 이산 분포는 다음과 같다.
- 이항 분포binomial distribution는 확률
인 사건을 번 시행trial할 때 번 발생할 확률이다. 인 특수 사례special case가 베르누이 분포Bernoulli distribution이다. 푸아송 분포Poisson distribution는 평균 발생 횟수 만 알 때 유용하다. - 연속 확률 분포continuous probability distribution에서는 특정 한 값이 선택될 확률이
이며, 확률은 구간에 대한 적분integration으로 계산된다. 확률 밀도 함수probability density function가 이를 규정한다. 대표적인 연속 분포는 다음과 같다.
- 정규 분포normal distribution(가우스 분포Gaussian distribution, 종 곡선bell curve)는 평균mean
와 표준편차standard deviation 로 정해지는 대칭 곡선이다. 감마 분포gamma distribution는 형태shape 와 규모scale , 베타 분포beta distribution는 로 다양한 모양을 만든다.
python
import numpy as np
from math import comb
# 이항 분포 B(10, 0.5) 의 확률 질량 함수
n, p = 10, 0.5
pmf = [comb(n, k) * p**k * (1-p)**(n-k) for k in range(n+1)]
print("이항분포 B(10, 0.5) pmf:")
for k in range(n+1):
print(f" P(X={k:2d}) = {pmf[k]:.4f}")
print("확률의 합 =", round(sum(pmf), 6))
# 시뮬레이션으로 이론 평균(np) 확인
rng = np.random.default_rng(0)
s = rng.binomial(n, p, size=100000)
print(f"표본평균 = {s.mean():.4f} (이론 평균 np = {n*p})")python
import numpy as np
from math import exp, factorial
# 푸아송 분포 (λ=3) 의 확률 질량 함수
lam = 3.0
pmf = [lam**k * exp(-lam) / factorial(k) for k in range(10)]
print("푸아송 분포 (λ=3) P(k):")
for k in range(10):
print(f" P({k}) = {pmf[k]:.4f}")
# 푸아송 분포는 평균과 분산이 모두 λ 이다
rng = np.random.default_rng(1)
s = rng.poisson(lam, size=100000)
print(f"\n표본평균 = {s.mean():.3f}, 표본분산 = {s.var():.3f} (둘 다 λ=3 에 근접)")기댓값 · 분산 · 극한 정리
- 확률 변수
의 기댓값expectation과 분산variance은 다음과 같이 정의된다(이산의 경우 합, 연속의 경우 적분).
- 예를 들어 이항 분포는
, 이고, 푸아송 분포는 이다. - 중심 극한 정리central limit theorem는, 원래 분포의 형태와 무관하게 표본 평균들이 이루는 분포가 점점 정규 분포에 가까워진다는 정리이다. 이는 표본 크기가 클수록 표본 평균이 모평균에 가까워진다는 큰 수의 법칙law of large numbers과는 다르다. 큰 수의 법칙은 하나의 표본 평균과 모평균의 관계를, 중심 극한 정리는 여러 표본 평균들의 분포를 말한다.
python
import numpy as np
# 중심 극한 정리: 베르누이(p=0.5) 표본의 평균을 여러 번 계산하면 정규분포에 근접
rng = np.random.default_rng(2)
N, reps = 30, 20000
means = rng.binomial(1, 0.5, size=(reps, N)).mean(axis=1) # 각 행이 표본평균 하나
print(f"표본평균들의 평균 = {means.mean():.4f} (모평균 0.5)")
print(f"표본평균들의 표준편차 = {means.std():.4f}")
print(f"이론적 표준오차 sqrt(pq/N) = {np.sqrt(0.25/N):.4f}")
# 정규분포라면 약 68.3% 가 ±1σ 안에 든다
lo, hi = means.mean() - means.std(), means.mean() + means.std()
frac = np.mean((means > lo) & (means < hi))
print(f"±1σ 안에 든 비율 = {frac:.3f} (정규분포면 ≈ 0.683)")