필요한 라이브러리 : numpy
import numpy as np
X를 n d 크기의 matrix 라고 하자.
내부 원소는 d개의 변수 x_i ( n 1 vector )로 이루어져 있다.
-열 : 데이터 속성 변수
-행 : 데이터 값 (속성1, 속성2, ..., 속성d) ( jointly distributed)
속성 변수들의 Covariance Matrix를 구해보자.
np.cov(X, rowvar=False)
여기서 X는 행이 변수이므로 열이 변수라는 rowvar는 False로 해주어야 한다.
정확한 variance 값을 구하기 위해 표본개수-1 (n-1)로 variance를 구하는 것을 Bessel Correction이라고 한다.
Bessel Correction이 적용되지 않는 Covariance Matrix를 구해보자
(즉, np.cov 함수의 기본 설정은 bias=False 이다.)
np.cov(X, rowvar=False, bias=True)
Bessel Correction을 적용하지 않겠다는건 bias (편차)를 허용한다는 뜻이다.
Covariance Matrix K의 특성
1. Symmetric : K^(transpose) = K
2. positive semidefinite : x^(transpose) K x >=0
3. (i,j) 는 x_i 와 x_j의 covariance 값
-(i,j) > 0 : 양의 상관관계, 기울기가 양수
-(i,j) < 0 : 음의 상관관계, 기울기가 음수
4. x_i 와 x_j가 독립이라면 Cov값은 0
5. (i,i)는 x_i의 분산값 (항상 >=0)
Sample X의 Sample Covariance Matrix K구하기
1. X의 각 열의 mean(평균)값을 계산하여 빼준다.
-> 이러한 matrix를 Z라고 지칭하자.
2. 그럼 K = Z^(transpose) Z