2013-05-27 3 views
0

데이터 세트는 N 개의 요소와 K 개의 변수로 구성됩니다. PCA를 사용하면 변수의 수를 줄일 수 있지만 K 변수 중 가장 많은 정보를 제공 한 변수를 확인하는 방법은 무엇입니까?PCA를 사용한 형상 선택

1 1 1 2 
2 2 1 4 
3 3 2 11 
1 1 2 7 
2 2 3 14 
3 3 3 16 
1 1 4 17 
2 2 4 19 
3 3 3 16 

내가 1 열은 관계에 의해 결정됩니다 2, 4 열 등의 동일 함을 알 수 : 2 * 1 + 5 * 3 - 5

예를 들어 I는 다음과 같이 설정 데이터를 가지고있다. 따라서 1 열과 3 열은 대부분의 정보를 제공하고 나머지 정보는 추가 정보를 제공하지 않습니다. 그러나 이것을 PCA를 사용하여 계산하는 방법은 무엇입니까? 귀하의 예를 들어

답변

2

:

  PC1   PC2   PC3   PC4 
[1,] 0.3516359 -0.79142416 2.497231e-17 -1.299998e-16 
[2,] 0.3516359 -0.79142416 1.713028e-16 1.168541e-16 
[3,] 1.0831644 0.32331520 4.906878e-16 -3.286408e-17 
[4,] 6.1190936 0.03372767 -9.813756e-17 6.572817e-18 

주요 구성 요소 (고유 값) (COV는 반 명확한 긍정적 인 대칭이기 때문에이는 현실과 직교 보장) 공분산 행렬의 고유 벡터를 X 사용 SQRT 있습니다.

PC3과 PC4가 거의 제로이므로 반올림 허용 오차 내에서 모든 변수 (즉, 공분산 행렬의 '순위'가 2 임)를 설명하는 데 두 가지 요소가 충분하다는 것을 알 수 있습니다.

이것은 숨겨진 변수로 축을 정렬하는 벡터 공간으로 효과적으로 회전합니다. 원래 문제의 열에 대해 얘기하려면 다시 매핑해야합니다. 예 : 가장 큰 항목을 볼 수 있습니다. 우리는 PC1이 주로 'Col 4'에 연결되어 있다고 말하고 있지만 이것은 임의적이며 PC 2는 'Col 1'과 'Col 2'에 동일한 가중치를가집니다. 상관 관계가 인과 관계를 의미하지 않는다는 것을 기억하십시오.

+0

이 매트릭스를 얻기 위해 Matlab 코드를 작성할 수 있습니까? – veeveeoor

+1

필자는 MatLab을 직접 가지고 있지 않지만 pcacov()는 (대칭 양의 반 정량적) 공분산 행렬을 입력으로 사용하면서 원시 데이터 세트의 구성 요소를 pca()/princomp()에서 계산합니다. – jayprich

+0

SciLab 등가물을 살펴보면 표본 공분산 행렬을 계산하고 벡터와 요소를 따로보고 할 것이라고 생각합니다. 우리 행렬은 x '* x의 factorisation으로 인구 공분산과 같은 4x4 행렬입니다. 이와 같은 축 퇴한 경우에는 특이 값 분해 또는 근사를 탐색 해 볼 가치가 있으며 순위도 반환 할 수 있습니다. – jayprich