6

我有一组使用图像处理提取的 240 个特征。目标是在训练后将测试用例分为 7 个不同的类别。每个类大约有 60 个观察值(即,每个类我有大约 60 个特征向量,每个向量有 240 个分量)。

许多研究论文和书籍利用顺序前向搜索或顺序后向搜索从特征向量中选择最佳特征。下图给出了顺序前向搜索算法。 这是 SFS 算法的快照

任何这样的算法都使用一些标准来区分特征。一种常用的方法是使用 Bhattacharyya 距离作为标准。Bhattacharyya 距离是分布之间的散度类型度量。在一些研究和研究中,我发现给定一个由该类的所有 60 个特征向量组成的类 A 的矩阵 M1,使得它具有 n=60 行和 m=240 列(因为总共有 240 个特征)和一个类 BI 的类似矩阵 M2 可以找出它们之间的 Bhattacharyya 距离并找到它们的相互依赖关系。

我的问题是如何将两者结合起来。如上所述,如何将 Bhattacharyya 距离作为选择算法中最佳特征的标准。

4

2 回答 2

2

在 Arthur B. 的帮助下,我终于理解了这个概念。这是我的实现。尽管我使用了 Plus l Take away r 算法(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

我希望这可以帮助任何有类似问题的人。

于 2013-11-11T15:06:48.817 回答
1

那是算法的“评估分支”部分,除了您首先将这个 Bhattacharyya 距离用于一维向量,然后是二维向量等。

于 2013-10-31T15:12:27.423 回答