0

財務データに SVM と MLP を使用したバイナリ分類を使用しています。私の入力データには 21 個の特徴があるため、データの次元を削減するために次元削減方法を使用しました。ステップワイズ回帰レポートのようないくつかの次元削減方法は、最良の機能を報告するため、これらの機能を分類モードに使用し、PCA 変換データのような別の方法を新しいスペースに使用し、たとえば、報告された最良の列 (機能) の 60% を使用します。重大な問題は、最終モデルを使用する段階にあります。たとえば、今日の財務状況には、過去 1 年間と 2 年前の財務データを使用しました。だから今、過去と今日のデータを使って来年の予測をしたいと思っています。私の質問はここにあります:設計した分類モデルに挿入する前に、新しい入力データに PCA を使用する必要がありますか? このデータに (主成分分析など) を使用するにはどうすればよいですか? 前みたいに使わなきゃいけないの?(pca(newdata…)) または、このフェーズで使用する必要がある最後の PCA の結果がありますか?

詳しくは :

これが私のシステム構造です。モデルの最適な機能 (入力) と分類方法の最適なパラメーターを選択するための最適化アルゴリズムを使用したハイブリッド分類方法があるため、MLP のような分類方法では、21 の機能を使用して最適化するのに長い時間がかかります (このうち、最適化アルゴリズムのすべての反復を 12 回/断面で繰り返します)。したがって、分類方法に挿入する前に、次元削減手法 (PCA、NLPCA、または LDA/FDA などの教師付き方法など) を使用して機能を減らしたいと考えています。たとえば、次の構造の PCA コードを使用しています。

[coeff,score,latent,tsquared,explained,mu] = pca( _ )

その後、出力の最初の 10 列 (PCA 関数でソートされたもの) を分類および最適化モデルの入力として使用します。最終段階では、最適な入力の組み合わせで最適なモデル パラメータを見つけます。たとえば、生データには 21 個の特徴があります。PCA を使用する最初のフェーズの後、10 個の特徴を選択し、分類モデルの最適化後に最終モデルを選択します。5 つの最適な機能を備えたモデルを作成します。今度は、このモデルを新しいデータで使用したいと思います。どうすればいいですか?

親切に助けていただきありがとうございます。

4

1 に答える 1

0

次の手順に従う必要があります。

  1. トレーニング データを使用して、PCA モデルを作成します
  2. トレーニング データの PCA を使用して、分類子をトレーニングします。
  3. 最初の PCA モデルを新しいデータに適用する
  4. 新しいデータの PCA を使用して、分類子をテストします

ステップ 1 と 3 のコード スニペットを次に示します (2 と 4 は分類器によって異なります)。

%Step 1.Generate a PCA data model  

[W, Y] = pca(data, 'VariableWeights', 'variance', 'Centered', true);
%# Getting the correct W, mean and weights of data (for future data)
W = diag(std(data))\W;
[~, mu, we] = zscore(data);
we(we==0) = 1;


%Step 3.Apply the previous data model to a new vector

%# New coordinates as principal components
x = newDataVector; 
x = bsxfun(@minus,x, mu);
x = bsxfun(@rdivide, x, we);
newDataVector_PCA = x*W;
于 2014-03-27T09:37:58.043 に答える