← 문제 목록/공분산 행렬

공분산 행렬

NumPy 기초 · easy

preview

공분산 행렬

PCA·선형회귀·가우시안 분포의 근간. 두 특성이 함께 움직이는 정도 를 모아 놓은 (D, D) 행렬:

Σij=1Nn=1N(Xn,iXˉi)(Xn,jXˉj)\Sigma_{ij} = \frac{1}{N} \sum_{n=1}^{N} (X_{n,i} - \bar{X}_i)(X_{n,j} - \bar{X}_j)

벡터화 형태:

Σ=1NXcXc,Xc=XXˉ\Sigma = \frac{1}{N} X_c^\top X_c, \quad X_c = X - \bar{X}

여기선 population 공분산 (/N/N). 불편추정량(/(N-1)) 은 쓰지 않습니다.

성질

  • 대칭: Σij=Σji\Sigma_{ij} = \Sigma_{ji}
  • 대각성분 = 각 특성의 분산
  • 양의 준정부호 (모든 고유값 ≥ 0)

과제

함수 covariance_matrix(X) 를 완성하세요.

  • X shape (N, D).
  • 반환: shape (D, D).
  • X.mean(axis=0) 으로 중심화 → Xc.T @ Xc / N.

테스트 케이스

#이름검증
1shape (D, D)
2대칭Σ == Σ.T
3대각 = 분산diag == X.var(axis=0)
4독립 특성 → 비대각 ≈ 0서로 독립 랜덤 컬럼 데이터
5np.cov(bias=True) 일치
Loading...

코드를 작성하고 Run 을 눌러보세요.