0

40X3249ノイズの多いデータセットと結果セットがあり40X1ます。Matlabで、単純な順次機能選択を実行したいと思います。Matlab の例は複雑で、従うことができません。SoF に関するいくつかの例でさえ役に立ちませんでした。決定木を分類器として使用して、特徴選択を実行したいと考えています。誰か簡単な言葉で説明してくれませんか。
また、フィーチャの数に比べてデータセットの観測数が非常に少ないことも問題ですか?
私はこの例に従っています: Sequential feature selection Matlabで、次のようなエラーが発生しています:

TRAINING のプールされた共分散行列は正定でなければなりません。

4

2 に答える 2

1

このエラーは、classifyLDA を実行しているその質問の関数の使用に起因します。このエラーは、データがランク落ちしている (つまり、いくつかの特徴がほぼ正確に相関している) 場合に発生します。これを克服するには、データを低次元の部分空間に射影する必要があります。主成分分析はこれを行うことができます。Matlab の統計ツールボックス内で関数を使用する方法の詳細については、こちらを参照してください。pca

[basis, scores, ~] = pca(X); % Find the basis functions and their weighting, X is row vectors
indices = find(scores > eps(2*max(scores))); % This is to find irrelevant components up to  machine precision of the biggest component .. with a litte extra tolerance (2x)
new_basis = basis(:, indices); % This gets us the relevant components, which are stored in variable "basis" as column vectors
X_new = X*new_basis; % inner products between the new basis functions spanning some subspace of the original, and the original feature vectors

これにより、関連するサブスペースへの自動投影が行われるはずです。古い機能の重み付けされた組み合わせになるため、機能は以前と同じ意味を持たないことに注意してください。

追加の注意: 特徴表現を変更したくない場合は、分類する代わりに、ランク不足のデータで機能するものを使用する必要があります。独自のバージョンのペナルティ付き判別分析 (これは非常に単純です) を作成したり、サポート ベクター マシンを使用したり、LDA のように相関する特徴を壊さない他の分類関数を使用したりできます (共分散推定の逆行列を必要とするため)。

編集: PS Matlab で独自のバージョンの PCA を作成したため、これをテストしていません。

于 2013-04-24T10:39:04.240 に答える