본문 바로가기
공대생을 위한 수학---------------------/고급행렬연산

[고급 행렬 연산] 6. 공분산행렬 구하기

by bigpicture 2023. 8. 22.
반응형

먼저 인스턴스와 피처에 대한 개념을 이해해야 합니다. 아래와 같은 데이터가 있다고 합시다.

 

  과목1 과목2 과목3
사람1 90 100 85
사람2 75 80 66
...      


위 데이터에서 과목을 피처(feature)라고 부르고, 사람을 인스턴스(instance)라고 부릅니다. 

인스턴스를 벡터로 나타내면 아래와 같습니다. 

사람1=[90 100 85 ]
사람2=[75 80 88]

일반화 시키면 아래와 같습니다. 인스턴스의 개수는 N개, 피처의 개수는 n개인 경우입니다. 

x(1)=[x(1)1,,x(1)n]x(1)=[x(1)1,,x(1)n]
x(2)=[x(2)1,,x(2)n]x(2)=[x(2)1,,x(2)n]
...
x(N)=[x(n)1,,x(n)n]x(N)=[x(n)1,,x(n)n]

i번째 인스턴스는 아래와 같습니다. 

x(i)=[x(i)1,,x(i)n]x(i)=[x(i)1,,x(i)n]

일반적으로 벡터의 기본상태는 열벡터입니다. 아래와 같이 열벡터로 나타내겠습니다 .

x(i)=[x(i)1x(i)n]

 

1. 공분산행렬

이제 공분산행렬을 구해봅시다. 각 피처의 평균으로 이루어진 벡터를 아래와 같이 놓겠습니다. 

(x)m=[(x1)m(xn)m]

 

x(i) 에서 평균벡터 (x)m 을 뺀 벡터를 정의합니다. 

 

x(i)(x)m=[x(i)1(x1)mx(i)n(xn)m]

 

아래와 같이 두 벡터를 곱해봅시다. 

 

(x(i)(x)m)(x(i)(x)m)T=[x(i)1(x1)mx(i)n(xn)m][x(i)1(x1)mx(i)n(xn)m]

 

결과는 아래와 같습니다. 

 

(x(i)(x)m)(x(i)(x)m)T=[(x(i)1(x1)m)(x(i)1(x1)m)(x(i)1(x1)m)(x(i)n(xn)m)(x(i)n(xn)m)(x(i)1(x1)m)(x(i)n(xn)m)(x(i)n(xn)m)]

 

아래와 같이 시그마를 취해줍니다. 

 

1NNi=1(x(i)(x)m)(x(i)(x)m)T=[1NNi=1(x(i)1(x1)m)(x(i)1(x1)m)1NNi=1(x(i)1(x1)m)(x(i)n(xn)m)1NNi=1(x(i)n(xn)m)(x(i)1(x1)m)1NNi=1(x(i)n(xn)m)(x(i)n(xn)m)]

 

우변이 공분산행렬입니다. 

 

1NNi=1(x(i)(x)m)(x(i)(x)m)T=[Var[x1]Cov[x1,xn]Cov[xn,x1]Var[xn]]

 

2. 다른 방법 (시그마 기호 없이)

x(i) 에서 평균벡터 (x)m 을 뺀 벡터에서 출발합시다. 

 

x(i)(x)m=[x(i)1(x1)mx(i)n(xn)m]

 

아래와 같은 행렬을 정의합니다. 

 

X=[(x(1)(x)m)T(x(N)(x)m)T]

 

각 행이 인스턴스인 행렬입니다. 열은 피처입니다. 풀어서 쓰면 아래와 같습니다. 

 

X=[x(1)1(x1)mx(1)n(xn)mx(N)1(x1)mx(N)n(xn)m]

 

아래와 같이 곱해봅시다. 

 

XTX=[x(1)1(x1)mx(N)1(x1)mx(1)n(xn)mx(N)n(xn)m][x(1)1(x1)mx(1)n(xn)mx(N)1(x1)mx(N)n(xn)m]

 

곱한 결과는 아래와 같습니다. 

 

XTX=[Ni=1(x(i)1(x1)m)(x(i)1(x1)m)Ni=1(x(i)1(x1)m)(x(i)n(xn)m)Ni=1(x(i)n(xn)m)(x(i)1(x1)m)Ni=1(x(i)n(xn)m)(x(i)n(xn)m)]

 

양변을 N으로 나눠줍니다. 

 

1NXTX=[1NNi=1(x(i)1(x1)m)(x(i)1(x1)m)1NNi=1(x(i)1(x1)m)(x(i)n(xn)m)1NNi=1(x(i)n(xn)m)(x(i)1(x1)m)1NNi=1(x(i)n(xn)m)(x(i)n(xn)m)]

 

우변이 공분산행렬입니다. 

 

1NXTX=[Var[x1]Cov[x1,xn]Cov[xn,x1]Var[xn]]

반응형