2017-04-04 1 views
1

데이터의 크기를 줄이기 위해 주성분 분석을 적용하려고합니다. 200x146, 146 개의 피쳐 (치수)가있는 200 개의 관측 (샘플), 각 관측치는 세 가지 클래스 중 하나에 속할 수 있습니다. 내가하려는 것은 데이터를 시각화하여 데이터에 새 샘플을 추가 한 후 클래스 중심이 어떻게 움직이는 지 확인하는 것입니다. 이러한 높은 차원의 데이터를 그리는 것은 불가능하므로 거의 모든 클래스 클러스터에서 데이터를 나타내는 차원을 찾고 있습니다.주요 구성 요소 anaylsis, 얻은 계수는 무엇을 말해 줍니까?

나는 PCA가 고유 벡터의 고유 값을 계산하는 반면, 고유 값은 분산을 계산한다는 것을 알고 있습니다. 분산이 높을수록 데이터가 확산되고 시각화하는 것이 좋습니다. 최고 고유치를 갖는 고유 벡터가 주성분이고,이 성분에 직교하는 축은 PCA에 의해 발견된다. (내가 PCA의 기본 아이디어를 올바르게 이해 했는가?)

그러나 나는 이해하지 못한다. 내가 matlab 함수 pca()를 사용할 때 어떤 정보를 얻는가? 계수를 얻지 만, 그들은 나에게 무엇을 말해 줄까? 어떻게해야합니까? PCA_CLASS_SCATTERPLOT) ';

data=trndata; 
[coeff,score]=pca(data(:,1:end-1)); 

newinputdata=coeff(:, 1:3)*score(:, 1:3 
newinputdata=newinputdata'; 

class1i=find(data(:,end)==1); 
class2i=find(data(:,end)==2); 
class3i=find(data(:,end)==3); 


class1=newinputdata(class1i,:); 
class2=newinputdata(class2i,:); 
class3=newinputdata(class3i,:); 


x=1; 
y=2; 
figure; 
plot(class1(:,x), class1(:,y),'ro') 
hold on 
plot(class2(:,x), class2(:,y),'go') 
hold on 
plot(class3(:,x), class3(:,y),'bo') 
+1

PCA는 확실히 당신이 달성하기를 바라는 좋은 도구이지만, 3 가지 클래스가 있고 2D 선형 사운드를 투영하려고한다는 사실은 [선형 판별 분석] (https : // ko .wikipedia.org/wiki/Linear_discriminant_analysis)도 차원 감소에 사용됩니다. – kazemakase

답변

1

MATLAB의 PCA() 함수는 우리에게 설명 here 많은 유용한 정보를 추출 할 수있는 유연성을 제공합니다.

하나의 인수 (coeff)를 출력하면 146x200 행렬 형식의로드가 반환됩니다. 이제 우리가 물으면, 두 개의 출력에 대해 .i.e.

[COEFF, 점수 = PCA (X)

우리 하중뿐만 아니라 대응하는 스코어 값을 얻을 것이다. 여기에서 coeff * score로 입력 데이터를 재구성 할 수 있습니다.

이제 차원 축소에 대해 두 출력 인수의 첫 번째 요소를 선택하고 coeff (:, 1 : n) * score (: 1 : n) '와 같은 근사치 재구성을 수행합니다.

귀하의 질문에 답변하시기 바랍니다.

+0

답장을 보내 주셔서 감사합니다. 게시물을 볼 수만 있다면 게시물에 코드를 추가했습니다. 나는 새로운 입력 데이터 행렬을 만들었고, 새로운 행렬의 두 번째 첫 번째 차원이 가장 높은 차원의 데이터를 모으는 것으로 가정했습니다. 새로운 입력 데이터 행렬이 가장 높은 점수에 따라 재배치 되었습니까? – xava