6

画像処理を使用して240個の特徴を抽出しました。 目的は、トレーニング後にテストケースを7つの異なるクラスに分類することです。各クラスには約60の観測値があります(つまり、クラスごとに60個の特徴ベクトルがあり、各ベクトルは240個のコンポーネントを持っています)。特徴選択のためのBhattacharyya距離の使用

多くの研究論文と書籍は、特徴ベクトルから最良の特徴を選択するために逐次前方探索または逐次後方探索を利用している。 次の図は、順次検索アルゴリズムを示しています。

このようなアルゴリズムは、何らかの基準を使用してフィーチャを区別します。一般的な方法は、Bhattacharyya距離を基準として使用することです。 Bhattacharyya Distanceは分布間の相違型の尺度です。いくつかの研究と研究で、クラスAの行列M1は、このクラスの60個のすべての特徴ベクトルから構成され、n = 60行とm = 240列(合計240個のフィーチャがあるため)とクラスBIのための同様のマトリックスM2は、それらの間のBhattacharyya距離を見出すことができ、それらの相互依存関係を見つけることができる。

私の質問は、どのように私は2つを統合するのですか?上記のアルゴリズムの中で最良の特徴を選択するための基準としてBhattacharyya Distanceをどのように含めるか。

答えて

2

コンセプト。 これを実装しました。私はPlus lアルゴリズムを使用しましたが(Sequential Forwards Backward Search)、Backward Searchが一度削除されると基本的には同じですので、それを削除してください。以下の実装はmatlabにありますが、理解するのが非常に簡単です:

S=zeros(Size,1); %Initial the binary array feature list with all zeros implying no feature selected 
k=0; 
while k<n %Begin SFS. n is the number of features that need to be extracted 
t=k+l;  %l is the number of features to be added in each iteration 
while k<t 
    R=zeros(Size,1); %Size is the total number of features 
    for i=1:Size 
     if S(i)==0 %If the feature has not been selected. S is a binary array which puts a one against each feature that is selected 
      S_copy=S; 
      S_copy(i)=1; 
      R=OperateBhattacharrya(Matrices,S_copy,i,e,R); %The result of each iteration is stored in R 
     end 
    end 
    k=k+1; %increment k 
    [~,N]=max(R); %take the index of the maximum element in R as the best feature to be selected 
    S(N)=1;  % put the index of selected feature as 1 
end 
t=k-r; %r is the number of features to be removed after selecting l features. l>r 
while k>t %start Sequential Backward Search 
    R=zeros(Size,1); 
    for i=1:Size 
     if S(i)==1 
      S_copy=S; 
      S_copy(i)=0; 
      R=OperateBhattacharrya(Matrices,S_copy,i,1,R); 
     end 
    end 
    k=k-1; 
    [~,N]=max(R); 
    S(N)=0; 
end 
fprintf('Iteration :%d--%d\n',k,t); 
end 

これは、同様の問題を抱えている人に役立ちます。

+0

OperateBhattacharrya関数のコードはありますか? – Matthieu

+0

@Matthieuされているだろう。これは2年近く前の研究プロジェクトでした。 – Sohaib

1
あなたはまず1次元ベクトル、2次元のベクトルにこのバタチャリヤ距離を使用しますを除いて、アルゴリズムの「ブランチを評価する」の部分です

など

私はようやく理解アーサーB.から助けを借りて
+0

私はすべての問題を説明すれば少し詳しく説明できますか? – Sohaib

+0

詳細を自由に入力してください。 SFSは、機能を選択するための非常に単純な貪欲なアプローチです。 –

+0

実際に私の質問の最初の段落を読んで、詳細を追加しました。 Acc。 Bhattcharyya Distanceは、2つのクラス間の距離を求めます。たとえば、行列の行は観測数を表し、列は各フィーチャを表します。したがって、私の場合は60x240行列です。私は正しい? – Sohaib

関連する問題