베타 분포로 비율 불확실성을 추정하는 베이즈 모델

베타 분포의 매개변수와 베타-이항 공액성, A/B 테스트·품질·신뢰성 추정에서의 베이즈 의사결정 활용을 정리한다.

2026-08-14 · 최초 발행 2024-04-29

비율 데이터의 불확실성을 분포로 남기는 방법

성공확률, 전환율, 신뢰도처럼 값의 범위가 [0,1]에 머무는 지표는 점 추정만으로 다루기 어렵다. 베타 분포(Beta Distribution)는 이 구간에 정의되는 연속 확률분포로, 비율 자체와 그 불확실성을 함께 모델링한다.

매개변수 α>0, β>0일 때 확률밀도함수는 다음과 같다.

  • f(x; α, β) = 1/B(α,β) · x^(α−1) · (1−x)^(β−1), 0≤x≤1
  • B(α,β)=Γ(α)Γ(β)/Γ(α+β)

기댓값과 분산은 각각 E[X] = α/(α+β), Var[X] = αβ / [(α+β)^2 (α+β+1)]이다. α>1, β>1이면 최빈값은 Mode = (α−1)/(α+β−2)로 구한다.

베타 분포가 베이즈 추정에서 자주 쓰이는 이유는 이항 관측과의 공액성에 있다. 사전분포 Beta(α,β)에 데이터 Binomial(n,k)를 반영하면 사후분포는 Beta(α+k, β+n−k)가 된다. α−1과 β−1은 각각 사전 성공과 실패에 대한 유효 표본수(pseudo-count)로 해석할 수 있다.

매개변수가 만드는 분포의 모양과 해석

α와 β의 조합은 단봉형, U자형, 균등형 등 서로 다른 형태를 만든다. 이 특성 덕분에 비율의 편향과 불확실성을 모델 안에 직접 반영할 수 있다.

업데이트는 α' = α + k, β' = β + (n−k)로 끝난다. 스트리밍 환경에서는 관측값이 들어올 때마다 누적 갱신할 수 있고, 분산 환경에서는 가산성을 이용해 결과를 병합하기 쉽다.

사후분포로부터 평균, 분산, 신뢰구간(credible interval)을 계산할 수 있으며, P(θ>τ)처럼 임계값을 넘을 확률도 바로 의사결정에 사용할 수 있다. 톰프슨 샘플링, 베이즈 밴딧, 베이즈 정지 규칙과 결합하기 좋고 비용-효익 가중 의사결정 규칙에도 적용할 수 있다.

A/B 테스트와 품질·신뢰성 지표에 적용하기

A/B 테스트에서는 각 변이에 대해 성공 k_i와 시도 n_i를 수집한 뒤 Beta(α+k_i, β+n_i−k_i)로 사후분포를 계산한다. 사전분포는 비정보적 α=β=1로 둘 수 있고, 과거 데이터가 있다면 이를 반영할 수도 있다. 이후 신뢰구간과 우월 확률 P(θ_B>θ_A)을 계산해 판단한다.

트래픽 배분에는 톰프슨 샘플링을 사용할 수 있다. 정지 규칙은 P(θ_best − θ_next > δ) ≥ γ에 도달했을 때 실험을 마치는 방식으로 둘 수 있다.

제조 품질에서는 초기 롯트의 결함률 불확실성을 반영하는 데 적합하다. 데이터가 희소한 구간에서 과적합을 줄이고 추정을 안정화할 수 있다. 신뢰성·가용성 추정에서도 부품의 성공확률이나 업타임 비율을 다루며, 고장 데이터가 적을 때 보수적 관리 임계값을 설정하는 데 쓸 수 있다.

관측값을 사후분포와 액션으로 연결하는 흐름

입력값은 사전 파라미터 α>0, β>0과 시도 n ≥ 0, 성공 k ∈ [0,n]이다. 먼저 α,β>0인지, n과 k가 정수 제약 및 범위 조건을 만족하는지 확인한다. 검증 뒤에는 사후분포와 평균·분산·신뢰구간·우월 확률을 산출하고, 결과를 트래픽 배분 또는 정지 판단에 연결한다.

α,β 0 & 0≤k≤n실패톰프슨 샘플링임계기반 정지대규모 α',β'입력: 사전 α,β; 데이터 n,k유효성 검증사후 계산: α'=α+k, β'=β+n−k오류: 파라미터/데이터 검증실패지표 산출: mean, CI, P(θ_iθ_j)의사결정 변이에서 θ~Beta(α',β')샘플링최댓값 변이 선택/트래픽 배분정지: 배치/롤아웃근사: 정규근사/로그공간 계산

α≤0 또는 β≤0이면 파라미터 오류를 반환한다. k<0 또는 n<k는 데이터 무결성 오류다. α',β'가 극단적으로 커져 수치 불안정이 생기면 로그-베타함수와 정규근사를 적용한다.

Python으로 사후분포와 신뢰구간 계산하기

환경은 Python 3.10+, numpy ≥1.24, scipy ≥1.10, matplotlib ≥3.7을 전제로 한다. 설치는 pip install numpy scipy matplotlib로 진행한다.

사후 업데이트와 신뢰구간 계산:

import numpy as np
from scipy.stats import beta

# 사전
alpha, beta_ = 1.0, 1.0   # 비정보적 사전

# 관측 데이터
n, k = 100, 35

# 사후
post_a = alpha + k
post_b = beta_ + (n - k)

mean = post_a / (post_a + post_b)
ci95 = beta.ppf([0.025, 0.975], post_a, post_b)

print(f"Posterior Beta({post_a:.1f}, {post_b:.1f})")
print(f"Mean={mean:.4f}, 95% CI=[{ci95[0]:.4f}, {ci95[1]:.4f}]")

톰프슨 샘플링으로 A/B 의사결정:

import numpy as np
from scipy.stats import beta

# 사전 동일 가정
prior = (1.0, 1.0)

# 변이별 관측 (성공, 시도)
data = {
    "A": (35, 100),
    "B": (42, 100),
    "C": (15, 40),
}

def posterior_params(prior, k, n):
    a0, b0 = prior
    return (a0 + k, b0 + n - k)

# 톰프슨 샘플링
rng = np.random.default_rng(2024)
samples = {}
for arm, (k, n) in data.items():
    a, b = posterior_params(prior, k, n)
    samples[arm] = rng.beta(a, b, size=10_000)

# 우월 확률 계산: 각 변이가 최대일 확률
wins = {arm: np.mean(samples[arm] == np.max(np.vstack(list(samples.values())), axis=0))
        for arm in samples}
print("Win probabilities:", {k: round(v, 3) for k, v in wins.items()})
print("Best arm:", max(wins, key=wins.get))

베타 분포 모양 시각화:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta

x = np.linspace(0, 1, 400)
params = [(0.5, 0.5), (1, 1), (2, 5), (5, 2), (20, 20)]

plt.figure(figsize=(6,4))
for a,b in params:
    plt.plot(x, beta.pdf(x, a, b), label=f"α={a}, β={b}")
plt.legend(); plt.xlabel("θ"); plt.ylabel("density"); plt.tight_layout()
plt.show()

점 추정 방식과 비교할 때의 운영상 차이

방법 계산 성능(단일 업데이트) 확장성(데이터 증가) 일관성(수렴 성질) 안정성(희소 데이터) 운영 편의
베타-베이즈(Beta-Binomial) 매우 높음(O(1)) 우수(가산적 병합) 우수(사전 반영+수렴) 우수(수축 효과) 해석 용이, CI·결정 확률 제공
빈도주의 MLE(p̂=k/n) 매우 높음(O(1)) 우수 우수(대표본) 취약(0/0, 0/1 문제) 단순, 불확실성 표현 제한
라플라스 평활((k+1)/(n+2)) 매우 높음(O(1)) 우수 보통 좋음(희소 완화) 간편, 신뢰구간 별도 계산 필요

베타-베이즈 방식은 불확실성을 정량화하고 의사결정 확률을 제공한다는 점에서 운영 편의성이 높다. 특히 희소 데이터와 콜드스타트 구간에서 안정성 측면의 이점이 뚜렷하다.

표본이 쌓일수록 좁아지는 불확실성

Beta(1,1) 사전에서 n=10, k=3일 때 95% CI는 ≈ [0.066, 0.651]이다. n=100, k=35에서는 95% CI가 ≈ [0.255, 0.452]가 되어 폭이 약 60% 이상 축소된다.

톰프슨 샘플링을 적용하면 누적 후회(cumulative regret)를 줄이고, 동일 실험비용에서 더 높은 총 전환을 기대할 수 있다. 실시간 업데이트와 분산 수집 데이터의 병합도 단순해진다.

P(우월), P(임계 초과), 비용-효익 기대값 같은 지표는 경영자 의사결정에 사용할 수 있다. 희소하거나 불균형한 데이터 환경에서도 보수적이고 일관된 추정을 유지하는 것이 베타 분포 기반 접근의 핵심이다.

베타 분포베이즈 추정A/B 테스트톰프슨 샘플링확률 모델