高次元のデータセットを 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,:);
私がしたいことをします。しかし、1x3 ベクトルである新しいデータポイント A を取得したとします。U、S、または V を使用して A を適切な 1x2 ベクトルに変換する方法はありますか?
SVDが失われた原因である場合、誰かが私が代わりに何をすべきか教えてもらえますか?
注: これは Matlab コードですが、答えが C、Java、または単なる数学であるかどうかは気にしません。Matlab が読めない場合は、質問してください。明確にします。