프로그래머스 DevCouse 인공지능 과정 Week7 - Day1 관련
추가참고자료 : 데이터사이언스 스쿨 수학편 8.7.
베타분포
베타분포의 정의
베타분포는 a와 b라는 두 모수를 가지며, 0과 1 사이의 표본값을 가지는 함수의 형태이다.
베타분포의 확률밀도 함수는 다음과 같다.
여기에서, 감마함수가 사용되는데, 감마함수는 다음과 같이 정의된다.
감마 함수에 대해서 여러 성질이 있지만, 가장 대표적인 성질은 자연수 범위 내에서
임을 쉽게 얻을 수 있다. (부분적분 사용)
베타함수의 기댓값과 분산
이 또한, 연속확률 분포에서의 기댓값, 분산의 정의를 통해 얻어낼 수 있다.
베타분포의 의미
일반적으로 베르누이분포나 이항분포의 경우는, 성공과 실패에 대해서 성공의 횟수에 대한 확률 분포를 고려한다. 그런데, 성공의 비율에 대해서 확률변수를 고려할 수 있는데, 이것이 베타분포이다.
또한 베타분포에서 a와 b는 각각 성공 횟수, 실패 횟수를 의미한다. 베타분포를 통해서 우리가 할 수 있는 일은 현재까지의 성공/ 실패 횟수를 기반으로, 실제 성공률이 어느정도일지 예측할 수 있는 방법이다.
베타분포의 시각화 및 예시
a = 3, b = 2 인 경우를 보자.
# 베타분포의 예시 ( a = 3, b = 2)
import scipy.stats
import matplotlib.pyplot as plt
import numpy as np
plt.plot(figsize = (6, 8))
xx = np.linspace(0, 1, 1000)
plt.title("a = 3, b = 2")
plt.fill_between(xx, scipy.stats.beta(3, 2).pdf(xx))
plt.show()
0.6 근방에서, 나올 가능성이 가장 높음을 알 수 있다.
그러면 a = 30, b = 20으로 늘리면 어떻게 될까?
# 베타분포의 예시 ( a = 30, b = 20)
import scipy.stats
import matplotlib.pyplot as plt
import numpy as np
plt.plot(figsize = (6, 8))
xx = np.linspace(0, 1, 1000)
plt.title("a = 3, b = 2")
plt.fill_between(xx, scipy.stats.beta(30, 20).pdf(xx))
plt.show()
그림을 확인해 본 결과 0.6에서 나올 가능성이 가장 높은 것은 여전하나, 시행 횟수를 늘리면서 예측되는 값의 범위가 좁아짐을 알 수 있다.
예제
어떤 농구선수가, 자유투를 지금까지 50번 던져, 35번 성공했고, 15번은 실패했다고 한다.
이 농구선수가, 자유투를 넣을 확률이 0.8 이상일 확률은?
pdf_beta = scipy.stats.beta(35, 15)
print(1-pdf_beta.cdf(0.8))
다음과 같이 베타함수를 정의하고 누적확률분포를 계산하면 된다. 누적확률분포는 0.8 이하일 확률을 반환하므로, 여사건을 생각해야 한다. 그 결과, 약 5% 정도의 확률이 나오게 된다.
디리클레분포
디리클레분포란?
베타분포에서, 다변수로 확장을 하면 디리클레 분포가 된다.
2 이상의 자연수 k와, 양의 상수 (a1, ... ak)에 대해 디리클레 분포의 확률 밀도 함수를 정의해보자.
각 class 별로의 확률을 xi로 정의할 때,
여기서,
로 주어진다.
K = 2 인 경우는, 베타분포가 된다.
'Archive > 수학 & 통계학 관련' 카테고리의 다른 글
[Data] 선형회귀에서의 변수 선택(AIC, VIF) (0) | 2021.08.07 |
---|---|
[Prob] 베이즈 추정법이란? (0) | 2021.06.08 |
[Cal] Matrix Calculus Review (0) | 2021.06.03 |
[Prob] 우도(가능도) 최대우도 추정법 (0) | 2021.05.27 |
[Stat] 선형회귀분석이란? (0) | 2021.05.26 |