5

トレーニングに必要な膨大なデータセット(32000 * 2500)があります。これは私の分類子にはあまりにも多いようです。そのため、私は次元削減と特にPCAについての読書をすることにしました。PCAの分散が最も大きいコンポーネントの選択

私の理解から、PCAは現在のデータを選択し、別の(x、y)ドメイン/スケールでそれらを再現します。これらの新しい座標は何も意味するものではありませんが、データを再配置して1つの軸に最大の変化を与えます。これらの新しい係数の後、最小変動を持つcooeffを落とすことができます。

これをMatLabで実装しようとしていますが、出力に問題があります。 MatLabは、行を観測値と列として常に変数とみなします。したがって、pca関数への私の入り口は、サイズ(32000*2500)の私の行列になります。これは、サイズが2500*2500の出力行列のPCA係数を返します。

PCA状態のヘルプ:

COEFFの各列は、一の主面 成分の係数を含み、列は、成分 分散の降順です。

この出力では、どの次元が私のデータの観測値ですか?私はこれを分類器に渡さなければならないのですが、coeffの行は私のデータの観測値を表していますか、今はcoeffの列ですか?

そして、バリエーションの最も少ない係数を削除するにはどうすればよいですか?

答えて

5

(免責事項:私はscipyのダウンロードするには、MATLABから切り替えるので、それは長い時間がかかったが、原則は同じです。)

あなたがの寸法を小さくするために、その後

svd function

[U,S,V] = svd(X) 
を使用している場合 Xkの場合は、最初の kの列に Vを掛けます。 MathWorks社のMATLABで、私はそれが

X * V(:, 1: k); 

だ推測している理論のためElements of Statistical Learningを参照してください。

+0

これは正しいです。いい仕事Ami。 +1。 – rayryeng

+0

@rayryeng :-)ありがとう! –

関連する問題