5

人間の行動認識に使用する分類子 (ガウス混合モデル) を作成する必要があります。ビデオの 4 つのデータセットがあります。そのうちの 3 つをトレーニング セットとして、1 つをテスト セットとして選択します。トレーニング セットに gm モデルを適用する前に、pca を実行します。

pca_coeff=princomp(trainig_data);
score = training_data * pca_coeff;
training_data = score(:,1:min(size(score,2),numDimension));

テスト段階では何​​をすればよいですか? テストデータで新しいprincompを実行する必要がありますか

new_pca_coeff=princomp(testing_data);
score = testing_data * new_pca_coeff;
testing_data = score(:,1:min(size(score,2),numDimension));

または、トレーニング データに対して計算した pca_coeff を使用する必要がありますか?

score = testing_data * pca_coeff;
testing_data = score(:,1:min(size(score,2),numDimension));
4

1 に答える 1

8

分類器は、トレーニングデータの主要コンポーネントによって定義された空間のデータでトレーニングされています。別の空間で評価することは意味がありません。したがって、トレーニングデータに行ったのと同じ変換をテストデータに適用する必要があるため、別のを計算しないでくださいpca_coef

ちなみに、テストデータがトレーニングデータと同じ分布から独立して抽出されている場合、十分な大きさのトレーニングとテストセットの場合、主要なコンポーネントはほぼ同じである必要があります。

使用する主成分の数を選択する1つの方法は、PCA分解からの固有値を調べることです。これらは、次のようにprincomp関数から取得できます。

[pca_coeff score eigenvalues] = princomp(data);

そのeigenvalues場合、変数は、各要素が対応する主成分によって説明される分散の量を表す配列になります。もし、するなら:

plot(eigenvalues);

最初の固有値が最大になり、急速に減少することがわかります(これは「ScreePlot」と呼ばれ、次のようになります:http ://www.ats.ucla.edu/stat/SPSS/output /spss_output_pca_5.gif、ただし、12ではなく最大800ポイントになる場合があります)。

対応する固有値が小さい主成分は、これらの次元のデータの分散が非常に小さいため、有用ではない可能性があります。多くの人がしきい値を選択してから、固有値がそのしきい値を超えるすべての主成分を選択します。しきい値を選択する非公式な方法は、Screeプロットを見て、線が「水平になる」直後になるようにしきい値を選択することです。前にリンクした画像では、3つまたは4つの主要コンポーネントを選択すると、適切な値は約0.8になる可能性があります。 。

IIRC、あなたは次のようなことをすることができます:

proportion_of_variance = sum(eigenvalues(1:k)) ./ sum(eigenvalues);

「低次元データによって記述される分散の割合」を計算します。

ただし、分類タスクに主要なコンポーネントを使用しているため、特定の数のPCが最適であるかどうかを実際に確認することはできません。特徴の分散は、分類にどれほど役立つかについて必ずしも何も教えてくれません。Screeプロットを使用してPCを選択する代わりに、さまざまな数の主成分を使用して分類を試み、経験的に最適な数を確認することもできます。

于 2012-05-30T15:50:15.560 に答える