이 질문은 주요 구성 요소를 계산하는 효율적인 방법에 관한 것입니다.
linear PCA의 많은 텍스트는 대소 문자 데이터 의 단일 값 분해를 사용하여 옹호 합니다 . 우리는 데이터가있는 경우 즉, 하고, 변수 (그 교체 할 열을 주요 구성 요소), 우리가 할 SVD : (제곱. 고유치의 뿌리), 특이 값의 주요 대각선을 점유은 , 오른쪽 고유 벡터 는 axes-components에 대한 axis-variables의 직교 회전 행렬이며, 왼쪽 고유 벡터 는 와 같습니다 . 그런 다음 컴포넌트 값을 로 계산할 수 있습니다 .
변수의 PCA를 수행하는 다른 방법은 제곱 행렬 을 분해하는 것입니다 (즉, 은 변수 간의 상관 또는 공분산 등일 수 있음 ). 분해는 고유 분해 또는 특이 값 분해 일 수 있습니다. 정사각형 양의 반 정밀도 행렬을 사용하면 앞에서 설명한대로 의 대각선 과 의 대각선과 같은 고유 값을 갖는 동일한 결과 가 나타납니다 . 구성 요소 값은 입니다.
이제 내 질문 : data 가 큰 행렬이고 사례 수가 변수 수보다 훨씬 많으면 (1) 방법 (1) 이 방법 (2)보다 훨씬 느릴 것으로 예상됩니다 ), 방법 (1)은 SVD와 같은 상당히 비싼 알고리즘을 큰 행렬에 적용하기 때문에; 그것은 우리가 실제로 필요하지 않은 거대한 행렬 (변수의 PCA)를 계산하고 저장 합니다. 경우 그렇다면, 왜 이렇게 많은 texbooks는 옹호에 보이거나 단지 유일한 방법은 (1)을 언급? 어쩌면 그것은 이다 효율적이고 내가 뭔가를 놓친거야?
Joliffe, Principal component analysis, 2nd ed.
실제로 Joliffe는 두 가지 방법을 모두 설명하지만 PCA의 핵심 장에서 내가 기억할 수있는 한 방법 1에 대해서만 말합니다.
R
svd