Warm-up
Session(N112)
- 베이지안은 정보를 "update" 해서 결과에 반영하는 인공지능의 핵심!
- 베이지안은 B라는 추가 정보를 바탕으로 한 A의 확률 = P(A | B)
- TPR : True Positive Rate (= 민감도, true accept rate) 1인 케이스에 대해 1로 잘 예측한 비율.(암환자를 암이라고 진단 함)
- FPR : False Positive Rate (= 1-특이도, false accept rate) 0인 케이스에 대해 1로 잘못 예측한 비율.(암환자가 아닌데 암이라고 진단 함)
- 손풀이
- 코드구현
# 베이지안 계산을 위해서는 4개의 변수가 필요합니다.
p_pos_used = 0.99 # True positive rate (TPR, Sensitivity)
p_used = 0.005 # prior probability
p_pos_not_used = 0.01 # False positive rate (FPR)
p_not_used = 1 - p_used # 1 - p_used
numerator = p_pos_used * p_used
denominator = (p_pos_used * p_used) + (p_pos_not_used * p_not_used)
posterior_probability = numerator / denominator
posterior_probability # 0.33221476510067116
# 두 번째
p_pos_used = 0.99 # TPR
p_used = 0.332 # prior probability
p_pos_not_used = 0.01 # FPR
p_not_used = 1 - p_used # 1 - p_used
numerator = p_pos_used * p_used
denominator = (p_pos_used * p_used) + (p_pos_not_used * p_not_used)
posterior_probability = numerator / denominator
posterior_probability #0.980081106870229
# 세 번째
p_pos_used = 0.99 # TPR
p_used = 0.98008 # prior probability
p_pos_not_used = 0.01 # FPR
p_not_used = 1 - p_used # 1 - p_used
numerator = p_pos_used * p_used
denominator = (p_pos_used * p_used) + (p_pos_not_used * p_not_used)
posterior_probability = numerator / denominator
posterior_probability #99.979%
# p_value = 1 - posterior_probability
- 신뢰구간
import numpy as np
from scipy import stats
coinflips = np.random.binomial(1, 0.5, 20)
def confidence_interval(data, confidence = 0.95):
"""
주어진 데이터의 표본 평균에 대한 신뢰 구간을 계산합니다.
기본 값으로 t-분포와 양방향 (two-tailed), 95%의 신뢰도를 사용합니다.
입력 값 :
data - 여러 개로 이루어진 (list 혹은 numpy 배열) 표본 관측치
confidence - 신뢰구간을 위한 신뢰도
반환 되는 값:
(평균, 하한, 상한구간)으로 이루어진 tuple
"""
data = np.array(data)
mean = np.mean(data)
n = len(data)
s = data.std(ddof = 1)
stderr = s / np.sqrt(n)
print(stderr)
t = stats.t.ppf( (1 + confidence) / 2.0 , n - 1)
margin_of_error = t * stderr
interval = stderr * stats.t.ppf((1 + confidence) / 2.0, n - 1)
return (mean, mean - interval, mean + interval)
confidence_interval(coinflips)
# 0.1094243309804831 (0.35, 0.12097224312031754, 0.5790277568796824)
# scipy
# https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.bayes_mvs.html#scipy.stats.bayes_mvs
mean_CI, _, _ = stats.bayes_mvs(coinflips, alpha = .95) # mean , variance, std
# mean_cntr, var_cntr, std_cntr
mean_CI
- 사전확률 = P(A), 사후확률 = P(A), data/likelihood = P(B|A)
Quiz Coding
- 손코딩
Challenge
알아두면 좋은 사이트
[인덱스] 코드 스테이츠 AI 부트캠프
배우는 내용 Section 1. 데이터 분석 입문 SPRINT 1. EDA SPRINT 2. Statistics SPRINT 3. 선형 대수 PROJECT DAY 1 EDA 데이터 전처리 Pandas in Colab 가설 검정 (t-test) T-Test 행렬 및 벡터 Game Sales 데이..
da-journal.com
소감
일본에서는 베이즈정리라고 했는데... 그 때도 조건부라는 말이 진짜 어려웠는데.....
그래도 다시 본다고 쪼옴 낫당....ㅎ 넘나 흥미로움!
AI 과정을 하면 할 수록 처음부터 이 길로 올 걸이란 생각을 강하게 함.
'[코드스테이츠]AI' 카테고리의 다른 글
[AI 부트캠프]3주차 총 복습 (0) | 2022.04.26 |
---|---|
[AI 부트캠프]2주차 총 복습 (0) | 2022.04.11 |
[S1-Week2]Confidence Interval (0) | 2022.04.06 |
[S1-Week2]Hypothesis Test 2 (0) | 2022.04.06 |
[AI 부트캠프]1주차 총 복습 (0) | 2022.04.01 |
댓글