6

我有一套使用圖像處理提取的240個特徵。 目標是在培訓後將測試用例分爲7類。對於每個類,大約有60個觀測值(即每個類有大約60個特徵向量,每個向量有240個分量)。使用Bhattacharyya距離功能選擇

許多研究論文和書籍利用順序向前搜索或順序向後搜索從特徵向量中選擇最佳特徵。 下面的圖片給出了一個順序的前向搜索算法。 Here is a snapshot of the SFS algorithm

任何這樣的算法都使用一些標準來區分特徵。常用的方法是使用Bhattacharyya距離作爲標準。 Bhattacharyya距離是分佈之間的分歧型度量。在一些研究和研究中,我發現給定一個類A的矩陣M1,它由60個特徵向量組成,這個特徵向量具有n = 60行和m = 240列(因爲總共有240個特徵),類BI的類似矩陣M2可以找出它們之間的Bhattacharyya距離並找出它們的相互依賴關係。

我的問題是如何整合這兩個。如何將Bhattacharyya距離作爲選擇上述算法中最佳特徵的標準。

回答

2

的幫助亞瑟B.我終於明白了這個概念。 這是我的實現。儘管我使用了Plus l帶走r算法(Sequential Forwardwards 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會有。這是一個接近兩年前的研究項目。 – Sohaib

1

這是算法的「評估分支」的一部分,除非您首先使用一個維向量,那麼二維矢量這Bhattacharyya距離等

+0

如果我解釋我的整個問題,你能否詳細說明一下? – Sohaib

+0

隨意添加更多細節。 SFS是一種非常簡單的選擇功能的貪婪方法。 –

+0

嗯實際上讀了我的問題的第一段我已經添加了細節。 Acc。根據我的理解,Bhattcharyya Distance找到兩個類之間的距離,例如矩陣的行表示觀察的數量,列表示每個特徵,所以在我的情況下它就像一個60x240的矩陣。我對嗎? – Sohaib