본문 바로가기
[코드스테이츠]AI

[S1-Week2]Bayesian

by b___gly 2022. 4. 7.

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

댓글