ここでは、PCA が正しい選択になる可能性があります (ただし、唯一の選択肢ではありません)。ただし、PCA は入力データの特徴の数を自動的に減らすわけではないことに注意してください。このチュートリアルを読むことをお勧めします: http://arxiv.org/pdf/1404.1100v1.pdf - これは、私が PCA を理解するために使用したものであり、初心者には非常に適しています。
質問に戻ります。画像は 324 次元空間のベクトルです。この空間では、最初の基本ベクトルは左上隅に白いピクセルがあり、次の基本ベクトルは次のピクセルが白、その他はすべて黒などです。おそらく、この画像データを表現するのに最適な基本ベクトル セットではありません。PCA は、新しい基本ベクトル (COEFF 行列 - 古いベクトル空間で値として表される新しいベクトル) と新しいイメージ ベクトル値 (SCORE 行列) を計算します。その時点で、データはまったく失われていません (フィーチャー番号の削減はありません)。ただし、新しい基底ベクトルの一部は、データ自体ではなくノイズに関連している可能性があるため、使用を中止することができます。それはすべてチュートリアルで詳細に説明されています。
images = rand(10,324);
[COEFF, SCORE] = princomp(images);
reconstructed_images = SCORE / COEFF + repmat(mean(images,1), 10, 1);
images - reconstructed_images
%as you see there are almost only zeros - the non-zero values are effects of small numerical errors
%its possible because you are only switching between the sets of base vectors used to represent the data
for i=100:324
SCORE(:,i) = zeros(10,1);
end
%we remove the features 100 to 324, leaving only first 99
%obviously, you could take only the non-zero part of the matrix and use it
%somewhere else, like for your neural network
reconstructed_images_with_reduced_features = SCORE / COEFF + repmat(mean(images,1), 10, 1);
images - reconstructed_images_with_reduced_features
%there are less features, but reconstruction is still pretty good