공분산 (Covariance)
공분산은 두 변수 간의 관계(선형 상관 관계)를 수량화하는 값입니다.
이는 두 변수의 변화 방향이 얼마나 일치하는지 또는 반대 방향인지 나타냅니다.
1. 공분산의 정의
두 변수 X와 Y의 공분산은 다음과 같이 정의됩니다:
Cov(X,Y)=E[(X−μX)(Y−μY)]
여기서:
- X,Y: 두 랜덤 변수
- μX,μY: 각각 X와 Y의 평균값
- E[⋅]: 기대값 (평균)
표본 데이터에서 공분산 계산
샘플 데이터 (x1,y1),(x2,y2),…,(xn,yn)에서 공분산은 다음과 같이 계산됩니다:
Cov(X,Y)=n−11∑i=1n(xi−xˉ)(yi−yˉ)
여기서:
- n: 데이터 샘플 개수
- xˉ,yˉ: 각각 X,Y의 평균값
2. 공분산의 해석
공분산의 값은 X와 Y 간의 상관 관계 방향을 나타냅니다:
-
Cov(X,Y)>0 :
- X와 Y가 양의 상관 관계를 가짐
- X가 증가하면 Y도 증가, X가 감소하면 Y도 감소.
-
Cov(X,Y)<0 :
- X와 Y가 음의 상관 관계를 가짐
- X가 증가하면 Y가 감소, X가 감소하면 Y가 증가.
-
Cov(X,Y)=0 :
- X와 Y가 서로 독립이거나 선형 관계가 없음.
3. 공분산과 상관계수의 차이
공분산:
- 단위에 의존 (예: X와 Y의 스케일에 따라 값이 달라짐).
- 두 변수 간의 관계의 방향을 알 수 있음 (양/음).
상관계수 (r):
- 공분산을 X와 Y의 표준편차로 정규화한 값.
- 항상 [−1,1] 사이의 값이며, 변수 간의 관계 강도와 방향을 모두 제공.
- 계산식:
r=σXσYCov(X,Y)
4. 공분산의 예제
데이터:
X=[1,2,3,4,5], Y=[2,4,6,8,10]
-
평균값:
- Xˉ=3, Yˉ=6
-
편차 계산:
- X−Xˉ=[−2,−1,0,1,2]
- Y−Yˉ=[−4,−2,0,2,4]
-
편차 곱의 평균:
- Cov(X,Y)=5−11∑i=15(Xi−Xˉ)(Yi−Yˉ)=41(8+2+0+2+8)=5
결과:
- 공분산 =5 : X와 Y는 양의 상관 관계를 가짐.
5. 공분산의 한계
- 공분산 값 자체는 크기만으로 상관 관계 강도를 직관적으로 해석하기 어려움 (단위 종속적).
- 해결책: 상관계수로 변환하여 사용.
6. 공분산의 활용
- 공분산 행렬: 여러 변수 간의 공분산을 행렬 형태로 나타냄 (PCA 등 차원 축소에 사용).
- 통계 분석: 데이터 변수들 간의 관계 파악.
- 머신러닝: 데이터 분포와 관계 탐색.
공분산 행렬 (Covariance Matrix)
공분산 행렬은 데이터의 변수들 간의 공분산을 정리한 대칭 행렬로, 데이터의 분포와 변수들 간의 상관 관계를 나타냅니다. 다변량 데이터의 분산과 상호 관계를 이해하는 데 매우 유용합니다.
1. 공분산 행렬의 정의
다변량 데이터 X=[X1,X2,…,Xd]에서 공분산 행렬은 각 변수 간의 공분산을 정리한 d×d 행렬입니다.
Σ=⎣⎢⎢⎢⎢⎡Cov(X1,X1)Cov(X2,X1)⋮Cov(Xd,X1)Cov(X1,X2)Cov(X2,X2)⋮Cov(Xd,X2)⋯⋯⋱⋯Cov(X1,Xd)Cov(X2,Xd)⋮Cov(Xd,Xd)⎦⎥⎥⎥⎥⎤
요소 설명:
- 대각 원소 (Σii): 각 변수의 분산 (Var(Xi))
- 비대각 원소 (Σij): 변수 Xi와 Xj 간의 공분산 (Cov(Xi,Xj))
- Σij=Σji (대칭 행렬)
2. 공분산 행렬 계산
데이터 샘플 X=[x1,x2,…,xn]T (n×d 행렬)에서:
1. 각 변수의 평균을 계산:
xˉ=n1∑i=1nxi
2. 공분산 행렬 계산:
Σ=n−11(X−xˉ)T(X−xˉ)
여기서:
- X−xˉ: 각 데이터에서 평균을 뺀 편차 행렬
3. 예제
2차원 데이터 (X1,X2)에서:
- 평균: μ1,μ2
- 공분산 행렬:
Σ=[Var(X1)Cov(X2,X1)Cov(X1,X2)Var(X2)]=[σ12σ12σ12σ22]
4. 공분산 행렬의 활용
- LDA/QDA: 클래스 간 분산/공분산 차이를 비교하여 데이터 분류
- PCA (주성분 분석): 데이터의 공분산 행렬에서 고유값 분해를 통해 주성분을 추출
- 가우시안 분포: 다변량 정규 분포에서 공분산 행렬을 사용해 확률 계산
5. 공분산 행렬의 성질
- 대칭 행렬: Σ=ΣT
- 양의 준정부호 (Positive Semi-Definite): 모든 고유값이 0 이상
- 공분산 행렬의 크기는 데이터의 스케일에 따라 다름 (표준화를 통해 조정 가능).
LDA (Linear Discriminant Analysis)
- 핵심 아이디어: LDA는 각 클래스의 공분산 행렬이 동일하다는 가정 하에, 데이터의 선형 결합을 통해 클래스 간 분리를 극대화합니다.
수식
-
공통 가정: 각 클래스 k의 데이터는 다변량 정규 분포를 따름
P(x∣y=k)=(2π)d/2∣Σ∣1/21exp(−21(x−μk)TΣ−1(x−μk))
여기서:
- x: 입력 벡터
- y=k: 클래스 k
- μk: 클래스 k의 평균
- Σ: 공통 공분산 행렬 (k에 관계없이 동일)
-
결정 경계: 클래스 확률의 비율을 비교하여 다음과 같은 선형 함수로 표현
δk(x)=xTΣ−1μk−21μkTΣ−1μk+log(πk)
- πk: 클래스 k의 사전 확률
-
결과: 결정 경계가 선형 형태를 이룸.
QDA (Quadratic Discriminant Analysis)
- 핵심 아이디어: QDA는 클래스 간의 공분산 행렬이 다를 수 있다는 점에서 LDA와 다릅니다. 이를 통해 비선형 결정 경계를 생성할 수 있습니다.
수식
-
공통 가정: 각 클래스 (k)의 데이터는 다변량 정규 분포를 따르며, 클래스별로 서로 다른 공분산 행렬을 가짐
P(x∣y=k)=(2π)d/2∣Σk∣1/21exp(−21(x−μk)TΣk−1(x−μk))
여기서:
- Σk: 클래스 k의 공분산 행렬
-
결정 경계: 각 클래스의 확률을 비교하여 다음과 같은 이차식 형태의 결정 함수 사용
δk(x)=−21log∣Σk∣−21(x−μk)TΣk−1(x−μk)+log(πk)
-
결과: 결정 경계가 비선형 형태를 이룸.
다음 공부할 거 : LDA, QDA, PCA
- 공분산 행렬의 고유값/고유벡터를 사용해 데이터를 주성분으로 변환하는 과정을 통해
PCA 공부할거임