Scikit-Learn 을 이용한 공분산 행렬 추정

Beginner

This tutorial is from open-source community. Access the source code

소개

공분산 추정은 모집단의 공분산 행렬을 추정하는 데 사용되는 중요한 통계 기술입니다. 공분산 행렬은 데이터 집합 내 변수 간의 관계를 설명하며, 데이터의 산점도 모양에 대한 귀중한 통찰력을 제공할 수 있습니다. 이 실습에서는 Python 의 sklearn.covariance 패키지를 사용하여 공분산 행렬을 추정하는 다양한 방법을 탐색할 것입니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근하십시오.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

경험적 공분산

경험적 공분산 행렬은 데이터 집합의 공분산 행렬을 추정하는 데 일반적으로 사용되는 방법입니다. 최대 가능도 추정의 원리를 기반으로 하며 관측치가 독립적이고 동일한 분포 (i.i.d.) 를 따른다고 가정합니다. sklearn.covariance 패키지의 empirical_covariance 함수를 사용하여 주어진 데이터 집합의 경험적 공분산 행렬을 계산할 수 있습니다.

from sklearn.covariance import empirical_covariance

## 경험적 공분산 행렬 계산
covariance_matrix = empirical_covariance(data)

축소된 공분산

최대 가능도 추정량은 편향되지 않았지만, 공분산 행렬의 고유값을 정확하게 추정하지 못할 수 있으며, 이로 인해 결과가 부정확해질 수 있습니다. 이 문제를 완화하기 위해 축소 (shrinkage) 라는 기술이 사용됩니다. 축소는 경험적 공분산 행렬의 가장 작은 고유값과 가장 큰 고유값의 비율을 줄여 추정의 정확도를 향상시킵니다. sklearn.covariance 패키지는 데이터에 축소된 추정량을 맞출 수 있는 ShrunkCovariance 클래스를 제공합니다.

from sklearn.covariance import ShrunkCovariance

## ShrunkCovariance 객체를 생성하고 데이터에 맞춥니다.
shrunk_estimator = ShrunkCovariance().fit(data)

## 축소된 공분산 행렬을 계산합니다.
shrunk_covariance_matrix = shrunk_estimator.covariance_

Ledoit-Wolf 축소

Ledoit-Wolf 축소 방법은 추정된 공분산 행렬과 실제 공분산 행렬 사이의 평균 제곱 오차를 최소화하는 최적의 축소 계수를 제공합니다. sklearn.covariance 패키지에는 주어진 데이터 집합에 대한 Ledoit-Wolf 추정량을 계산하는 데 사용할 수 있는 ledoit_wolf 함수가 포함되어 있습니다.

from sklearn.covariance import ledoit_wolf

## 공분산 행렬의 Ledoit-Wolf 추정량을 계산합니다.
ledoit_wolf_covariance_matrix = ledoit_wolf(data)[0]

희소 역공분산

희소 역공분산 추정, 또는 공분산 선택은 희소 정밀도 행렬을 추정하는 것을 목표로 합니다. 여기서 공분산 행렬의 역행렬은 부분 상관 행렬을 나타냅니다. sklearn.covariance 패키지에는 l1 페널티를 사용하여 희소 역공분산 행렬을 추정하는 GraphicalLasso 클래스가 포함되어 있습니다.

from sklearn.covariance import GraphicalLasso

## GraphicalLasso 객체를 생성하고 데이터에 맞춥니다.
graphical_lasso = GraphicalLasso().fit(data)

## 희소 역공분산 행렬을 계산합니다.
sparse_inverse_covariance_matrix = graphical_lasso.precision_

로버스트 공분산 추정

실제 데이터 집합은 종종 추정된 공분산 행렬에 상당한 영향을 미칠 수 있는 이상치 또는 측정 오류를 포함합니다. 최소 공분산 결정치 (MCD) 와 같은 로버스트 공분산 추정 방법을 사용하여 이러한 상황을 처리할 수 있습니다. sklearn.covariance 패키지는 MCD 추정을 계산하기 위한 MinCovDet 클래스를 제공합니다.

from sklearn.covariance import MinCovDet

## MinCovDet 객체를 생성하고 데이터에 맞춥니다.
min_cov_det = MinCovDet().fit(data)

## 로버스트 공분산 행렬을 계산합니다.
robust_covariance_matrix = min_cov_det.covariance_

요약

공분산 추정은 데이터 집합의 공분산 행렬을 추정하는 데 사용되는 기본적인 통계 기술입니다. 이 실험에서는 파이썬의 sklearn.covariance 패키지를 사용하여 다양한 공분산 추정 방법을 탐구했습니다. 경험적 공분산 추정, 축소 기법, 희소 역공분산 추정 및 로버스트 공분산 추정을 다루었습니다. 데이터 집합의 특성과 분석의 특정 요구 사항에 따라 적절한 방법을 선택하는 것이 중요합니다.