D = 100 차원 공간 에 N = 20 개의 샘플이 들어 있는 행렬 X가 있습니다. 이제 Matlab에서 자체 주성분 분석 (PCA)을 코딩하고 싶습니다. 먼저 X 를 X 0으로 떨어 뜨 립니다.
나는 관측치보다 더 많은 차원을 가진 시나리오에서 더 이상 공분산 행렬을 고유 분해하지 않는다는 누군가의 코드를 읽었습니다 . 대신, 우리는 고유 분해 1 . 왜 정확한가요?
정규 공분산 행렬의 크기는 이며 각 요소는 두 차원 간의 공분산을 나타냅니다. 나에게, 1 는 올바른 치수가 아닙니다! 그것은N×N행렬이므로 우리에게 무엇을 말합니까? 두 관측치의 공분산?!
(계속) 그렇다면 분해 할 대상을 자유롭게 선택할 수 있습니다. 더 빠르고 효율적으로 수행 할 분해법을 선택하는 것이 좋습니다. 시
—
ttnphns
n<p
는 분해 적은 RAM과 시간이 덜 걸립니다 XX'
그것은 작은 크기 때문이다.
@ttnphns 훌륭한 설명입니다. 지금 요점을 봅니다. 그러나 여전히 고유의
—
Sibbs Gambling
XX'
PC에서 PC로 이동하는 데 문제가 있습니다 . 방법을 간단하게 보여 주시겠습니까? PC는 공분산 행렬의 단지 고유 벡터 것을 감안할 때, 나는의 고유에서 이동을 시도 XX'
공분산 행렬의 고유에 X'X
있지만, 실패했습니다.
가야 해요 아마도 @amoeba (나보다 대수학에서 훨씬 더 민첩한) 또는 다른 독자가 곧 여기를보고 당신을 도울 것입니다. 건배.
—
ttnphns
@ttnphns : 완료 :)
—
amoeba
X'X
및의 고유 및XX'
svdX
및 및를 통해 얻을 수 있습니다X'
. 어떤 경우에는 "로드"라고하는 것이 다른 경우에는 "pc 점수"라고 불리며 그 반대도 마찬가지입니다. 둘 다 좌표 ( 예 : 참조 )와 축이므로 "기본 치수"는 동일합니다.