주성분 분석

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색


통계학에서 주성분 분석(主成分分析), 혹은 PCA(Principal component analysis)는 데이터 집합을 분석하는 기법 가운데 하나이다. 주성분 분석은 데이터를 한개의 축으로 사상시켰을 때 그 분산이 가장 커지는 축이 첫 번째 좌표축으로 오고, 두 번째로 커지는 축이 두 번째… 와 같은 방법으로 차례로 놓이도록 새로운 좌표계로 데이터를 선형 변환한다. 이와 같이 각각의 축에 데이터의 "가장 중요한" 성분을 위치시킴으로써 여러가지 응용이 가능하다.

주성분 분석은 카리 카루넨미셸 뢰브의 이름을 따서 이산 카루넨-뢰브 변환(Karhunen-Loève transform 또는 KLT), 또는 해롤드 호텔링의 이름을 따서 호텔링 변환이라 불리기도 한다. 주성분 분석은 가장 큰 분산을 갖는 부분공간(subspace)을 보존하는 최적의 선형 변환이라는 특징을 갖는다. 그러나 이산 코사인 변환과 같은 다른 방법에 비해 더 많은 계산시간을 요구하는 단점이 있다. 다른 선형 변환과 달리 주성분 분석은 정해진 기저 벡터를 갖지 않으며, 기저 벡터는 데이터의 특성에 따라 달라진다.

데이터 집합의 전체 평균이 0이라고 가정하면, (아닐 경우 평균을 데이터 집합에서 뺀다) 데이터 집합 x의 주성분 w1은 다음과 같이 정의된다.

\mathbf{w}_1
 = \arg\max_{\Vert \mathbf{w} \Vert = 1} E\left\{ \left( \mathbf{w}^T \mathbf{x}\right)^2 \right\}

(arg max는 함수f(x)의 값을 최대로 만드는 x를 가리킨다.)

k-1개의 주성분이 이미 주어져 있을 때 k번째 주성분은 앞의 k-1개 주성분을 뺌으로써 찾을 수 있다 :

\mathbf{\hat{x}}_{k - 1}
 = \mathbf{x} -
 \sum_{i = 1}^{k - 1}
 \mathbf{w}_i \mathbf{w}_i^T \mathbf{x}

그리고 이 값을 데이터 집합에서 뺀 다음 주성분을 새로 찾는다.

\mathbf{w}_k
 = \arg\max_{\Vert \mathbf{w} \Vert = 1} E\left\{
 \left( \mathbf{w}^T \mathbf{\hat{x}}_{k - 1}
 \right)^2 \right\}.

따라서 카루엔-뢰브 변환은 데이터 행렬 X특이값 분해를 찾은 다음,

\mathbf{X}=\mathbf{W}\mathbf{\Sigma}\mathbf{V}^T,

XL개의 특이 벡터, WL로 정의된 부분공간으로 사상시켜 부분 데이터 집합 Y를 찾는 것과 같다.

\mathbf{Y}=\mathbf{W_L}^T\mathbf{X} = \mathbf{\Sigma_L}\mathbf{V_L}^T

X의 특이값 벡터 행렬 W는 공분산 C=XXT고유벡터 행렬 W와 동일하다.

\mathbf{X}\mathbf{X}^T = \mathbf{W}\mathbf{\Sigma}^2\mathbf{W}^T

가장 큰 고윳값을 갖는 고유벡터는 데이터 집합에서 가장 강한 상관성을 갖는 차원에 대응된다.

직관[편집]

주성분 분석은 각각의 축이 주요 요소들을 표현하는 n-차원의 타원면에 데이터를 맞추는 것으로 생각될 수 있다. 만약 타원면의 몇 개의 축이 작으면, 축에 따른 변화 또한 작을 것이다. 여기서 우리의 데이터 집합의 표현에서 작은 축과 그에 해당하는 주요 요소들을 생략함으로써 우리는 상응하는 작은 정보만을 잃을 수 있다.

타원면의 축을 찾기 위해, 먼저 각각의 변수의 평균을 데이터 집합에서 빼주어 원래의 데이터 주변에 중심을 두도록 해야만 한다. 그 뒤, 공분산 행렬의 데이터를 계산하고, 공분산 행렬의 고유 값과 그에 따른 벡터를 계산한다. 그러면 우리를 고유 벡터를 직교화해야 하고, 각각을 단위 벡터로 노말라이즈해야 한다. 그것이 되면, 각각의 서로 직교된 단위 고유 벡터들은 데이터에 맞춰진 타원면의 축으로 해석될 수 있다. 각각의 고유 벡터가 표현하는 변화의 비율은 고유 벡터에 따른 고유 값을 모든 고유 값의 합으로 나누는 것으로 계산 가능하다.

이 과정은 데이터를 스케일링하는 것에 민감하다는 것과 최적의 결과를 얻기 위해 어떻게 스케일 하는 것이 최고인지에 대해서는 합의의 여지가 없다는 것에 주목해야 한다.

세부 사항[편집]

2.1 첫 번째 성분[편집]

2.2 그 밖의 성분들[편집]

2.3 공분산[편집]

2.4 차원 축소[편집]

2.5 특이값 분해[편집]

더 생각해볼 것들[편집]

유클리드 공간의 주어진 점들에서, 첫 번째 주성분은 다차원 공간의 평균점을 지나는 선에 대응되며 이 선에서 점들 사이의 제곱 합이 최소화 된다. 두 번째 주성분은 모든 점들에서 첫 번째 주성분의 관계를 제거한 뒤, 첫 번째 주성분을 구할 때와 동일한 방식으로 얻어진다. 특이값(\Sigma 행렬의 대각성분)들은 X^TX 행렬의 고유값의 제곱근이다. 각각의 고유값들은 "분산"의 정도에 비례하며 (보다 정확히는 다차원 공간의 평균점에서 점들 사이의 제곱 거리합) 이 값들은 고유벡터와 관련되어 있다. 모든 고유값들의 합은 다차원 공간의 평균점에서부터 모든 점들 사이 거리를 제곱한 것과 같다. PCA는 본질적으로 평균 근방의 점들을 주성분들과 정렬하기 위해 회전시킨다. 이것은 직교 변환을 이용해 첫 번째 몇 개의 차원으로 분산을 가능한한 크게 한다. 따라서 남아있는 차원의 값들은 작은 값을 갖는 경향이 있고 최소한의 정보 손실만으로 차원이 줄여질 것이다. PCA는 종종 이런 식으로 차원 축소를 위해 사용된다. PCA에 대해 특기할 점은 가장 큰 "분산"(위에 정의 했듯)을 가지는 부분공간을 유지하는 최적 직교 변환이라는 것이다. 그러나 이러한 장점의 이면에는 이산 코사인 변환 이나 DCT로 알려진 DCT-II에 비해 높은 계산비용이 필요하다는 단점이 있다. 비선형 차원 축소 기술은 PCA보다 대체로 더 많은 계산을 요구한다.

PCA는 변수의 크기 조정에 민감하다. 만약 같은 분산을 갖는 두 개의 변수가 있고 이 둘에 양의 상관관계가 존재한다면, PCA는 45도 회전을 수반할 것이고 이 때 주성분에 대한 두 변수 각각의 가중치는 동일할 것이다. 그러나 동일한 상황에서 첫 번째 변수의 값들이 100배가 되면 첫 번째 주성분은 이 첫 번째 변수와 거의 같은 방향이 되고 두 번째 변수에는 매우 적은 영향만을 받게 된다. 반면 두 번째 성분은 거의 두 번째의 원래 변수들과 정렬된다. 이것은 서로 다른 변수들이 서로 다른 단위(기온, 질량 처럼)를 가지고 있을 때, PCA는 임의적인 분석방법이 될 수 있음을 시사한다. (온도의 단위로 섭씨를 쓰는지 화씨에 따라 다른 결과를 얻게 된다.) Pearson이 작성한 "On Lines and Planes of Closest Fit to Systems of Points in Space" – "in space" 라는 제목의 최초 논문에서는 물리적인 유클리드 공간을 다루고 있어 이러한 문제점이 크게 드러나지 않는다. PCA를 덜 임의적이게 하는 방법 중 하나는, 각각의 변수들을 표준화시켜 모두 단위 분산을 갖게 하는 것이다. 다시 말해 PCA의 기저로 자기공분산 행렬이 아닌 자기상관관계 행렬을 사용하는 것이다. 그러나 이 방법은 신호공간의 모든 차원에서 값들의 변동을 단위 분산으로 압축(또는 팽창)시킨다.

평균 빼기(혹은 평균 중심화)는 PCA를 수행했을 때 첫 번째 성분이 최대 분산 방향을 나타내도록 보장해준다. 만약 평균 빼기가 수행되지 않으면 첫 번째 주성분은 데이터의 평균에 더 혹은 덜 대응되게 될 것이다. 평균 0은 데이터 근사의 평균 제곱 오차를 최소화하는 기저를 찾는데 필요하다.

PCA는 기상학에서 사용되는 경험직교함수와 동등하다.

선형 은닉층을 가지는 오토인코더 인공신경망은 PCA와 비슷하다. 수렴했을 때, 은닉층에서의 K개 뉴런의 가중치 벡터는 첫 K개의 주성분에 의해 스팬되는 공간의 기저를 형성한다. PCA와는 다르게, 이 방법은 반드시 직교하는 벡터를 만들어내지는 않는다.

PCA는 패턴 인식 분야에서 자주 사용되는 기본 방법 중의 하나다. 그러나 이것은 클래스 분리도에 최적화 되지는 않는다. 다른 방법으로 선형판별분석(Linear Discriminant Analysis)이 이 점을 고려하는 방법이다.


기호표와 축약어들[편집]

기호 의미 차원 인덱스
\mathbf{X} = \{ X[i,j] \} 모든 데이터 벡터를 담고 있는 데이터 행렬. 한 행이 벡터 하나에 대응됨.  n \times p  i = 1 \ldots n
 j = 1 \ldots p
n \, 데이터 셋에서 행벡터의 개수 1 \times 1 스칼라
p \, 각각의 행백터에서 요소들의 수 (차원) 1 \times 1 스칼라
L \, 차원이 줄여진 부분공간의 차원수,  1 \le L \le p 1 \times 1 스칼라
\mathbf{u} = \{ u[j] \} 경험적 평균 벡터, 데이터 행렬의 각 j 열들의 평균  p \times 1  j = 1 \ldots p
\mathbf{s} = \{ s[j] \} 경험적 표준편차, 데이터 행렬의 각 j 열들의 표준편차  p \times 1  j = 1 \ldots p
\mathbf{h} = \{ h[i] \} 모든 원소의 값이 1인 벡터  1 \times n  i = 1 \ldots n
\mathbf{B} = \{ B[i,j] \} 평균벡터와의 차이 행렬  n \times p  i = 1 \ldots n
 j = 1 \ldots p
\mathbf{Z} = \{ Z[m,n] \} Z 점수 행렬, 각 m번째 줄은 평균벡터와 표준편차 벡터를 이용해 표준화 됨  n \times p  i = 1 \ldots n
 j = 1 \ldots p
\mathbf{C} = \{ C[k, l] \} 공분산행렬  p \times p  k = 1 \ldots p
 l = 1 \ldots p
\mathbf{R} = \{ R[k, l] \} 상관관계행렬  p \times p  k = 1 \ldots p
 l = 1 \ldots p
 \mathbf{V} = \{ V[j, k] \} C 행렬의 고유벡터들을 담고있는 행렬. 각 열은 각 고유벡터에 대응됨.  p \times p  j = 1 \ldots p
 k = 1 \ldots p
\mathbf{D} = \{ D[k, l] \} C 행렬의 고유값들을 담고 있는 대각행렬. 주대각성분에 고유값이 들어감.  p \times p  k = 1 \ldots p
 l = 1 \ldots p
\mathbf{W} = \{ W[j, k] \} 기저벡터 행렬. 각 열이 기저벡터들에 대응됨. 각 기저벡터는 C의 고유벡터들 중 하나이고 W의 벡터들은 V의 서브셋이다.  p \times L  j = 1 \ldots p
 k = 1 \ldots L
\mathbf{T} = \{ T[i, k] \} n 개의 행벡터로 이루어진 행렬. 각 행벡터들은 데이터 행렬 X의 데이터를 W 행렬의 열들이 이루는 기저공간에 투영시킨 벡터.  n \times L  i = 1 \ldots n
 k = 1 \ldots L

주성분분석의 특성과 한계점[편집]

특성[편집]

한계점[편집]

주성분분석과 정보 이론[편집]