재형이의 성장통 일지
  • 베이즈 정리, 평균과 기댓값, 분산과 표준편차, 공분산
    2024년 02월 03일 16시 45분 04초에 업로드 된 글입니다.
    작성자: 재형이
    반응형
     
     
    • 선수지식으로 확률과 통계를 공부하고 있는데 패스트캠퍼스 강의 특성상 엄청 딥하게 들어가지는 않기 때문에 추가적인 부분은 개인적으로 공부를 해야할 것 같다.
    • 요즘 들어 느끼는 건데 직장을 다니면서 공부를 하려고 하다보니 평일은 3~4시간이 최선인 것 같고 주말을 정말 잘 활용해야 겠다는 생각이 든다.
    • 아자 아자, 오늘도 화이팅~⭐

     

     


     

     

    1. 베이즈 정리

    • 베이즈 정리란, 조건부확률을 구하는 공식이다.
    • 베이즈 정리를 이용하면, 다양한 확률 문제를 해결할 수 있다.

    • 베이즈 정리 공식: 𝑃(𝐴|𝐵) = 𝑃(𝐵|𝐴)𝑃(𝐴)/𝑃(𝐵)
    • [베이즈 정리 유도]
      조건부 확률 정의: 𝑃(𝐴|𝐵) = 𝑃(𝐴, 𝐵)/𝑃(𝐵) → 𝑃(𝐴,𝐵) = 𝑃(𝐴|𝐵)𝑃(𝐵)
      마찬가지로, 𝑃(𝐵|𝐴) = 𝑃(𝐴,𝐵)/𝑃(𝐴) → 𝑃(𝐴,𝐵) = 𝑃(𝐵|𝐴)𝑃(𝐴)
      따라서 𝑃(𝐴,𝐵) = 𝑷(𝑨|𝑩)𝑷(𝑩) = 𝑷(𝑩|𝑨)𝑷(𝑨)
      그러므로, 𝑃(𝐴|𝐵) = 𝑃(𝐵|𝐴)𝑃(𝐴)/𝑃(𝐵)
    • 베이즈 정리는 머신러닝 분야에서 끊임없이 등장하는 개념이므로 중요하다.
    • 나이브 베이즈 분류기 (Naïve Bayes Classifier)에서 사용된다.
    • 최신 인공지능 기술보다 성능은 많이 뒤떨어지지만 기본적인 모델로 자주 언급된다.

    1-1. 확률 모델 (Probabilistic Models)

    • 일반적인 분류 모델 𝑃(𝑦|𝑥)은 다음과 같은 공식으로 예측 결과 $\hat{y}$를 계산한다.
    • $\hat{y} = ar \, gmax_{y} P(y|x)$

    1-2. 황금 법칙 (Golden Rule)

    • 텍스트 𝑥가 주어졌을 때, 이 텍스트는 어떤 클래스(𝑦)로 분류될까
    • $ar\, gmax_{y}P(y|x) = ar\, gmax_{y} P(x|y)P(y)/P(x) = ar\, gmax_{y} P(x|y)P(y)$
    • 이 상황에서 텍스트 𝑥는 주어진 것일 뿐 고려대상이 아니다.
      따라서 분모에 해당하는 𝑃(𝑥)를 고려하지 않아도 된다.
      → 이런식으로 P(x)가 생략이 되는 경우를 논문에서 확인할 수 있는데 당황하지 말자
      → 이런걸 황금 법칙이라고 함

    1-3. 최대 우도 추정 (Maximum Likelihood Estimation)

    • 가능도(likelihood)가 가장 높은 클래스를 선택하는 방법이다.
    • 𝑋는 특징(feature) 혹은 데이터를 말한다.
    • 𝑋 = 광고성 단어의 개수(“특가” 등)라고 해보자.
    • 현재 예시에선 𝑋 ≥ 5라면 스팸으로 분류하면 된다

    1-4. 최대 우도 추정 시 유의할 점

    • 우리는 사후 확률(posterior)을 직접적으로 계산하기 어렵기 때문에 가능도를 이용한다.
    • 하지만 가능도만으로 사후확률을 완전히 근사할 수 없다.

    • 만약 𝑝𝑟𝑖𝑜𝑟가 균등분포(𝑢𝑛𝑖𝑓𝑜𝑟𝑚 𝑑𝑖𝑠𝑡𝑟𝑖𝑏𝑢𝑡𝑖𝑜𝑛)를 따르지 않는다면?
    • 전체 메일 중에서 스팸 메일의 수 자체가 적다고 하자.
    • 𝑃(𝑌 = 스팸) = 1/3, 𝑃(𝑌 = 햄) = 2/3
    • 분포는 어떻게 바뀔까?

    • 애초에 스팸 메일의 수 자체가 적다보니 스팸 메일이 나올 확률이 줄어들게 될 것이고, 그래프가 위에처럼 변화한다

    2. 평균과 기댓값

    2-1. 평균 (Mean)

    • 평균에는 다양한 종류가 있으며, 가장 일반적인 평균은 산술 평균이다.
    • 산술 평균(arithmetic mean): 모든 관측 값을 더해 관측 값의 개수로 나눈 것이다.
      $A = \frac{1}{n} \sum_{i=1}^n a_{i} = \frac{a_{1} + a_{2} + \cdots + a_{n}}{n}$

    2-2. 특정한 집단을 대표하는 값

    • 그렇다면 평균은 특정한 데이터를 대표하는 값을 적절할까?
    • 그렇다고 보기 힘든게 특정 인원이 높은 값을 가지고 있는 경우에는 전체의 평균값이 올라가버리기 때문에 평균값이 특정한 집단을 대표한다고 보기 힘들다.
    • 예시) 6학년 1반의 평균키를 계산하려고 할 때, 서장훈이라는 친구가 6학년임에도 불구하고 키가 180이 넘는다면?

    2-3. 중앙값 (Median)

    • 중앙값(median): 주어진 값들을 순서대로 정렬했을 때, 가장 중앙에 위치하는 값이다.
    • 예를 들어 3, 5, 100이 있을 때 평균은 36이지만, 중앙값은 5이다.

    2-4. 평균(Mean) vs. 중앙값(Median)

    • 평균(mean)과 중앙값(median)은 각각 어떤 상황에서 효과적일까?
    • 평균: 데이터의 분포가 정규분포처럼 대칭적인 경우
    • 중앙값: 데이터의 분포가 한쪽으로 치우쳐졌거나(skewed), 이상치(outlier)가 존재하는 경우

      평균(mean) 중앙값(median)
    사용 사례 일반적으로 정규 분포를 따르는 데이 터에 사용된다 일반적으로 비대칭 분포(skewed distribution)에서 사용된다
    특징 이상치(outlier)에 영향을 많이 받아 값이 크게 변할 수 있다 이상치(outlier)에 대하여 강건한 (robust) 값의 형태를 띤다
    계산 방법 모든 값을 더한 뒤에 값의 개수로 나누기 정렬 이후에 중간에 위치한 값 채택

    2-5. 기댓값 (Expectation)

    • 각 사건에 대해 확률 변수와 확률 값을 곱하여, 전체 사건에 대하여 모두 더한 값이다.
    • $E[X] = \sum_{i} \mbox{{(i번째 사건이 발생할 확률) x (i번째 사건에 대한 확률 변수)}}$
    • 사실상 기댓값은 산술 평균과 유사하며, 실제로 두 용어를 섞어서 사용하곤 한다.
    • 이산확률변수에 대한 기댓값 공식
      $E[X] = \sum_{i} x_{i} \cdot f(x_{i})$
    • 연속확률변수에 대한 기댓값 공식
      $E[X] = \int_{-\infty}^{\infty} x \cdot f(x)dx, \quad \mbox{x:사건 f(x): 확률분포함수}$

    2-5. 평균(Mean) vs. 기댓값(Expectation)

    • 평균과 기댓값은 그 의미가 유사하지만, 일반적으로 사용되는 문맥이 다르다.
    • 기댓값: 새로운 데이터가 관측되었을 때, 그 데이터가 확률적으로 어떤 값을 가질지를 예측할 때
    • 평균: 이미 구해진 값에 대하여 통계적인 특성을 분석할 때

    3. 분산과 표준편차

    • 분산과 표준편차란 데이터가 얼마나 퍼져있는지 모여져 있는지를 보여주는 지표이다

    3-1. 분산 (Variance)

    • 평균과 관측치에 대하여 편차(difference) 제곱의 평균 값을 의미한다
    • 𝑁개의 데이터의 평균(mean) 값 𝜇가 주어졌을 때, 분산은 다음의 공식으로 계산할 수 있다
    • 분산(variance) 공식 : $\frac{1}{N}\sum_{i=1}^{N} \left | x_{i} - \mu \right | ^{2}$
    • 편차는 평균과의 차이이므로, 편차를 모두 더하면 단순히 0이 되어버린다.
    • 그래서 편차를 단순히 더하지 않고, 제곱해서 더한다.
    • 분산이 작을 때: 각 데이터가 평균에 가까울수록 (평균에 근접할수록)
    • 분산이 클 때: 각 데이터가 평균에서 멀수록 (퍼져있을 수록)

    3-2. 표준편차(Standard Deviation)

    • 분산은 편차의 제곱을 사용하기 때문에 기존에 분산이 매우 큰수라면 값이 매우 매우 커져버린다
    • 그래서 제곱하여 커졌던 값을 다시 원래의 크기로 "표준화"를 하기 위해 제곱근을 취해준다
    • 표준편차 공식 : $\sqrt{\frac{1}{N}\sum_{i=1}^{N} \left | x_{i} - \mu \right | ^{2}}$
    학생 번호 1번 2번 3번 4번 5번 평균 분산 표준 편차
    성적 56 93 88 72 65 74.80 192.56 13.88
    import math
    
    arr = [56, 93, 88, 72, 65]
    
    mean = 0
    for x in arr:
    	mean += x / len(arr)
        
    variance = 0
    for x in arr:
    	variance += ((x - mean) ** 2) / len(arr)
        
    std = math.sqrt(variance)
    
    print(f"평균: {mean:.2f}")
    print(f"분산: {variance:.2f}")
    print(f"표준 편차: {std:.2f}")

    4. 공분산과 상관계수

    4-1. 공분산 (Covariance)

    • 확률 변수가 하나일 때에 대해서 분산(variance)을 계산할 수 있었다.
    • 만약 변수가 여러 개일 때(다변수 확률분포)의 분산은 어떻게 계산할 수 있을까?
    • 공분산(covariance)의 공식은 다음과 같다
      $s_{xy} = \frac{1}{N} \sum_{i=1}^{N} (x_{i} - \mu_{x})(y_{i} - \mu_{y})$
    • 분산과 마찬가지로, 데이터가 평균으로부터 얼마나 멀리 떨어져 있는지를 나타낸다
    • 공분산의 경우 데이터의 위치에 따라서 부호가 다르게 반영된다
    • 공분산은 데이터가 어떻게 분포되어 있는지에 대한 크기와 방향성을 같이 보여준다.
      • 크기: 원점에서 얼마나 멀리 떨어져 있는지 알 수 있다.
      • 방향: 양수/음수에 따라 어느 방향을 가지는지 알 수 있다
        • 양의 상관관계: 공분산이 양수의 값을 가지는 경우
        • 음의 상관관계: 공분산이 음수의 값을 가지는 경우

    4-2. 상관계수 (Correlation Coefficient)

    • 공분산은 크기와 방향성 정보를 같이 가지고 있다.
    • 우리는 일반적으로 공분산에서 크기 그 자체보다는 상관성(방향성)만을 보고자 한다.
    • 따라서, 아래의 공식을 이용해 정규화를 진행할 수 있다.
    • $s_{x}^{2}$ : x의 분산, $s_{y}^{2}$ : y의 분산, $s_{xy}$ : x와 y의 공분산
      $r_{xy} = \frac{s_{xy}}{\sqrt{s_{x}^{2} \cdot s_{y}^{2}}}$
    • → 이를 피어슨(Pearson) 상관계수라고도 한다
    • 피어슨(Pearson) 상관계수를 그림으로 이해할 수 있다

    4-3. 확률 변수의 공분산과 상관 계수

    • 두 확률변수 𝑋와 𝑌의 공분산은 다음과 같이 정의된다
      $Cov[X,Y] = E[(X - E[X])(Y - E[Y])]$
    • 두 확률변수 𝑋와 𝑌의 상관 계수는 다음과 같이 정의된다
      $\rho [X,Y] = \frac{Cov[X,Y]}{\sqrt{Var[X] \cdot Var[Y]}}$
      • 상관계수($\rho$)는 항상 -1 이상 1 이하의 값을 가진다
        $\rho$ = 1 : 완전 선형 양수(+) 상관관계
        $\rho$ = -1 : 완전 선형 음수(-) 상관관계

    4-4. 공분산 행렬 (Covariance Matrix)

    • 다변수 확률변수를 행렬로 나타낼 수 있다.
    • 하나의 데이터가 3개(d=3)의 원소를 가지는 벡터라고 할 때, 이러한 데이터가 N개 있을 경우 다음처럼 나타낼 수 있다

    N x 3 행렬

    • 위의 행렬을 공분산 행렬로 표현하면 상관관계를 알 수 있다
    • 3개의 서로 다른 확률 변수의 모든 조합에 대하여, 공분산을 한꺼번에 표기할 수 있다
    • 이를 공분산 행렬(covariance matrix)라고 한다

    • 공분산 행렬 Σ는 다음과 같이 정의된다. (데이터 개수: 𝑁개, 특징의 수: 𝑑개일 때)
    • 대각 성분(diagonal)은 각 확률변수의 분산이다.
    • 비 대각 성분(off-diagonal)은 두 확률변수의 공분산이다

    4-5. 공분산과 독립

    • $P_{XY} (x,y) = P_{X} (x) P_{Y} (y)$ 일 때 X와 Y가 독립 관계라고 할 수 있다.
    • 결과적으로 𝑋와 𝑌가 독립이라면 다음의 공식이 성립한다
      → 𝐸(𝑋𝑌) = 𝐸(𝑋)𝐸(𝑌)
    • 이때 공분산 𝐶𝑜𝑣(𝑋,𝑌) = 𝐸(𝑋𝑌) − 𝐸(𝑋)𝐸(𝑌) = 0이다
      → 두 확률 변수가 독립이라면, 공분산은 0이다
    • 역은 성립하지 않는다
      → 공분산이 0이라고 해서 두 확률 변수가 독립이라는 보장은 없다

    4-6. 파이썬으로 공분산 계산

    • 수학 성적과 영어 성적에 대하여 평균, 분산, 공분산, 상관계수를 계산해보자
    import matplotlib.pyplot as plt
    
    X = [97, 85, 26, 54, 76, 15, 33, 83, 88, 91]
    Y = [100, 92, 31, 61, 83, 28, 57, 45, 92, 93]
    plt.plot(X, Y, 'o')
    plt.xlabel("Math")
    plt.ylabel("English")
    plt.show()

    # 평균(mean) 계산
    x_mean = 0
    for x in X:
        x_mean += x / len(X)
    # 분산(variance) 계산
    x_var = 0
    for x in X:
        x_var += ((x - x_mean) ** 2) / (len(X) - 1)
    
    print(f"x_mean = {x_mean:.3f}, x_var = {x_var:.3f}")
    
    # 평균(mean) 계산
    y_mean = 0
    for y in Y:
        y_mean += y / len(Y)
    # 분산(variance) 계산
    y_var = 0
    for y in Y:
        y_var += ((y - y_mean) ** 2) / (len(Y) - 1)
        
    print(f"y_mean = {y_mean:.3f}, y_var = {y_var:.3f}")

    import numpy as np
    np.set_printoptions(precision=3)
    import math
    
    # 공분산(covariance)
    covar = 0
    for x, y in zip(X, Y):
        covar += ((x - x_mean) * (y - y_mean)) / (len(X) - 1)
    print(f"Sample covariance: {covar:.3f}")
    print("[Sample covariance (NumPy)]")
    print(np.cov(X, Y))
    
    # 상관 계수(correlation coefficient)
    correlation_coefficient = covar / math.sqrt(x_var * y_var)
    print(f"Correlation coefficient: {correlation_coefficient:.3f}")
    print("[Correlation coefficient (NumPy)]")
    print(np.corrcoef(X, Y))

     

     

     


     

     

     

    반응형
    댓글