본문 바로가기

컴퓨터이야기

[펌]공분산

[펌]https://deeplearning4j.org/kr/eigenvector


공분산 행렬(Covariance Matrix)

앞에서 행렬의 역할 중 벡터를 변환해주는 역할을 소개했었습니다. 이번엔 조금 다른 관점으로 행렬에 대해 이야기하겠습니다. 행렬을 이용하면 두 밴수가 서로 어떤 관계를 가지는지를 쉽게 표현할 수 있습니다. 특히, 각 데이터의 분산과 공분산을 이용해 만드는 공분산 행렬이 이에 해당합니다.

쉽게 말하자면, 정방 행렬의 값을 각 변수의 분산과 공분산으로 채운 것이 바로 공분산 행렬입니다. 이에 대해서는 이제부터 자세히 설명하겠습니다.

우선 공분산 행렬의 쓰임새에 대해 알아보겠습니다. 공분산 행렬에서 고유 벡터와 고유 값을 찾는 것은 데이터의 주성분을 찾는 것과 동일합니다. 왜냐하면 위에서 언급했 듯이 고유 벡터는 행렬이 어떤 방향으로 힘을 가하는지를 표현하는데, 이것은 데이터가 어떤 방향으로의 분산이 가장 큰지를 구하는 것과 같기 때문입니다.

두 개의 변수가 있다고 생각해보십시오. 변수 하나가 변할 수도 있고 두 변수가 같이 변할 수도 있습니다. 어떻게 되든지 간에 그 이유는 그 데이터가 그렇게 나오도록 하는 원리가 있기 때문일 것입니다.

어떤 행렬로 선형 변환을 하는 경우 고유 벡터는 그 행렬이 벡터에 작용하는 힘의 방향을 나타냅니다. 만일 이 행렬이 공분산 행렬일 경우에 이 공분산 행렬의 고유 벡터는 데이터가 어떤 방향으로 분산되어 있는지, 즉 어떤 방향으로 힘이 작용하는 지를 나타냅니다.

고유값(Eigenvalues)은 각 고유 벡터에 해당하는 상관 계수일 뿐입니다. 우리가 다루는 행렬이 공분산 행렬일 경우 고유 값은 각 축에 대한 공분산 값이 됩니다. 그리고 고유 값이 큰 순서대로 고유 벡터를 정렬하면, 결과적으로 중요한 순서대로 주성분을 구하는 것이 됩니다.

2x2 공분산 행렬의 예는 아래와 같습니다.

Alt text

좌측 하단 (2,1)성분 및 우측 상단의 (1,2) 성분의 값이 동일합니다. 이 값은 x와 y의 공분산을 포현합니다. ‘x와 y의 공분산’과 ‘y와 x의 공분산’의 값이 같기 때문에 두 값이 동일한 것입니다. 한편 좌측 상단의 값은 x의 분산에, 우측 하단의 값은 y의 분산에 해당합니다. 결과적으로 공분산 행렬은 대각선 성분을 중심으로 대칭이 되게 됩니다. 그리고 PCA 섹션 상단의 데이터 그래프를 보면 데이터가 우상향입니다. 즉, x의 값이 커질수록 y의 값도 커지기 때문에 공분산의 값이 양수입니다.

만일 x의 값이 커질수록 y의 값이 감소하는 데이터라면 공분산 값은 음수가 됩니다.

Alt text

(제공: Vincent Spruyt)

만일 변수 x의 변화에 따른 변수 y의 변화가 전혀 없다면, 즉 데이터 그래프가 우상향이나 좌상향이 아닌 경우엔 공분산의 값이 0이 됩니다. 즉, 공분산 값은 두 변수가 연관이 되어있어서 같이 변하는지 아닌지를 알려줍니다.

아래 방정식을 보면 분산과 공분산을 구하는 과정은 거의 차이가 없다는 것을 알 수 있습니다. 예를 들면 ‘x의 분산’은 ‘x와 x의 공분산’이라고 생각할 수 있습니다.

Alt text

vs.

Alt text

공분산은 아주 유용합니다. 고차원 변수의 경우 시각화하기 어렵기 때문에 변수의 상관 관계를 파악하기 어렵습니다. 이럴 때 공분산을 이용하면 각 변수의 값과 부호(음/양)를 통해 변수의 관계를 쉽게 알 수 있습니다. (상관계수(Correlation coefficient)공분산을 -1과 1 사이의 값으로 정규화한 것 입니다.)

요약하자면, 공분산 행렬은 데이터의 분포 형태를 나타냅니다. x축과 y축의 분산은 각 변수의 분산으로 표현되고, 대각선 방향의 분산은 공분산으로 표현됩니다.

통계 자료를 보고 인과 관계를 알아내는 것은 매우 어렵고 아주 많은 경우에 잘못 사용되곤 합니다. 매우, 매우 주의하시기 바랍니다.

위의 네덜란드 농구선수 키 데이터를 인과 관계와 엮어 생각해볼 수 있습니다. 예를 들어 첫 번째 주 성분으로 나이를, 두 번째 주 성분으로 성별을, 세 번째 성분으로 국적을 표현하면 키와 성별, 키와 국적의 관계를 각각의 공분산으로 파악할 수 있고 결과적으로 어떤 인과 관계를 추정해볼 수 있습니다. 그러나 공분산으로 알 수 있는 것은 상관 관계이지, 인과 관계가 아니라는 것을 주의하시기 바랍니다.


'컴퓨터이야기' 카테고리의 다른 글

[펌]오일러공식  (0) 2017.10.20
푸리에분석  (0) 2017.10.20
회귀분석  (0) 2017.05.15
데이타 과학자 - 조시 윌스  (0) 2017.04.20
파이썬 opencv 설치하기  (0) 2017.04.03