공분산, 공분산 행렬

김승혁·2024년 11월 22일

공분산 (Covariance)

공분산은 두 변수 간의 관계(선형 상관 관계)를 수량화하는 값입니다.
이는 두 변수의 변화 방향이 얼마나 일치하는지 또는 반대 방향인지 나타냅니다.


1. 공분산의 정의

두 변수 XXYY의 공분산은 다음과 같이 정의됩니다:

Cov(X,Y)=E[(XμX)(YμY)]\text{Cov}(X, Y) = \mathbb{E}[(X - \mu_X)(Y - \mu_Y)]

여기서:

  • X,YX, Y: 두 랜덤 변수
  • μX,μY\mu_X, \mu_Y: 각각 XXYY의 평균값
  • E[]\mathbb{E}[\cdot]: 기대값 (평균)

표본 데이터에서 공분산 계산

샘플 데이터 (x1,y1),(x2,y2),,(xn,yn)(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)에서 공분산은 다음과 같이 계산됩니다:
Cov(X,Y)=1n1i=1n(xixˉ)(yiyˉ)\text{Cov}(X, Y) = \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})
여기서:

  • nn: 데이터 샘플 개수
  • xˉ,yˉ\bar{x}, \bar{y}: 각각 X,YX, Y의 평균값

2. 공분산의 해석

공분산의 값은 XXYY 간의 상관 관계 방향을 나타냅니다:

  1. Cov(X,Y)>0\text{Cov}(X, Y) > 0 :

    • XXYY양의 상관 관계를 가짐
    • XX가 증가하면 YY도 증가, XX가 감소하면 YY도 감소.
  2. Cov(X,Y)<0\text{Cov}(X, Y) < 0 :

    • XXYY음의 상관 관계를 가짐
    • XX가 증가하면 YY가 감소, XX가 감소하면 YY가 증가.
  3. Cov(X,Y)=0\text{Cov}(X, Y) = 0 :

    • XXYY가 서로 독립이거나 선형 관계가 없음.

3. 공분산과 상관계수의 차이

공분산:

  • 단위에 의존 (예: XXYY의 스케일에 따라 값이 달라짐).
  • 두 변수 간의 관계의 방향을 알 수 있음 (양/음).

상관계수 (rr):

  • 공분산을 XXYY의 표준편차로 정규화한 값.
  • 항상 [1,1][-1, 1] 사이의 값이며, 변수 간의 관계 강도와 방향을 모두 제공.
  • 계산식:
    r=Cov(X,Y)σXσYr = \frac{\text{Cov}(X, Y)}{\sigma_X \sigma_Y}

4. 공분산의 예제

데이터:

X=[1,2,3,4,5]X = [1, 2, 3, 4, 5], Y=[2,4,6,8,10]Y = [2, 4, 6, 8, 10]

  1. 평균값:

    • Xˉ=3\bar{X} = 3, Yˉ=6\bar{Y} = 6
  2. 편차 계산:

    • XXˉ=[2,1,0,1,2]X - \bar{X} = [-2, -1, 0, 1, 2]
    • YYˉ=[4,2,0,2,4]Y - \bar{Y} = [-4, -2, 0, 2, 4]
  3. 편차 곱의 평균:

    • Cov(X,Y)=151i=15(XiXˉ)(YiYˉ)=14(8+2+0+2+8)=5\text{Cov}(X, Y) = \frac{1}{5-1} \sum_{i=1}^5 (X_i - \bar{X})(Y_i - \bar{Y}) = \frac{1}{4} (8 + 2 + 0 + 2 + 8) = 5

결과:

  • 공분산 =5= 5 : XXYY는 양의 상관 관계를 가짐.

5. 공분산의 한계

  • 공분산 값 자체는 크기만으로 상관 관계 강도를 직관적으로 해석하기 어려움 (단위 종속적).
  • 해결책: 상관계수로 변환하여 사용.

6. 공분산의 활용

  • 공분산 행렬: 여러 변수 간의 공분산을 행렬 형태로 나타냄 (PCA 등 차원 축소에 사용).
  • 통계 분석: 데이터 변수들 간의 관계 파악.
  • 머신러닝: 데이터 분포와 관계 탐색.










공분산 행렬 (Covariance Matrix)

공분산 행렬은 데이터의 변수들 간의 공분산을 정리한 대칭 행렬로, 데이터의 분포와 변수들 간의 상관 관계를 나타냅니다. 다변량 데이터의 분산과 상호 관계를 이해하는 데 매우 유용합니다.


1. 공분산 행렬의 정의

다변량 데이터 X=[X1,X2,,Xd]\mathbf{X} = [X_1, X_2, \dots, X_d]에서 공분산 행렬은 각 변수 간의 공분산을 정리한 d×dd \times d 행렬입니다.

Σ=[Cov(X1,X1)Cov(X1,X2)Cov(X1,Xd)Cov(X2,X1)Cov(X2,X2)Cov(X2,Xd)Cov(Xd,X1)Cov(Xd,X2)Cov(Xd,Xd)]\Sigma = \begin{bmatrix} \text{Cov}(X_1, X_1) & \text{Cov}(X_1, X_2) & \cdots & \text{Cov}(X_1, X_d) \\ \text{Cov}(X_2, X_1) & \text{Cov}(X_2, X_2) & \cdots & \text{Cov}(X_2, X_d) \\ \vdots & \vdots & \ddots & \vdots \\ \text{Cov}(X_d, X_1) & \text{Cov}(X_d, X_2) & \cdots & \text{Cov}(X_d, X_d) \end{bmatrix}

요소 설명:

  • 대각 원소 (Σii(\Sigma_{ii}): 각 변수의 분산 (Var(Xi)(\text{Var}(X_i))
  • 비대각 원소 (Σij(\Sigma_{ij}): 변수 XiX_iXjX_j 간의 공분산 (Cov(Xi,Xj)(\text{Cov}(X_i, X_j))
  • Σij=Σji\Sigma_{ij} = \Sigma_{ji} (대칭 행렬)

2. 공분산 행렬 계산

데이터 샘플 X=[x1,x2,,xn]T\mathbf{X} = [\mathbf{x}_1, \mathbf{x}_2, \dots, \mathbf{x}_n]^T (n×d(n \times d 행렬)에서:
1. 각 변수의 평균을 계산:
xˉ=1ni=1nxi\bar{\mathbf{x}} = \frac{1}{n} \sum_{i=1}^n \mathbf{x}_i
2. 공분산 행렬 계산:
Σ=1n1(Xxˉ)T(Xxˉ)\Sigma = \frac{1}{n-1} (\mathbf{X} - \bar{\mathbf{x}})^T (\mathbf{X} - \bar{\mathbf{x}})
여기서:

  • Xxˉ\mathbf{X} - \bar{\mathbf{x}}: 각 데이터에서 평균을 뺀 편차 행렬

3. 예제

2차원 데이터 (X1,X2)(X_1, X_2)에서:

  • 평균: μ1,μ2\mu_1, \mu_2
  • 공분산 행렬:
    Σ=[Var(X1)Cov(X1,X2)Cov(X2,X1)Var(X2)]=[σ12σ12σ12σ22]\Sigma = \begin{bmatrix} \text{Var}(X_1) & \text{Cov}(X_1, X_2) \\ \text{Cov}(X_2, X_1) & \text{Var}(X_2) \end{bmatrix} = \begin{bmatrix} \sigma_1^2 & \sigma_{12} \\ \sigma_{12} & \sigma_2^2 \end{bmatrix}

4. 공분산 행렬의 활용

  • LDA/QDA: 클래스 간 분산/공분산 차이를 비교하여 데이터 분류
  • PCA (주성분 분석): 데이터의 공분산 행렬에서 고유값 분해를 통해 주성분을 추출
  • 가우시안 분포: 다변량 정규 분포에서 공분산 행렬을 사용해 확률 계산

5. 공분산 행렬의 성질

  1. 대칭 행렬: Σ=ΣT\Sigma = \Sigma^T
  2. 양의 준정부호 (Positive Semi-Definite): 모든 고유값이 0 이상
  3. 공분산 행렬의 크기는 데이터의 스케일에 따라 다름 (표준화를 통해 조정 가능).










LDA (Linear Discriminant Analysis)

  • 핵심 아이디어: LDA는 각 클래스의 공분산 행렬이 동일하다는 가정 하에, 데이터의 선형 결합을 통해 클래스 간 분리를 극대화합니다.

수식

  • 공통 가정: 각 클래스 kk의 데이터는 다변량 정규 분포를 따름
    P(xy=k)=1(2π)d/2Σ1/2exp(12(xμk)TΣ1(xμk))P(x|y=k) = \frac{1}{(2\pi)^{d/2}|\Sigma|^{1/2}} \exp\left(-\frac{1}{2}(x - \mu_k)^T \Sigma^{-1}(x - \mu_k)\right)
    여기서:

    • xx: 입력 벡터
    • y=ky=k: 클래스 kk
    • μk\mu_k: 클래스 kk의 평균
    • Σ\Sigma: 공통 공분산 행렬 (kk에 관계없이 동일)
  • 결정 경계: 클래스 확률의 비율을 비교하여 다음과 같은 선형 함수로 표현
    δk(x)=xTΣ1μk12μkTΣ1μk+log(πk)\delta_k(x) = x^T \Sigma^{-1} \mu_k - \frac{1}{2} \mu_k^T \Sigma^{-1} \mu_k + \log(\pi_k)

    • πk\pi_k: 클래스 kk의 사전 확률
  • 결과: 결정 경계가 선형 형태를 이룸.


QDA (Quadratic Discriminant Analysis)

  • 핵심 아이디어: QDA는 클래스 간의 공분산 행렬이 다를 수 있다는 점에서 LDA와 다릅니다. 이를 통해 비선형 결정 경계를 생성할 수 있습니다.

수식

  • 공통 가정: 각 클래스 (k)의 데이터는 다변량 정규 분포를 따르며, 클래스별로 서로 다른 공분산 행렬을 가짐
    P(xy=k)=1(2π)d/2Σk1/2exp(12(xμk)TΣk1(xμk))P(x|y=k) = \frac{1}{(2\pi)^{d/2}|\Sigma_k|^{1/2}} \exp\left(-\frac{1}{2}(x - \mu_k)^T \Sigma_k^{-1}(x - \mu_k)\right)
    여기서:

    • Σk\Sigma_k: 클래스 kk의 공분산 행렬
  • 결정 경계: 각 클래스의 확률을 비교하여 다음과 같은 이차식 형태의 결정 함수 사용
    δk(x)=12logΣk12(xμk)TΣk1(xμk)+log(πk)\delta_k(x) = -\frac{1}{2} \log|\Sigma_k| - \frac{1}{2}(x - \mu_k)^T \Sigma_k^{-1}(x - \mu_k) + \log(\pi_k)

  • 결과: 결정 경계가 비선형 형태를 이룸.


다음 공부할 거 : LDA, QDA, PCA

  • 공분산 행렬의 고유값/고유벡터를 사용해 데이터를 주성분으로 변환하는 과정을 통해
    PCA 공부할거임
profile
열심히 사는 척

0개의 댓글