주성분 분석

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


통계학에서 주성분 분석(主成分分析), 혹은 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

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

특성[1][편집]

특성 1: 임의의 정수 q (1 ≤ q ≤ p ) 대해, 직교 선형변환을 생각해보자.
y =\mathbf{B'}x
여기서 yq-element 벡터이며 \mathbf{B'}(q × p) 행렬이다. \mathbf{{\Sigma}}_y = \mathbf{B'}\mathbf{\Sigma}\mathbf{B}y에 대한 분산-공분산 행렬이라 하자. 그러면 \mathbf{{\Sigma}}_y대각합 \text{tr} (\mathbf{\Sigma}_y)\mathbf{B} = \mathbf{A}_q일 때 최대화 된다. 이 때 \mathbf{A}_q\mathbf{A}의 첫 번째 q개 열들로 구성된 행렬이다. (\mathbf{B'}\mathbf{B})의 transposition이다.
특성 2: 직교 변환을 다시 생각해보자.
y = \mathbf{B'}x
x, \mathbf{B}, \mathbf{A} 그리고 \mathbf{\Sigma}_y 는 이전과 같이 정의된다. 그러면, \text{tr}(\mathbf{\Sigma}_y)\mathbf{B} = \mathbf{A}_q^*,일 때 최소화 된다. 이 때 \mathbf{A}_q^*\mathbf{A}의 마지막 q개 열로 구성되어있다.

이 특성의 통계적 함의는, 마지막 몇개의 주성분이 중요한 주성분을 제거한 이후에 구조화되지 않은채로 남아있지 않는다는 것이다. 이러한 마지막 주성분들은 가능한한 작은 분산을 가지므로 그들은 그들 나름대로 유용하다. 이들은 x의 원소들 사이에 거의 상수인 선형관계를 찾아내는데 도움이 될 수 있으며, x에서 변수들의 부분집합을 선택할 때, 또 이상점(outlier) 탐지에 있어 회귀에 유용하게 적용될 수 있다.

특성3: (\Sigma의 스펙트럼 분해)
\mathbf{{\Sigma}} = \lambda_{1}\alpha_{1}\alpha_{1}' + \cdots + \lambda_{p}\alpha_{p}\alpha_{p}'

이것의 용례를 살펴보기 이전에, 우선 대각 원소들을 살펴보자.

\text{Var}(x_j) = \sum_{k=1}^P \lambda_{k}\alpha_{kj}^2

그럼, 아마도 이 결과의 주된 통계적 함의는 우리가 x의 모든 원소들의 결합된 분산들을 분해할 수 있을 뿐만 아니라, 공분산행렬 전체를 각 주성분으로부터 \lambda_{k}\alpha_{k}\alpha_{k}'로 분해할 수 있다는 것이다. 단조 감소하지는 않더라도 \lambda_{k}\alpha_{k}\alpha_{k}'k가 증가함에 따라 점점 작아지는 경향을 갖는다. \lambda_{k}\alpha_{k}\alpha_{k}'k가 증가함에 따라 감소할 때, 반대로 \alpha_{k}는 다음과 같은 제약조건 때문에 '같은 크기에 대해' 일정해지려는 경향이 있다: \alpha_{k}'\alpha_{k}=1, k=1,\cdots, p

한계점[편집]

위에서 기술했듯, PCA의 결과는 변수의 스케일링에 의존적이다. PCA의 스케일-불변한 형태도 개발된 바 있다. [2]

PCA의 적용 범위는 식을 유도하는 과정에서 세웠던 몇 가지 가정들[3] 에 의해 제한이 된다.

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

차원 축소를 위해 사용된 PCA가 데이터가 가진 정보의 대부분을 보존한다는 주장은 실제를 오도하는 것이다. 실제로 신호 모델에 그 어떤 가정도 없다면 PCA는 차원이 축소될 때 손실되는 정보의 양을 줄여주는데 아무런 도움이 되지 못한다. 여기서 정보의 양은 정보 엔트로피를 이용해 측정된 값이다.[4]

다음과 같은 가정 하에서,

\mathbf{x}=\mathbf{s}+\mathbf{n}

즉, 데이터 벡터 \mathbf{x}가 의도한 정보가 담긴 신호 \mathbf{s}와 잡음 신호 \mathbf{n}의 합으로 표현될 때, PCA는 정보이론 관점에서도 차원축소를 위한 최적의 방법이라고 할 수 있다.

특히, Linsker는 \mathbf{s}가 가우시안이고 \mathbf{n}가 공분산 행렬이 단위행렬에 비례하는 가우시안일 때, PCA가 의도한 정보 \mathbf{s}와, 차원이 축소된 결과물 \mathbf{y}=\mathbf{W}_L^T\mathbf{x} 사이에 상호정보량(mutual information) I(\mathbf{y};\mathbf{s}) 가 최대화됨을 보였다.[5]

만일 잡음이 여전히 가우시안이고 단위행렬에 비례하는 공분산행렬을 가지지만(다시 말해 \mathbf{n} 벡터의 요소들이 iid), 정보를 담고있는 신호 \mathbf{s}가 가우시안이 아니라면(일반적인 경우에 해당한다), PCA는 적어도 다음과 같이 정의된 정보 손실의 상계를 최소화 한다.[6][7]

I(\mathbf{x};\mathbf{s})-I(\mathbf{y};\mathbf{s}).

더불어 잡음 \mathbf{n}이 iid이고 최소한 정보를 담고 있는 신호 \mathbf{s}보다 더 가우시안을 따른다면(쿨백-라이블러 발산의 관점에서) PCA의 최적성은 역시 유지된다. 일반적으로는 상기 신호모델이 유지되더라도 잡음 \mathbf{n}가 의존적이 되는 순간, PCA는 정보이론적 최적성을 잃게된다.

공분산 방법을 이용한 PCA 계산[편집]

다음은 상관관계 방법과는 반대되는 공분산 방법을 이용한 PCA 계산을 기술한다. 그러나 이 방법은 표준적인 소프트웨어를 활용했을 때 특이값분해를 이용한 방법보다 더 낫다고 할 수는 없다는 점에 유의하자.

목표는 주어진 p차원의 데이터셋 X를 더 작은 차원 L을 갖는 다른 데이터셋 Y로 변환하는 것이다. 동등하게, 우리는 행렬 XKarhunen–Loève 변환(KLT) 행렬인 Y를 찾는 것이 목표이다.

 \mathbf{Y} = \mathbb{KLT} \{ \mathbf{X} \}

데이터셋 구성[편집]

p개의 변수에 대한 관측결과를 담은 데이터 셋이 있다고 해보자. 우리는 이 데이터가 p보다 작은 L개의 변수만으로 표현될 수 있도록 데이터의 크기를 줄이고 싶어한다. 더불어 데이터가 n개의 벡터 \mathbf{x}_1 \ldots \mathbf{x}_n로 주어져 있다고 하자. 각각의 \mathbf{x}_i 들은 p개의 변수에 대한 하나의 관측결과 그룹에 해당한다. 데이터셋 행렬은 다음과 구성된다.

  • \mathbf{x}_1 \ldots \mathbf{x}_n 들은 행벡터로 사용되며, 각각은 p개의 열로 이루어져 있다.
  • 이 행벡터들을 하나의 단일 행렬 X로 묶어서 나타낸다. 이 행렬의 크기는 n × p가 된다.

경험평균 계산[편집]

  • j 차원마다의 경험평균을 계산한다. j = 1, ..., p.
  • 계산된 경험평균들을 p × 1 크기의 평균벡터 uj번째 요소로 둔다.
u[j] = {1 \over n} \sum_{i=1}^n X[i,j]

평균을 이용해 편차 계산[편집]

평균빼기는 데이터를 근사할 때의 평균제곱오차를 최소화하는 주성분기저를 찾을 때 핵심적인 단계이다.[8] 따라서 데이터를 다음과 같이 평균중심화(평균을 0으로 만듦)해줘야 한다.

  • 데이터 행렬 X의 각 행마다 평균벡터 u를 빼준다.
  • 이렇게 평균이 빠진 데이터를 n × p 행렬 B에 저장한다.
\mathbf{B} = \mathbf{X} - \mathbf{h}\mathbf{u}^{T}
여기서 h 는 모든 원소의 값을 1로 갖는 n × 1 크기의 열벡터이다.
h[i] = 1 \, \qquad \qquad \text{for } i = 1, \ldots, n

공분산 행렬 찾기[편집]

  • p × p 크기의 경험공분산행렬 C를 계산한다. 이 행렬은 B 행렬의 외적값으로 계산할 수 있다.
\mathbf{C} = { 1 \over {n-1} } \mathbf{B}^{*} \cdot \mathbf{B}
여기서  *켤레전치 연산자이다. 만약 B 행렬의 모든 원소가 (대다수의 경우에서 처럼) 실수라면, "켤레전치"는 일반적인 전치와 같다.
  • 외적은 벡터에 적용된다. 텐서의 경우에는 텐서곱을 사용해야 한다. 그러나 PCA에서의 공분산행렬은 사실 표본 벡터들간 외적의 합이다. 때문에 B*.B로 나타내질 수 있다. 보다 자세한 사항은 공분산행렬 부분을 참고하자.
  • 공분산 계산을 위해 N 대신 N − 1로 나누는 이유는 베셀 보정 때문이다.

공분산 행렬의 고유벡터와 고유값 찾기[편집]

  • 공분산행렬 C를 다음과 같이 대각화시키는 고유벡터 V를 계산한다.
\mathbf{V}^{-1} \mathbf{C} \mathbf{V} = \mathbf{D}
여기서 DC의 고유값을 담고 있는 대각행렬이다. 이 단계에선 고유벡터와 고유값을 계산하는 컴퓨터기반 알고리즘을 사용하면 된다. 이러한 알고리즘들의 대부분은 이미 R, MATLAB,[9][10] Mathematica,[11] SciPy, IDL (대화형 데이터 언어), GNU 옥타브, OpenCV 등과 같은 행렬 대수 시스템의 하위 컴포넌트로 구현되어있다.
  • 행렬 Dp × p크기의 대각행렬이며 다음과 같이 정의된다.
D[k,l] = \lambda_k \qquad \text{for } k = l
이 때, \lambda_k는 공분산행렬 Cj번째 고유값이다.
D[k,l] = 0 \qquad \text{for } k \ne l.
  • 행렬 Vp개의 열벡터를 담고 있는 p × p 크기의 행렬이다. 여기서 p개의 길이 p인 열벡터 각각은 공분산행렬 C의 고유벡터들이다.
  • 고유값과 고유벡터는 서로 짝지어서 정렬되어있다. j번째 고유값은 j번째 고유벡터에 대응된다.

고유벡터와 고유값 재정렬하기[편집]

  • 고유벡터 행렬 V와 고유값 행렬 D를 고유값에 대해 내림차순으로 정렬한다.
  • 정렬할 때 두 행렬 열들 사이의 짝 관계를 유지해야 한다.

각 고유벡터의 누적 에너지값 계산[편집]

  • 고유값은 각 고유벡터간 데이터의 에너지 분산을 나타내며, 고유벡터는 데이터의 기저를 형성한다. j번째 고유벡터에 대한 누적에너지 g는 1번째부터 j번째 고유값들을 합한 에너지들의 합이다.
g[j] = \sum_{k=1}^j D[k,k] \qquad \mathrm{for} \qquad j = 1,\dots,p

고유벡터의 부분집합을 기저벡터로 선택[편집]

  • V 행렬의 첫 L개 열을 p × L 행렬 W로 저장한다:
 W[k,l] = V[k,l] \qquad \mathrm{for} \qquad k = 1,\dots,p \qquad l = 1,\dots,L
여기서,
1 \leq L \leq p.
  • g 벡터를 적절한 L값을 고르는 기준으로 사용한다. g 값이 적당히 높은 퍼센트 기준을 만족하게 하면서 가능한한 작은 L값을 선택하는 것이 목표이다. 예를 들어, 누적에너지 g가 어떤 임계치(예를 들면 아래와 같이 90퍼센트)를 갓 넘게하는 가장 작은 L을 선택할 수 있다.
 \frac{g[L]}{g[p]} \ge 0.9\,

원본 데이터를 Z-점수로 변환 (선택적)[편집]

  • 공분산행렬C의 주대각성분에 제급근을 취해 p × 1 크기의 경험 표준편차 벡터 s를 만든다. (스케일링 연산은 KLT와 교환법칙이 성립하지 않음에 유의해야 한다. 따라서 상관관계가 이미 제거된 분산 벡터인 C의 대각성분을 스케일 하는데 사용 한다.)
 \mathbf{s} = \{ s[j] \} = \{ \sqrt{C[j,j]} \} \qquad \text{for } j = 1, \ldots, p
  • n × p 크기의 Z-점수 행렬을 계산한다.
 \mathbf{Z} = { \mathbf{B} \over \mathbf{h} \cdot \mathbf{s}^{T} } (각 요소마다 나누어 준다.)
  • 참고: 이 과정은 데이터의 분산에 대해 값들을 정규화 하는 과정으로, 다양한 사례에 유용하게 적용되지만, PCA/KLT의 핵심적인 부분은 아니다.

데이터의 Z-점수를 새로운 기저로 투영[편집]

  • 투영된 벡터는 다음 행렬의 각 열들에 해당한다.
 \mathbf{T} =  \mathbf{Z} \cdot \mathbf{W} = \mathbb{KLT} \{ \mathbf{X} \}.
  • T 행렬의 행들은 행렬 X의 행들에 담겨있는 데이터 벡터들의 Karhunen–Loeve 변환 (KLT)를 나타낸다.