고차원 데이터 세트를 2 차원으로 축소하려고합니다. 그러나 전 데이터 세트 전체에 액세스 할 수는 없습니다. 그래서, N 차원 벡터를 취하여 2 차원 벡터를 반환하는 함수를 생성하고 싶습니다. 즉, N 차원 공간에서 가까운 벡터에주는 경우, 결과는 2 차원으로 가깝습니다. 공간.치수 감소
SVD가 내가 필요한 대답이라고 생각했지만 제대로 작동하지 않습니다.
간단히하기 위해 N = 3으로하고 데이터 포인트가 15 개 있다고 가정합니다. 모든 데이터를 15x3 행렬 X에 저장하면 다음과 같습니다.
[U, S, V] = svd(X);
s = S; %s is a the reduced version of S, since matlab is case-sensitive.
s(3:end,3:end)=0;
Y=U*s;
Y=Y(1:2,:);
내가 원하는 것을 수행합니다. 그러나 새로운 데이터 포인트, A, 1x3 벡터를 얻는다 고 가정하십시오. U, S 또는 V를 사용하여 A를 적절한 1x2 벡터로 변환하는 방법이 있습니까?
SVD가 잃어버린 원인이라면 누군가 내가 대신해야 할 일을 말해 줄 수 있습니까?
참고 :이 코드는 Matlab 코드입니다. 그러나 대답이 C, Java 또는 수학 일지라도 상관 없습니다. Matlab을 읽을 수 없다면 물어 보면 명확 해집니다.
어, S 대 S가 실제로 눈을 속입니다. ;) –