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

[고급 행렬 연산] 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개인 경우입니다. 

$\vec{x}^{(1)}=\left [ x^{(1)}_{1},\cdots,x^{(1)}_{n} \right ]$
$\vec{x}^{(2)}=\left [ x^{(2)}_{1},\cdots,x^{(2)}_{n} \right ]$
...
$\vec{x}^{(N)}=\left [ x^{(n)}_{1},\cdots,x^{(n)}_{n} \right ]$

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

$\vec{x}^{(i)}=\left [ x^{(i)}_{1},\cdots,x^{(i)}_{n} \right ]$

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

$\vec{x}^{(i)}=\begin{bmatrix}
x^{(i)}_{1}\\ 
\vdots \\ 
x^{(i)}_{n}

\end{bmatrix}$

 

1. 공분산행렬

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

$\left ( \vec{x} \right )_{m}=\begin{bmatrix}
\left ( x_{1} \right )_{m}\\ 
\vdots \\ 
\left ( x_{n} \right )_{m}
\end{bmatrix}$

 

$\vec{x}^{(i)}$ 에서 평균벡터 $\left ( \vec{x} \right )_{m}$ 을 뺀 벡터를 정의합니다. 

 

$\vec{x}^{(i)}-\left ( \vec{x} \right )_{m}=\begin{bmatrix}
x^{(i)}_{1}-(x_{1})_{m}\\ 
\vdots \\ 
x^{(i)}_{n}-(x_{n})_{m}\\ 
\end{bmatrix}$

 

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

 

$\left ( \vec{x}^{(i)}-\left ( \vec{x} \right )_{m} \right )
\left ( \vec{x}^{(i)}-\left ( \vec{x} \right )_{m} \right )^{T}=\begin{bmatrix}
x^{(i)}_{1}-(x_{1})_{m}\\ 
\vdots \\ 
x^{(i)}_{n}-(x_{n})_{m}\\ 
\end{bmatrix}
\begin{bmatrix}
x^{(i)}_{1}-(x_{1})_{m} & \cdots & x^{(i)}_{n}-(x_{n})_{m} 
\end{bmatrix}$

 

결과는 아래와 같습니다. 

 

$\left ( \vec{x}^{(i)}-\left ( \vec{x} \right )_{m} \right )
\left ( \vec{x}^{(i)}-\left ( \vec{x} \right )_{m} \right )^{T}
=
\begin{bmatrix}
\left ( x^{(i)}_{1}-(x_{1})_{m} \right )\left ( x^{(i)}_{1}-(x_{1})_{m} \right )  & \cdots & \left ( x^{(i)}_{1}-(x_{1})_{m} \right )\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\\ 
\vdots & \ddots  &  
\vdots
\\ 
\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\left ( x^{(i)}_{1}-(x_{1})_{m} \right ) & 
\cdots & 
\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\left ( x^{(i)}_{n}-(x_{n})_{m} \right )
\end{bmatrix}$

 

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

 

$\frac{1}{N}\sum_{i=1}^{N}\left ( \vec{x}^{(i)}-\left ( \vec{x} \right )_{m} \right )
\left ( \vec{x}^{(i)}-\left ( \vec{x} \right )_{m} \right )^{T}
=
\begin{bmatrix}
\frac{1}{N}\sum_{i=1}^{N}\left ( x^{(i)}_{1}-(x_{1})_{m} \right )\left ( x^{(i)}_{1}-(x_{1})_{m} \right )  & \cdots & \frac{1}{N}\sum_{i=1}^{N}\left ( x^{(i)}_{1}-(x_{1})_{m} \right )\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\\ 
\vdots & \ddots  &  
\vdots
\\ 
\frac{1}{N}\sum_{i=1}^{N}\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\left ( x^{(i)}_{1}-(x_{1})_{m} \right ) & 
\cdots & 
\frac{1}{N}\sum_{i=1}^{N}\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\left ( x^{(i)}_{n}-(x_{n})_{m} \right )
\end{bmatrix}$

 

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

 

$\frac{1}{N}\sum_{i=1}^{N}\left ( \vec{x}^{(i)}-\left ( \vec{x} \right )_{m} \right )
\left ( \vec{x}^{(i)}-\left ( \vec{x} \right )_{m} \right )^{T}
=
\begin{bmatrix}
Var\left [ x_{1} \right ]  & \cdots & Cov\left [ x_{1},x_{n} \right ]\\ 
\vdots & \ddots  &  
\vdots
\\ 
Cov\left [ x_{n},x_{1} \right ]& 
\cdots & 
Var\left [ x_{n} \right ]
\end{bmatrix}$

 

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

$\vec{x}^{(i)}$ 에서 평균벡터 $\left ( \vec{x} \right )_{m}$ 을 뺀 벡터에서 출발합시다. 

 

$\vec{x}^{(i)}-\left ( \vec{x} \right )_{m}=\begin{bmatrix}
x^{(i)}_{1}-(x_{1})_{m}\\ 
\vdots \\ 
x^{(i)}_{n}-(x_{n})_{m}\\ 
\end{bmatrix}$

 

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

 

$X=\begin{bmatrix}
\left ( \vec{x}^{(1)}-(\vec{x})_{m} \right )^{T}\\ 
\vdots \\ 
\left ( \vec{x}^{(N)}-(\vec{x})_{m} \right )^{T}
\end{bmatrix}$

 

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

 

$X=\begin{bmatrix}
x^{(1)}_{1}-(x_{1})_{m} & \cdots & x^{(1)}_{n}-(x_{n})_{m} \\ 
\vdots & \ddots &  \vdots \\ 
x^{(N)}_{1}-(x_{1})_{m} & \cdots & x^{(N)}_{n}-(x_{n})_{m}
\end{bmatrix}$

 

아래와 같이 곱해봅시다. 

 

$X^{T}X=
\begin{bmatrix}
x^{(1)}_{1}-(x_{1})_{m} & \cdots & x^{(N)}_{1}-(x_{1})_{m} \\ 
\vdots & \ddots &  \vdots \\ 
x^{(1)}_{n}-(x_{n})_{m} & \cdots & x^{(N)}_{n}-(x_{n})_{m}
\end{bmatrix}
\begin{bmatrix}
x^{(1)}_{1}-(x_{1})_{m} & \cdots & x^{(1)}_{n}-(x_{n})_{m} \\ 
\vdots & \ddots &  \vdots \\ 
x^{(N)}_{1}-(x_{1})_{m} & \cdots & x^{(N)}_{n}-(x_{n})_{m}
\end{bmatrix}$

 

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

 

$X^{T}X
=
\begin{bmatrix}
\sum_{i=1}^{N}\left ( x^{(i)}_{1}-(x_{1})_{m} \right )\left ( x^{(i)}_{1}-(x_{1})_{m} \right )  & \cdots & \sum_{i=1}^{N}\left ( x^{(i)}_{1}-(x_{1})_{m} \right )\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\\ 
\vdots & \ddots  &  
\vdots
\\ 
\sum_{i=1}^{N}\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\left ( x^{(i)}_{1}-(x_{1})_{m} \right ) & 
\cdots & 
\sum_{i=1}^{N}\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\left ( x^{(i)}_{n}-(x_{n})_{m} \right )
\end{bmatrix}$

 

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

 

$\frac{1}{N}X^{T}X
=
\begin{bmatrix}
\frac{1}{N}\sum_{i=1}^{N}\left ( x^{(i)}_{1}-(x_{1})_{m} \right )\left ( x^{(i)}_{1}-(x_{1})_{m} \right )  & \cdots & \frac{1}{N}\sum_{i=1}^{N}\left ( x^{(i)}_{1}-(x_{1})_{m} \right )\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\\ 
\vdots & \ddots  &  
\vdots
\\ 
\frac{1}{N}\sum_{i=1}^{N}\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\left ( x^{(i)}_{1}-(x_{1})_{m} \right ) & 
\cdots & 
\frac{1}{N}\sum_{i=1}^{N}\left ( x^{(i)}_{n}-(x_{n})_{m} \right )\left ( x^{(i)}_{n}-(x_{n})_{m} \right )
\end{bmatrix}$

 

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

 

$\frac{1}{N}X^{T}X
=
\begin{bmatrix}
Var\left [ x_{1} \right ]  & \cdots & Cov\left [ x_{1},x_{n} \right ]\\ 
\vdots & \ddots  &  
\vdots
\\ 
Cov\left [ x_{n},x_{1} \right ]& 
\cdots & 
Var\left [ x_{n} \right ]
\end{bmatrix}$

반응형

댓글