3

63*2308 行列で PCA を実行し、スコアと係数行列を取得しました。スコア マトリックスは 63*2308 で、係数マトリックスは次元が 2308*2308 です。

最も重要な上位 100 個の機能の列名を抽出して、回帰を実行できるようにするにはどうすればよいですか?

4

3 に答える 3

4

PCA は、一連の固有ベクトル (係数行列) と固有値 (1*2308) のベクトル (ラムダと呼ばれることが多い) の両方を提供する必要があります。それらを取得するために、matlab で別の PCA 関数を使用した可能性があります。

固有値は、各固有ベクトルが説明するデータの量を示します。特徴を選択する簡単な方法は、固有値が最も高い 100 個の特徴を選択することです。これにより、データの分散の大部分を説明する一連の機能が得られます。

記事作成のためにアプローチを正当化する必要がある場合は、固有ベクトルごとに説明される分散の量と、たとえば 95% の分散が説明されるカットを実際に計算できます。

固有値のみに基づいて選択すると、回帰にとって最も重要な一連の機能に対応しない可能性があることに注意してください。そのため、期待するパフォーマンスが得られない場合は、再帰的機能選択などの別の機能選択方法を試してください。 . Google Scholar を使用して、似たようなことをしているいくつかの論文を見つけ、それらがどのような方法を使用しているかを確認することをお勧めします。


PCA を使用して上位 100 個の主成分を取得する簡単な Matlab の例。

[eigenvectors, projected_data, eigenvalues] = princomp(X);
[foo, feature_idx] = sort(eigenvalues, 'descend');
selected_projected_data = projected(:, feature_idx(1:100));
于 2013-04-07T19:12:55.987 に答える
0

気をつけて!

わずか 63 個の観測値と 2308 個の変数では、データが指定不足であるため、PCA の結果は無意味になります。少なくとも (経験則) ディメンション * 3 の観測値が必要です。

63 の観測で、最大で 62 次元のハイパースペースを定義できます!

于 2013-04-09T12:54:05.370 に答える