Coding/Python / 베이즈 정리.md

베이즈 정리

조회

베이즈 정리는 두 확률 변수의 사전 확률과 사후 확률사이의 관계를 나타내는 정리이다. 뭔 개소리임? ㅈㅅ 나도 이해를 못했음. 사전 확률(기존 믿음)과 새로운 정보(증거)를 결합하여 사후 확률(갱신된 믿음)을 계산하는 확률론적 방법이라고 하는데 이것도 확 와닿는 얘기는 아니었습니다.

 

이거 공식은 되게 심플... 할수도 있고 아닐수도 있음.

공식이 이게 다인데 보통 P(B)는 안준다. 그래서 저걸 또 전확률의 정리? 그걸 써서 구해야된다. 근데 저 바는 뭔데요? 조건부확률(P(A|B) = 어떤 사건(B)이 이미 일어났다는 전제 하에, 다른 사건(A)이 일어날 확률)이다. 그 생선님이 유튜브에 올린거 보면 비유를 개찰떡으로 해놨는데 봅시다. 

 

어떤 게임의 가챠 확률표에서 SSR 확률이 0.001%이고 SSR 캐릭터가 다섯일 때 전체 캐릭터 풀에서 내가 원하는 SSR이 나올 확률하고 SSR을 뽑았을 때 내가 원하는 SSR이 나올 확률하고 다르잖아요. 전체 확률에서 내가 원하는 쓰알을 뽑을라면 0.001에 1/5을 곱해야되지만 이미 쓰알을 뽑았을때는 쓰알들 '중에서' 하나 내가 원하는거 딱 나오면 되니까 1/5지.

 

비슷하게 소드실드 5성 2% 미로치 확정굴도 '5성이 떴을때' 2%인 조건부확률이다. 그래서 실제 확률은 진짜 낮기때문에 날짜를 돌려가면서 그 개노가다를 하는 것이다. 시드 계산인가 있지 않냐고? 이벤굴은 그거 안된다.

# 베이즈 정리: 어떤 사건이 서로 배반하는 원인 둘에 의해 일어난다고 할 때 실제 사건이 일어났을 때 이것이 두 원인 중 하나일 확률을 구하는 정리
# 공식: P(A|B) = P(B|A) * P(A) / P(B)

# P(A): 사전확률
# P(B): 주변 우도(marginal likelihood)
# P(A|B): B의 값이 주어졌을 때 A의 사후 확률(여기서 구해야 하는 거))
# P(B|A): A가 주어졌을 때 B의 조건부 확률
# P(B|not A): A가 주어지지 않았을 때 B의 조건부 확률

# 함수 매개변수: P(A), P(B|A), P(B|not A) 순서대로 입력해주세요 
def bayes_theorem(prior, sensitivity, false_positive):
    
    # P(B)
    # P(B) = P(B|A) * P(A) + P(B|not A) * P(not A) (전확률의 정리인가 있음 아무튼)
    marginal_likelihood = (prior * sensitivity) + ((1 - prior) * false_positive) # P(B)를 계산해야 함
    
    # P(A|B)
    # P(A|B) = P(B|A) * P(A) / P(B) (위에 공식 써있음)
    posterior = (prior * sensitivity) / marginal_likelihood
    return posterior

result = bayes_theorem(0.01, 0.95, 0.05)
print(f"P(A|B): {result:.2%}")

그래서 이게 전체 코드인데... 나는 텍스트 ''로 쓰는데 제미나이는 ""로 쓰데...? 안티그래비티 자동완성도 그렇고...

댓글

홈으로 돌아가기

검색 결과

"search" 검색 결과입니다.