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