2017-12-19 4 views
0

필자는 크기 [4096 x 180]의 특징 벡터를 가지고 있습니다. 여기서 180은 샘플 수이고 4096은 각 샘플의 특징 벡터 길이입니다.치수 감축을위한 PCA

나는 PCA를 사용하여 데이터의 차원을 줄이려고합니다.

MATLAB [V U]=pca(X)의 pca 내장 함수를 사용하고 X_rec= U(:, 1:n)*V(:, 1:n)', n으로 데이터를 재구성 해 보았습니다.

  1. 어떻게 감소 차원을 구하는 방법이 X 180

    4096 매트릭스가 지금은 3 개 질문이 반환?

  2. n을 200으로 입력하면 매트릭스 크기가 늘어남에 따라 오류가 발생하여 샘플 크기보다 작은 크기를 줄일 수 없다는 가정이 나옵니다. 사실입니까?
  3. 올바른 크기의 축소 된 치수를 찾는 방법은 무엇입니까?

추가 분류를 위해 축소 된 치수 피쳐 세트를 사용해야합니다.

누군가가 pca 코드에 대한 단계별 설명을 통해 자세한 단계를 제공 할 수 있다면 고맙겠습니다. 나는 많은 곳을 보았지만 혼란은 여전히 ​​지속됩니다.

+0

서식을 크게 개선했습니다. – zx485

+0

@ zx485 감사합니다. – Nazzu

답변

0

도시 데이터를 분석하려면 Matlab example을 참조하십시오. 여기

load cities; 
[~, pca_scores, ~, ~, var_explained] = pca(ratings); 

, pca_scoresvar_explained의 각 구성 요소의 각각의 차이와 PCA 성분이다 : 여기서

일부 단순화 된 코드이다. pca을 실행 한 후에 명시적인 곱셈을 수행 할 필요가 없습니다. Matlab은 컴포넌트를 직접 제공합니다.

귀하의 경우 데이터 X4096-by-180 행렬입니다. 즉, 4096 개의 샘플과 180 기능이있는 것으로 간주하십시오. 귀하의 목표는 p 특징을 갖도록 차원을 줄이는 것이며, 여기서 p < 180입니다. matlab에, 당신은 단순히

p = 100;  
[~, pca_scores, ~, ~, var_explained] = pca(X, 'NumComponents', p); 

pca_scores

4096-by-p 매트릭스 될 것입니다, 다음을 실행할 수 있으며 var_explained 길이 p의 벡터가 될 것입니다.

귀하의 질문에 대답하려면 :

  1. 어떻게 감소 차원을 얻기 위해? 위 예에서 pca_scores은 축소 된 차원 데이터입니다.
  2. n을 200으로 입력하면 행렬 크기가 커짐에 따라 오류가 발생하여 샘플 크기보다 더 작은 차원을 줄일 수 없다는 가정이 생겼습니다. 사실입니까? 축소 치수가 180보다 작아야하므로 200을 사용할 수 없습니다.
  3. 올바른 크기의 축소 된 치수를 찾는 방법은 무엇입니까? var_explained 벡터를 확인하여이 결정을 내릴 수 있습니다.일반적으로 약 99 %의 기능 차이를 유지하려고합니다.here에 대해 자세히 알아볼 수 있습니다.
+0

이 사이트를 확인했지만 이해할 수 없어서 내 문제에 적용 할 수 없습니다. 자세한 설명은 – Nazzu

+0

@Nazzu입니다. 더 자세한 정보를 제공하기 위해 자세한 내용을 편집했습니다. 희망이 도움이됩니다. – kedarps