주성분 분석

직관

주성분 분석은 각각의 축이 주요 요소들을 표현하는 n-차원의 타원면에 데이터를 맞추는 것으로 생각될 수 있다. 만약 타원면의 몇 개의 축이 작으면, 축에 따른 변화 또한 작을 것이다. 여기서 우리의 데이터 집합의 표현에서 작은 축과 그에 해당하는 주요 요소들을 생략함으로써 우리는 상응하는 작은 정보만을 잃을 수 있다.
타원면의 축을 찾기 위해, 먼저 각각의 변수의 평균을 데이터 집합에서 빼주어 원래의 데이터 주변에 중심을 두도록 해야만 한다. 그 뒤, 공분산 행렬의 데이터를 계산하고, 공분산 행렬의 고유 값과 그에 따른 벡터를 계산한다. 그러면 우리를 고유 벡터를 직교화해야 하고, 각각을 단위 벡터로 정규화해야 한다. 그것이 되면, 각각의 서로 직교된 단위 고유 벡터들은 데이터에 맞춰진 타원면의 축으로 해석될 수 있다. 각각의 고유 벡터가 표현하는 변화의 비율은 고유 벡터에 따른 고유 값을 모든 고유 값의 합으로 나누는 것으로 계산 가능하다.
이 과정은 데이터를 스케일링하는 것에 민감하다는 것과 최적의 결과를 얻기 위해 어떻게 스케일 하는 것이 최고인지에 대해서는 합의의 여지가 없다는 것에 주목해야 한다.

세부 사항

PCA는 수학적으로 직교 선형 변환으로 정의된다. 직교 선형 변환이란 어떤 데이터를 새로운 좌표계로 변환하는 것을 말한다. 데이터를 투사했을 때 가장 큰 분산이 첫 번째 좌표로 오고, 그 다음으로 큰 분산이 두 번째 좌표로 오고, 그 다음이 그 다음 좌표로 오는 식으로 할 수 있다. 여기서 첫 번째 좌표를 첫 번째 주성분이라고 부른다.
열 방향으로 0인 실증적 평균을 가진(각 열의 표본 평균이 0으로 이동됨) 어떤 한 데이터 행렬 X를 생각해보자. n개의 행이 각각 실험의 다른 반복을 나타내고, p개의 열이 특정 종류의 자료(특정 센서로 부터의 결과들)를 준다고 하자.
수학적으로 변환은 무게 및 하중의 p차원 벡터들의 집합 로 정의된다. X의 각 행 벡터 를 새로운 주성분 점수 벡터로 매핑시킨다. 여기서, 와 같다. t의 각각의 변수들은 x로부터 가장 큰 분산을 성공적으로 상속받은 데이터 집합이라고 할 수 있고, 각각의 하중 벡터 w는 단위벡터로 제한된다.

더 생각해볼 것들

유클리드 공간의 주어진 점들에서, 첫 번째 주성분은 다차원 공간의 평균점을 지나는 선에 대응되며 이 선에서 점들 사이의 제곱 합이 최소화 된다. 두 번째 주성분은 모든 점들에서 첫 번째 주성분의 관계를 제거한 뒤, 첫 번째 주성분을 구할 때와 동일한 방식으로 얻어진다. 특잇값( 행렬의 대각성분)들은  행렬의 고윳값의 제곱근이다. 각각의 고윳값들은 "분산"의 정도에 비례하며 (보다 정확히는 다차원 공간의 평균점에서 점들 사이의 제곱 거리합) 이 값들은 고유 벡터와 관련되어 있다. 모든 고윳값들의 합은 다차원 공간의 평균점에서부터 모든 점들 사이 거리를 제곱한 것과 같다. 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와 비슷하다. 수렴했을 때, 은닉층에서의 개 뉴런의 가중치 벡터는 첫 개의 주성분에 의해 스팬되는 공간의 기저를 형성한다. PCA와는 다르게, 이 방법은 반드시 직교하는 벡터를 만들어내지는 않는다.
PCA는 패턴 인식 분야에서 자주 사용되는 기본 방법 중의 하나다. 그러나 이것은 클래스 분리도에 최적화 되지는 않는다. 다른 방법으로 선형판별분석(Linear Discriminant Analysis)이 이 점을 고려하는 방법이다.

한계점

위에서 기술했듯, PCA의 결과는 변수의 스케일링에 의존적이다. PCA의 스케일-불변한 형태도 개발된 바 있다.
PCA의 적용 범위는 식을 유도하는 과정에서 세웠던 몇 가지 가정들 에 의해 제한이 된다.

반복적인 계산

고차원의 데이터의 실제 구현에서, 공분산 방법은 효율적이지 않기 때문에 거의 쓰이지 않는다.
첫 번째 주성분을 효율적으로 계산하는 한 방법은 아래의 의사 코드에서 보여진다.
데이터 행렬 X는 평균 0을 가지고, 공분산 행렬은 계산하지 않는다.
r = a random vector of length p
do c times:
      s = 0 (a vector of length p)
      for each row 
            
      
return r
이 알고리즘은 XᵀX r의 계산, 정상화, 결과를 r에 다시 배치하는, 단순히 효율적인 방법이다.
이는 공분산 행렬을 계산하는 np² 연산을 하지 않는다.
r은 일반적으로 적은 수의 반복(c)으로 X의 첫 번째 주성분에 가까워진다.
(s의 크기는 각 반복 이후로 더 커진다. 이 크기가 기계의 정밀도만큼 적은 양만큼 증가할 때 수렴된다고 볼 수 있다.)
이후의 주성분은 X에서 성분 r을 뺌으로써 계산할 수 있고, 이 알고리즘을 반복함으로써 그 다음 주성분을 찾을 수 있다.
하지만 만약 주성분의 수가 더 많이 요구된다면, 이러한 간단한 접근은 수치상으로 불안정하다. 왜냐하면 계산의 부정확함이 이후의 주성분의 추측에 부가적으로 영향을 끼치게 되기 때문이다.
좀 더 발전된 방법으로는 란초스 알고리즘에 밀접하게 연관된 것으로, 이 기본 아이디어에서 발전시킬 수 있다.
각 주성분에 대응되는 고윳값을 계산하는 한 방법은 주성분을 빼기 전후에 행과 중심간의 평균 자승 거리에서 차이를 측정하는 것이다.
제거된 성분과 대응하는 고윳값은 이 차이와 같다.

NIPALS 방법

NIPALS는 비선형 반복 부분 최소 제곱법(Non-linear iterative partial least squares)를 나타내는 말이다.
오믹스 과학(예를 들어, 유전체학, 대사체학) 에서 생성되는 것들과 같은 매우 고차원인 데이터셋에는 보통 처음 몇몇의 PC들을 계산하는 것만이 필요하다.
NIPALS 알고리즘은 X로부터 t₁와 w₁ᵀ을 계산하는 알고리즘이다.
외적 t₁w₁ᵀ은 잔여 행렬 E₁을 남기면서, X에서 빠질 수 있다.
이것은 이후의 PC들을 계산하는 데에 쓰일 수 있다. 이는 공분산 행렬의 계산을 피함으로써 계산 시간을 엄청나게 감소시킬 수 있다.
하지만, 큰 데이터 행렬이거나 높은 열공선도를 가진 행렬은 NIPALS가 각 반복 단계에서 측정된 기계 정밀도의 한계로 인해 직교성의 손실을 겪는다.
각 반복 단계에서 이러한 직교성의 손실을 막기 위해, 그람슈미트(GS) 재직교화 알고리즘이 점수와 하중에 적용된다.

온라인/순차 추정

데이터가 일괄적으로 저장되지 않고 한 조각씩 도착하는 "온라인" 또는 "스트리밍" 상황에서는 연속적으로 업데이트되는 PCA 투영의 추정치를 만드는 것이 유용하다.

신경 과학

변형된 주성분분석은 신경과학분야에서 뉴런이 활동전위를 만들어낼 확률을 증가시키는 데 기여하는 자극의 구체적인 특성을 발견하는 데 이용되기도 한다. 이 기술은 스파이크-트리거드 공분산(Spike-triggered covariance) 분석으로 알려져 있다. 일반적인 적용 사례에서, 실험자는 (피험자에게 주는 감각 입력으로서, 또는 뉴런에 직접 주입되는 전류로서) 백색잡음을 자극으로 주고 뉴런활동의 결과로 만들어지는 활동전위와 스파이크의 변화를 기록한다. 아마도, 자극의 몇 가지 특징들이 뉴런의 활동이 더 왕성해지도록 만들 것이다. 이러한 특징들을 추출해내기 위해 실험자는 스파이크의 직전에 주어졌던 자극들의 집합(보통 100ms 단위로 값들을 일정 윈도우 안의 자극들을 이산화시킨다)인 스파이크-트리거드 앙상블(Spike-triggered ensemble)의 공분산행렬을 계산한다. 스파이크-트리거드 공분산 행렬과 이전 자극 앙상블(prior stimulus ensemble)(같은 길이의 윈도우에 담긴 이전 자극들)의 공분산 행렬의 차이의 고유 벡터들은 스파이크-트리거드 앙상블의 분산이 이전 자극 앙상블에서부터 가장 멀리 퍼지는 쪽을 향하게 된다. 구체적으로, 가장 큰 양수 고윳값에 대응되는 고유 벡터는 스파이크-트리거드 앙상블의 분산이 양의 방향으로 가장 크게 변하는 방향을 가리키게 된다. 이것은 스파이크를 만들어내는 자극의 변화 방향을 나타내므로, 적절한 자극 특징의 좋은 근사가 된다.
신경과학에서, 주성분분석은 뉴런의 활동전위 모양으로부터 특정 뉴런을 알아채는데 사용되기도 한다. 스파이크 정렬(Spike sorting)은 세포 외 기록 기술들이 거의 하나 이상의 뉴런의 신호들을 포착하기 때문에 중요한 과정이다. 스파이크 정렬을 할 때에는 먼저 활동전위 파형 공간의 차원을 줄인 뒤, 개별 뉴런들의 특정 활동전위에 클러스터 분석 기법을 적용시킨다.

PCA와 K-평균 알고리즘 (K-means clustering)의 관계

에서는, K-평균 알고리즘의 이완된 답(각 데이터의 클러스터의 번호들로 주어짐)은, PCA의 주성분으로 구할 수 있다고 주장한다. 다시 말해, 주방향에 의해 선형생성되는 부분공간은 클러스터 중심점으로 선형생성되는 부분공간과 동등하다는 것이다. 그러나, PCA가 K-평균 알고리즘의 유용한 이완이라는 것은 새롭게 밝혀진 결과가 아니었으며( 참조), 클러스터의 중심점들이 선형생성하는 부분공간이 주방향들에 의해 선형생성되는 부분공간이라는 주장에 대한 반례를 쉽게 찾을 수 있다.

PCA와 요인 분석 (Factor Analysis)의 관계

주성분분석은 원래 변수들의 선형결합으로 이루어지는 새로운 변수들을 만든다. 새롭게 만들어진 변수들은 서로 직교한다는 특성이 있다. 주성분들은 데이터의 클러스터들을 발견하는 데 사용될 수 있다. 주성분분석은 분산에 초점을 둔 방식으로, 전체 변수들의 분산을 재생성하며 각 주성분들은 변수의 공통적인 특성과 고유한 특성 모두를 반영하게 된다. 주성분분석은 일반적으로 데이터를 줄이는 목적으로 많이 활용되지만, 숨겨진 구조나 요인을 발견하는 목적으로는 잘 사용되지 않는다.
요인 분석은 변수들의 선형결합으로 결과가 나타난다는 점에서 주성분분석과 비슷하다. 그러나 주성분분석과는 달리, 요인 분석은 상관관계에 초점을 둔 방식으로 변수들 사이의 상관관계를 재생성한다. 여기서 얻어지는 요인들은 "변수들의 공통된 분산을 반영하지만, 변수 고유의 분산은 배제시킨다." 요인 분석은 데이터의 구조를 파악(숨겨진 구조나 요인들)하거나 인과관계를 모델링할 때 널리 사용된다.

대응 분석

대응 분석(Correspondence Analysis)은 Jean-Paul Benzécri
에 의해 개발되었으며 주성분분석과 개념적으로 비슷하다. 주성분분석과 다른점이 있다면, (음이 아닌) 데이터들을 스케일시켜, 행과 열이 동등하게 취급되도록 한다는 점이다. 대응분석은 주로 분할표(Contingency table)에 적용된다. 대응분석은 이 표와 연관된 카이제곱 통계량을 직교하는 요인들로 분해한다.
대응 분석은 서술하는 기법이기 때문에, 카이제곱 통계량이 적절하든 부적절하든 적용될 수 있다. 추세제거상호연관성분석(Detrended correspondence analysis)나 정규상호연관성분석(Canonical correspondence analysis)와 같은 대응 분석의 몇 가지 변형들도 있다. 한 가지 특별한 확장은 다중 상호연관성 분석(Multiple correspondence analysis)인데 이는 분류적 데이터를 위한 주성분 분석으로 볼 수도 있다.

비선형 일반화

비선형 차원 축소를 위한 최신 방법들 중 대다수는 주성분분석과 K-평균 알고리즘에서 이론적/알고리즘적 기원을 찾을 수 있다. Pearson의 본래 아이디어는 데이터 점들에 "가장 잘 들어맞는" 직선(혹은 평면)을 찾는 것이었다.
주곡면과 변형체 는 주성분분석을 일반화하고, 주성분분석의 기하학적 해석을 확장하는데 자연스러운 기하학적 뼈대가 된다. 엘라스틱맵(Elestic map)알고리즘과 추측지분석(Principal geodesic analysis)를 참고해보자. 주성분분석의 또 다른 일반화는 커널 주성분분석이며, 정부호(positive definite) 커널을 사용하는 커널 힐버트공간에서 주성분분석을 수행하는 것에 해당한다.

다중선형 일반화

다중선형 부분공간 학습에서, 주성분분석은 텐서 표현에서 특징을 직접 추출해내는 다중선형주성분분석(Multilinear PCA; MPCA)으로 일반화된다. MPCA는 텐서의 각 축에서 반복적으로 주성분분석을 수행함으로써 풀 수 있다. 얼굴 인식, 걸음걸이 인식 등에 적용된 바 있으며 비상관 MPCA, 비음(음수가 아닌) MPCA, 그리고 강인한 MPCA 등으로 확장된다.

고차

N-way 주성분분석은 Tucker 분해, PARAFAC, 다중요인분석, 공관성분석, STATIS, DISTATIS 등과 같은 모델로 수행될 수 있다.

강인성 - 가중 주성분분석

주성분분석이 (제곱오차를 최소화하는 관점에서) 수학적으로 최적의 방법인 것은 사실이나, 큰 오차를 만들어내는 데이터의 이상점(outlier)에 민감하다. 따라서 주성분분석을 수행하기에 앞서 이상점들을 제거하는 것이 일반적이다. 그러나, 어떤 상황에서는 이상점을 검출해내기 쉽지 않을 수 있다. 예컨대 상관관계 클러스터링과 같은 데이터 마이닝알고리즘에서, 각 데이터의 클러스터 할당과 이상점 여부를 사전에 확인할 수 없다. 가중 주성분분석에 기반을 둔 주성분분석의 확장판 은, 추정되는 적합성에 따라 데이터마다 가중치를 다르게 두어 알고리즘의 강인성을 높인다.

낮은 계수와 희소 행렬의 분해를 이용한 강인한 PCA

강인한 주성분분석은 심하게 손상된 관측결과에 대해서도 잘 동작하는, 통계적 주성분분석의 변형판이다.

희소 PCA

주성분분석의 주된 단점 중 하나는, 주성분들이 보통 모든 입력 변수들의 선형결합으로 나타난다는 점이다. 희소 주성분분석(Sparse PCA)는 몇 개 변수들만의 선형결합으로 주성분을 나타냄으로써 이러한 단점을 극복한다.