상세 컨텐츠

본문 제목

The RED : 우버처럼 하는 머신러닝 의사결정 by 정종빈 (베이지안 확률, Bayesian, Prior, Likelihood, posterior)

일을 하고

by emje 2023. 3. 27. 23:06

본문

 

 

Part 2-3. 불확실성과 데이터 - 베이지안 확률

✔️ 2.11 베이지안 확률모형

*새로운 접근법으로 불확실성을 계량화하는 방법

베이지안은 절대적 진리를 감안하지 않으므로 추정량/추정치가 관심사가 아님
오직, 확률에 대한 나의 믿음에 더 강조 포인트가 있음

 

누군가가 안드로이드 유저일 확률에 대한 나의 믿음(Prior)이 있고 내가 관찰한 데이터 (Likelihood)를 기반으로 했을 때
나의 믿음이 어떻게 달라지느냐? 💥새로운 믿음💥

 

[베이지안 확률모형]
1. (확률적인) 관심변수에 대한 믿음(prior)으로 시작. 
<> 빈도주의의 관심변수, 절대적 진리 p는 확률적이지 않고 전수조사하면 나오는 절대적인 숫자.
*prior는 절대적이지 않음

2. (불확실하지 않은) 데이터의 관측
<> 빈도주의는 절대적인 진리로부터 파생되는 데이터이고, 이 데이터가 불확실했음. 그러므로 여러 개의 평행우주에서 경험하면다른 데이터가 나올 것이라는 가정 하에 접근을 했었음
*베이지안 확률모형은 내가 본 데이터는 절대적으로 변하지 않는 데이터, 평행우주는 존재하지 않음!
내가 사는 이 세상에 데이터가 있고 그것에 따라서 내 믿음이 바뀔 수도 있고, 미래에 다른 데이터 보면 그건 또 다른 데이터니까 그 때 가서 믿음이 바뀔 수도 있고....

 

3. 데이터 관측의 가능성(Likelihood) 고려
*이 둘을 연결짓는 고리는 내가 세상에 갖고 있는 믿음에 따라서, 내가 볼 수 있는 데이터의 가능성이 달라짐
e.g 라스베이거스에서 누가 동전을 가지고 나옴, 이 동전이 앞면이 나올 확률이 얼마나 될 것 같아? 라고 물었을 때 
학교에서 배운대로 걍 50%라고 믿음(Prior) + 그리고 데이터가 주어짐 (동전을 던졌더니 앞면이 한 번 나옴) 
믿음을 기반으로 한다면 앞면이 나올 확률 50%, 
믿음에 따라서 관측되는 데이터의 가능성을 측량...?


4. 관심변수에 대한 믿음 업데이트 ( posterior)
우리가 데이터를 이용해서 기존에 가졌던 믿음을 새롭게 업데이트 함 (posterior, 사후확률분포)
e.g 동전의 예시로 들어가자면

앞면/뒷면 확률 50%겠지! 계속 던지는데 20번, 40번, 100번 던졌는데 계속 앞면만 나옴.

 

 

 

[베이지안 확률모형: 손계산의 예]

1. 관심변수에 대한 믿음(Prior)로 시작
2. 데이터의 관측
3. 데이터 관측의 가능성(Likelihood) 고려

4. 관심변수에 대한 믿음 업데이트! (posterior)
*베이지안 확률의 핵심, 0이나 1 (0%나 100%의 확률에 확신을 가져서는 안됨) 

 

 

 

 

불확실성의 순서를 바꾸기!
애플왓치 유저라는 것을 알았을 때 > 핸드폰 기종이 무엇일까?

사전믿음에서 출발해서 데이터의 가능성을 추출하고, 그걸 뒤집어서 관심변수에 대한 믿음을 업데이트.

 

 

✔️ 2.12 연습문제 풀이

#연습문제 1.

#연습문제 2. 몬티 홀 문제의 확률 계산
#연습문제 3. 
회사에서 A, B, C 세 명이 승진 후보자
세 명 중 한 명만 다음주 승진이 확정됨
A(=여러분)는 
- 셋 다 승진할 확률이 똑같다고 생각 (각 1/3)
- 매니저한 각별한 친분, "B나 C 중 누가 떨어졌나요?" 물어더니, 매니저 왈: "B는 확실히 승진 못 해."
그 말을 들은 후 A가 생각하는
- 본인이 승진할 확률
- C가 승진할 확률(이 더 높을 것 같음, 몬티홀에서 두 번째 선택지로 들어가서 살아남았던 문의 확률이 더 높았던 것처럼)

 

 

 

#연습문제 1. 풀이

 

#연습문제 2. 풀이

*사회자가 꽝인 문을 열었다, 라는 가정 하에 > 사회자의 이 행동이 정보를 준 것임
*정보가 어디서 왔느냐, 어떤 정보가 있느냐가 핵심!

 

 

#연습문제 3. 풀이

몬티홀이랑 똑같아서 C가 승진할 확률 2/3, 내가 승진할 확률 1/3 아닌감? (오 맞았슴...!)

*여기서도 매니저가 사회자와 동일한 정보를 줌: B가 꽝이다, 그럼 C는 꽝이 아닐 확률이 올라감

 

연습문제 3 변형: "B가 승진하나요?" 

NO 라고 했을 때 A와 C에 대한 동일한 조건이므로 1/2


연습문제 3: "C와 B중에 누가 승진하나요?"
B는 못 해 라고 했을 때, C에 대한 선택지가 더 좁아짐 (=승진할 확률이 더 높아짐)

 

 

✔️ 2.13 Computational Bayes 컴퓨터를 활용한, 수리적인 베이즈 확률모형

수식 경고! 불필요한 수식이나 수학 울렁증을 불러일으킬 수 있는 것들을 피했는데, 이제 기호를 쓰는 것이... 이해에도 도움이 되고 실무에서도 베이지안을 활용하려면 수식을 써야 함ㅠ 간단하게 손계산으로 배운 것들이 어떻게 일반적으로 쓰이는 수학적 기호와 표현에 맵핑이 되는지를 보여드리고 소개할 예정... 조금만 노력해서 이해해봅시다 (ㅠ)

 

 

 

*표기가 사람마다/페이퍼마다 달라서 어려울 수 있음. 정확하게 정의하고 배워야 함.
P(X) X라는 확률변수가 가질 수 있는 모든 값에 대한 확률분포
P(X=x) X라는 확률변수가 x라는 구체적인 값을 가질 확률
P(Y=y | X=x) 조건부확률
X라는 확률변수가 x라는 구체적인 값을 가졌을 때
Y라는 확률변수가 y라는 구체적인 값을 가질 확률

Likelihood&nbsp;확률분포에 대한 가정을 해놓고 그 가정 하에서 데이터에 대한 가능성을 생각하는 것

 

 

Posterior &nbsp;데이터가 주어졌다고 가정하고, 그 세상에서 관심있었던 p에 대한 확률을 다시 생각해보자

 

posterior는 prior와 likelihood를 곱해서 나온 숫자

P(p)P(w|p)

P(p|w)]=P(p)P(w|p)/C

정확한 숫자보다 크고 작음만 비교하고 싶다면, C라는 상수를 빼고 계산한다면... 비중을 나타낼 수 있음

P(p|w) 비례 P(p)p(w|p)

*시뮬레이션을 통해 복잡한 사후확률분포(posterior)도 추정 가능
(Approximate) Computational Bayes

샘플링하는 예쁜 방법...(ㅎㅎㅎ)
데이터를 모으면 모을수록 histogram이 실제 우리가 알고 싶은 분포(실선)에 가까워짐...

우리가 알고 싶은 사후확률분포를 sampling을 통해서 likelihood와 prior을 곱해서... (아앜...)

 

 

https://bioinformaticsandme.tistory.com/47

 

베이지안 이론 (Bayesian theory)

베이지안 이론 (Bayesian theory) Start.BioinformaticsAndMe 1. 빈도 확률(Frequentist probability) vs 베이지안 확률(Bayesian probability)-빈도 확률(Frequentist probability)> '동전의 앞면' 이 나올 확률은 어떻게 구할까? 우

bioinformaticsandme.tistory.com

 

✔️ 2.14 (조금) 복잡한 확률 모형

조금 복잡한 손으로 계산이 어려운 모형들을 살펴볼 예정
-
지하철로 돌아가서...
관심변수: 핸드폰이 안드로이드일 확률 (p)
*관심변수를 0에서 1사이의 값을 가질 것이라는 가정 하에


Beta, 정규분포 + 변형 (e.g., logistic)
**적분했을 때 1이 나와야 한다?
**Beta 분포, 정규분포의 변형 (logistic함수로 변형시키면 +- 무한대를 0~1값으로 변형...)

Beta: 두 개의 파라미터 a, b; 평균은 a/(a+b)

 

e.g 핸드폰이 안드로이드일 확률에 대해서 얘기할 때

저 사람에 대한 정보가 전혀 없을 때, a와 b를 1로 설정할 수 있음

아무것도 모르겠다 Beta(1,1)
대충 반반쯤 되지 않나? Beta(2,2)
0.5보다는 좀 큰가? Beta(3,2)

 

10번 중 6번이 성공했다 > 이항분포 (Binomial)

두 개의 파라미터 N: 시행 횟수, p: 성공확률 (우리의 prior)

 

사후분포 계산하기

p라는 관심있는 parameter가 베타분포를 따르고, (Beta) 

우리가 관찰한 데이터 X는 이항분포를 따른다 (Binomial)

위계질서가 생기면서 hierarchical 모형이라고도 함!

 

 

 

그래서 어떻게 계산하는지?

컴퓨터 시뮬레이션으로 계산할 수 있음

software pkg, library가 있음

Computational Bayesian Inference

 

✔️ 2.15 코딩 실습

[1]
import numpy as np

import pymc3 as pm
import seaborn as sns

[2] 
n_obs=10
n_android=6

사후분포 계산하기

p라는 관심있는 parameter가 베타분포를 따르고, (Beta) 

우리가 관찰한 데이터 X는 이항분포를 따른다 (Binomial)

- 10번 중 6번이 성공했다 > 이항분포 (Binomial)

- 두 개의 파라미터 N: 시행 횟수, p: 성공확률 (우리의 prior)

[3]
with pm.Model() as model:
p=pm.Beta("P", alpha=1, beta=1)
X=pm.Binomial("X", n=n_obs, p=p, obserbed=n_android)


sampling
with model:
posterior=pm.sample(Draws=4000, tune=2000)

 

 

[5]

ps=posterior.p

len(ps)

8000

 

[6]

array([0.554...

 

빈도주의 얘기할 때 Bootstrap을 통해서 표본분포를 추정했었음 (짝퉁 표본분포)

추정량을 가지고, 추정량을 여러 개의 평행우주에서 동시에 실행했더라면 어땠을까를 추정하는 것
<> 사후분포는 실제 p값에 대한 확률 분포

histogram을 그리면 Bootstrap처럼 모양이 나오는데
p값에 대한 우리의 믿음이기 때문에

 

p값이 0.5보다 클 확률을 계산할 수 있음

혹은 이 p값 자체의 평균을 계산할 수도 있음

혹은 중간값도 계산할 수 있음

[9] (ps > 0.5)

[10] ps.mean()

[11] np.median(ps)
[12] np.percentile(ps, q=(2.5, 97.5))
*신뢰구간이 아님, 아무 상관 없음. 단지 95%의 확률로 p값이 저 사이에 떨어질 것이라고 믿는다. 라고 할 수 있음
신뢰구간은 무한히 많은 평행우주 중에서 95% 정도에서는 이렇게 계산하는 구간들이 실제 p값을 포함할거다 
훨씬 더 복잡한 이야기. 베이지안은 사후분포 계산했으면 실제 p값이 저기에 떨어진다고 말할 수 있음, 실제 p값에 대한 분포이니까.

 

안드로이드일 확률을 70% 정도로 놓으면
8000개의 샘플

평균이 확연히 올라가고 (70%에 가까워지게) 

평균이 50%보다 높아지고...

 

기존의 믿음은 70%였는데 데이터를 보니까 오히려 줄었음

데이터만 믿자면 60%가 맞음 (10명 중 6명이 안드로이드 유저였으니까)

근데 우리는 원래 70%라고 믿었으니까 

사후 믿음은 그 중간 정도인 65% 정도로...!


안드로이드에 걸면 손해볼 확률도 계산해볼 수 있음

bet=1e4

earnings=bet*ps-bet*(1-ps)

ps는 실제 확률분포, 안드로이드가 나올 확률에 대한 우리의 믿음을 표현한 것

 

sns.histplot(earnings)
(earnings<0).mean()

 

손해볼 확률 몇 퍼 이상이면 내기 안할건지?

사후 분포에서는 손해볼 확률 8% 정도 되는데...

개인적으로 나는 5% 넘으면 안할래! 라고 결정했다면,,.?

베이지안을 쓰면, 강점 및 단점은 실제 결정을 대면해야 한다는 것!
내가 데이터를 보기 전에 알고 있는 것이 얼마나 되는지 생각해서

사전분포에 대한 정보를 채우고 사후분포가 나온 후에 어떻게 할지 결정해야 함! 

 

 

✔️ 2.16 Analytical Solution

의사결정 모형을 소개하고 불확실성을 계량화하는 방법 중
(1) 빈도주의 통계: Estimand, estimator, estimate, 신뢰구간, bootstrap
(2) 베이지안 확률: Prior, likelihood, posterior, 손계산 > 복잡한 모델링

*오늘도 수식 경고 (ㅎ.ㅎ)
반드시 알아야 하는 중요한 내용은 아니지만 베이지안을 다뤘다고 하면 알아야 하는 내용!

 

P는 Beta로 X는 Bionomial로.

Conjugate priors 관계가 있음!

 

상수는 버리고 상수가 아닌 부분만 계산함

 

정리

Prior: Beta(a,b)

Likelihood: Binomial(N,p)

"성공"횟수가 s인 경우
Posterir: Beta(a+s, B+(N-s))

 

지하철의 예. 아무것도 모르는 상태 (a=1, b=1)에서

N=10명 중 s=6명이 안드로이드 유저인 걸 봤으면,
사후분포는 Beta(7,4)을 따름. 평균은 7/(7+4)=0.64

> Beta-Binomial conjugate prior

 

 

[Conjugate prior] 그럼에도 불구하고 컴터 시뮬이 더 빠름

conjuagte prior

 

Part 2-4. 1부 마무리

✔️ 2.17 빈도주의와 베이지안의 관계

빈도주의와 베이지안에 대한 선호를 밝히는 경우도 있고,

대립하는 것처럼 설명하기도 했지만 실무에서는 둘 다 필요하고 연관이 없지 않음

사전정보가 전혀 없다면 사후분포는 온전히 데이터로부터 추론이 되는 것이고,
그럼 빈도주의와 베이지안 접근 방법이 크게 다르지 않음
데이터의 likelihood가 빈도주의에서 말하는 generate process와 유사해짐

 

사전정보가 있더라도 압도적으로 많다면, 사후분포와 유사하게 결과가 나오므로
두 개의 접근법이 완전히 다르다고 할 수는 없음

 

다만 두 개의 접근법을 공부하면 더 넓게 의사결정과 불확실성을 생각할 수 있음!

 

[베이지안의 강점]

사전 정보가 중요할 때, 데이터가 적을 때 

데이터는 많지만 실무에서 우리에게 진짜 필요한 데이터는 없을 수도 있음

e.g 구글에서 광고 가격을 세팅하거나 사람들이 얼마나 클릭할지를 예측한다고 했을 때
인구별로 다 조사한다고 가정해보면?
빅데이터 시대고 인터넷에서 광고를 보는 수억명의 데이터를 갖고 있어도
내가 해야하는 일의 specific한 일의 데이터는 적을 수도 있음

 

어느 수준에서는 우리가 이미 알고 있는 정보가 있고, 상식이 있음

e.g 앞/뒷면이 있는 동전을 두 번 던져서 앞면이 두 번 나왔다고 했을 때

절대적인 빈도주의의 경우 앞면이 나올 확률이 1이야 라고 하는 것이 맞음

베이지안의 입장에서는 동전이라는 사전정보에 의해서 1보다는 0.5에 아직 더 가깝지 않을까?

 

베이지안의 강점은 알고 있는 것에 비해 객관적인 데이터는 무엇인지를 비교해서

다방면으로 활용할 수 있음!

[베이지안의 약점]

정밀하게(precise)생각하지 못할 때

진짜 아는 것과 모르는 것을 구분하고 명료하게 생각할 수 있어야 함.

분석가와 의사결정자의 능력과 판단력이 중요하게 작용함!

 

 

[포괄적인 접근의 필요]

결론적으로는 내가 당면한 과제를 잘 풀기 위해서

여러가지 방법을 총동원해서 풀어보겠다! 라는 태도가 중요함

 

빈도주의 기법이 알려주는 결과가 "말이 되는지?"

나의 assumption들이 완전히 틀린걸까?

 

베이지안의 경우 빈도주의적 입장에서,

내가 말하고 있는 prior가 여러 개의 평행우주에서 반복시행한다면

frquency에 의해서 입증될 수 있을까

즉 내 경험에 의한 사전정보가 진짜 신뢰할 수 있는 걸까?

 

💥크첵! 크로스체크가 필요하다💥

공통적인 난제: 데이터는 어디로부터 왔는가?

어떻게 생성되었고, 어디로부터 왔는지를 분명하게 알아야 함.

 

✔️ 2.18 연습 문제

[데이터 소개]

- 한 기업에서, 국제 시장 진출을 위해 10개 나라 (A, B, ...)를 대상으로 100일간 제품 시범 운영

- 각 나라마다 진출 후보 도시의 숫자가 다름

 

데이터는 3개의 column이 있음

county_id, city_id, profit (100개의 observation, 100일간의 이윤)

#총 도시의 숫자 143

#국가별 도시의 갯수가 다름

A=20, B=9, C=8, D=14...

 

데이터는 각[국가, 도시]마다 100일간 관찰한 순수익(=이윤, profit)

 

Q1. 국가별 평균 수익률을 계산하고 95% 신뢰구간을 계산

국가에서 나올법한 이윤이 있고 표준편차가 각각 있음

분산이 각각 있는 정규분포를 따름

국가 전체에서 똑같은 샘플링
A. Bootstrap을 이용해서 해보기

Q2. 결과를 본 임원들 왈: "평균이 제일 높은 나라 하나에 100% 진출하자!"

사내 유일한 데이터 사이언티스트로 당신의 반응/제안은?
- (나..) 100일이면 약 3개월, 12개월(1년)의 1/4로 시즈널리티 등의 변수가 고려되지 않았음

Q3. 임원들 왈: "그러면 통계적으로 유의미하게 이윤이 $10,000 이상인 도시에만 진출하자!"

신뢰수준 95%에서 추정 이윤이 $10,000 이상인 도시 찾기

 

4. 이전 결과대로 시장 진출할 경우 우려는?

 

5. 베이지안 확률모형으로 각 도시의 이윤에 대한 사후 확률 분포를 계산해보기

- 현재 강의 내용만으로는 진행이 어려울 수 있음
- 비슷한 다른 예제를 참고하며 배울 수 있는 기회

 

 

연습문제 풀이는??????????

대박 따로 메일하면 1개월에 한 번씩 메일이나 영상으로 답변... 우와... 9_9

관련글 더보기

댓글 영역