63個のサンプルに対して2000個の特徴を含むデータから特徴のサブセットを選択しようとしています。これで、MATLABでPCAを実行する方法がわかりました。'pcacov'を使用しましたが、固有ベクトルと固有値も返します。しかし、必要な機能を選択する方法がわかりません。機能にラベルが付いていない場合、機能を選択するにはどうすればよいですか?またはそれらは同じ順序で返されますか?
2 に答える
PCAは、どの機能が最も重要であるかを示しませんが、どの機能の組み合わせが最も分散を維持するかを示します。
PCAが行うことは、データセットが最初の次元に沿って最も分散し、2番目に2番目に分散するようにデータセットを回転させることです。したがって、特徴ベクトルに最初のN個の固有ベクトルを掛けるときに行うことは、セットを回転させ、最初のN次元を維持して、ベクトルを分散の大部分を維持する低次元表現に変換することです。
機能を選択するにはどうすればよいですか?
あなたがそれを次のように呼ぶなら
[pc,variances,explained] = pcacov(covx)
その場合、主成分は、2番目の戻り引数と同様に分散を持つ最初の戻り引数のベクトルです。それらは対応しており、最も重要なものから最も重要でないものへとソートされています。
またはそれらは同じ順序で返されますか?
関数helpがそう言っている場合はこれを想定できますが、そうでない場合はそう想定するのは安全ではなく、次のようなことができます。
[varsorted,varsortedinds] = sort(variances,'descend');
pcsorted = pc(:,varsortedinds);
そしてvarsorted
、pcsorted
重要度の高いものから低いものの順になります。
7年後の編集:質問を読み直して、私の答えは実際にはこれに答えていないことに気づきました。求められていたのは主成分がソートされていることだと思いました。ドン・レバの答えは、実際に尋ねられた質問に対する答えです。ただし、選択した回答を削除することはできません。