차원이 관측치보다 큰 경우 공분산 행렬의 고유 분해를 통해 PCA가 여전히 수행됩니까?


10

D = 100 차원 공간 에 N = 20 개의 샘플이 들어 있는 행렬 X가 있습니다. 이제 Matlab에서 자체 주성분 분석 (PCA)을 코딩하고 싶습니다. 먼저 XX 0으로 떨어 뜨 립니다.20×100XN=20D=100XX0

나는 관측치보다 더 많은 차원을 가진 시나리오에서 더 이상 공분산 행렬을 고유 분해하지 않는다는 누군가의 코드를 읽었습니다 . 대신, 우리는 고유 분해 1X0 . 왜 정확한가요?1N1X0X0T

정규 공분산 행렬의 크기는 이며 각 요소는 두 차원 간의 공분산을 나타냅니다. 나에게, 1D×D 는 올바른 치수가 아닙니다! 그것은N×N행렬이므로 우리에게 무엇을 말합니까? 두 관측치의 공분산?!1N1X0X0TN×N


귀하의 질문에 대한 답변은 작업을 수행 한 결과와 같이 열 자체의 공분산 행렬이 필요하지 않은 상황에 있습니다. 당신은 PC를 얻기위한 경로로만 원했습니다. 권리? 그러나 동일한 PCA 결과는 X'X및의 고유 및 XX'svd X및 및를 통해 얻을 수 있습니다 X'. 어떤 경우에는 "로드"라고하는 것이 다른 경우에는 "pc 점수"라고 불리며 그 반대도 마찬가지입니다. 둘 다 좌표 ( : 참조 )와 축이므로 "기본 치수"는 동일합니다.
ttnphns

1
(계속) 그렇다면 분해 할 대상을 자유롭게 선택할 수 있습니다. 더 빠르고 효율적으로 수행 할 분해법을 선택하는 것이 좋습니다. 시 n<p는 분해 적은 RAM과 시간이 덜 걸립니다 XX'그것은 작은 크기 때문이다.
ttnphns

@ttnphns 훌륭한 설명입니다. 지금 요점을 봅니다. 그러나 여전히 고유의 XX'PC에서 PC로 이동하는 데 문제가 있습니다 . 방법을 간단하게 보여 주시겠습니까? PC는 공분산 행렬의 단지 고유 벡터 것을 감안할 때, 나는의 고유에서 이동을 시도 XX'공분산 행렬의 고유에 X'X있지만, 실패했습니다.
Sibbs Gambling

1
가야 해요 아마도 @amoeba (나보다 대수학에서 훨씬 더 민첩한) 또는 다른 독자가 곧 여기를보고 당신을 도울 것입니다. 건배.
ttnphns

1
@ttnphns : 완료 :)
amoeba

답변:


22

D×D

C=1N1X0X0.

N×N

G=1N1X0X0.

주성분 분석 (PCA)은 이들 매트릭스 중 하나의 고유 분해를 통해 구현 될 수있다. 이것들은 같은 것을 계산하는 두 가지 다른 방법입니다.

X=USVCG

C=VS2N1VG=US2N1U.

VUSUCG

N<DDDN<D



1
좋은 대답입니다! 나는 그것이 이름이 있다는 것을 몰랐다! 고마워요! 나는 이제 계산 속도를 높이기 위해 그것을 사용한다고 확신합니다.
Sibbs Gambling

3
US/(n1)VUXU

이 답변은 제가 책에서 본 많은 박람회가 더 명확합니다. 감사.
usεr11852

순전히 참조 목적으로 : IJ Good의 1969 Technometrics 논문 " 매트릭스의 특이 적 분해의 일부 응용 "은이를 처음으로 가장 먼저 참조하는 것 중 하나라고 생각합니다.
usεr11852

1
@MattWenham 정확하게.
amoeba
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.