zoukankan      html  css  js  c++  java
  • NBNN及SIS Measure 标签: 稀疏相似度度量NBNNSIS分类 2016-04-16 10:49 754人阅读 评论(0)

    本文主要讲一种稀疏表示下的特征相似度度量方法,叫做SIS Measure,该度量方法结合NBNN可以完成目标分类的任务,且对特征空间非聚集的特征分类有很好的效果。相关实验结果可参考文献[2]。本文主要是实现该方法时的一些简单的心得和代码,欢迎交流。

    1.  实验步骤
    1.1.  NBNN
           首先阅读论文[1],了解了非参数分类器的基本内容,如非参数分类器的优势在于:(1) 能自然地处理大量数据的分类问题;(2) 有效地避免过拟合;(3) 无需学习/训练阶段。同时熟悉了NBNN的算法概要,如下:

    1.2.  SIS Measure
          而后开始阅读参考文献[2],了解Similarity Measure的大致内容,进一步理解SIS(Sparsity Induced Similarity) Measure的算法含义。Similarity Measure主要有欧式距离、高斯核的相似度等,它们的不足在于忽略了类的结构信息。在参考文献[2]中,考虑到特征空间中,人们使用高维特征向量,而可以假设每一类的特征向量都属于低维的特征子空间,提出了特征向量的稀疏表示下的相似度度量。 参考文献[2]提出的稀疏引导的相似度度量方法定义如下:

           其中,  L1 范数最小化问题是由Focuss 算法求解的。之所以选择Focuss 算法,是因为:该问题下,对于解向量稀疏度没有很好的先验知识,因此不能使用OMP等方法;另一方面,如采用[2]中所述的linear programming 的方法,由于引入  x+,x−, 将加大程序的空间复杂度。 通过该相似度度量,我们可以得出输入特征向量与其余样本向量的相似度,由此得到一个N×N的相似度矩阵,再由该相似度矩阵通过最近邻算法得到其分类标记。

    2.  实验结果
           如图1即为得到的相似度矩阵。

     

           由最终实验预测可知,bed的预测正确率为60%,forest的预测正确率为70%。另实验代码见文档附录。

    3.  实验中遇到的问题
    3.1.  SIS的理解
           SIS的构造并非只是简单的计算稀疏系数向量,再比较各向量中对应类分量的模值大小,而是需要分别计算出  Sij 和  Sji在最初实验时,我曾选择某一特征向量作为输入,计算其在剩余向量撑成的矩阵中的稀疏系数,继而比较稀疏系数大小来确定其所属类别。虽然这样的处理与文献[2]中Toy problem所示类似,但是却不是SIS度量的正确理解,之后重新修改了代码,实现了完整的SIS度量方式。

    3.2.  Wii的设置 
           Wii 虽然在论文中设置为1(符合相似度度量的直观),但是为了代码的简便性,实际实验中预测时设置其为0。这是因为如果实验中将Wii设置为1,预测时需要额外的步骤把对应该项元素值踢出;而将其设置为0,则在预测时Wii对预测不产生影响。

    4.  实验反思
           首先本次实验中使用的数据量较小,因此对于论文中采用的“CD”欧式距离特征预选择并未能用到;出于同样的原因,在构造出所有向量的相似度矩阵后,采用最近邻分类时,采用相似度最高的特征向量所属的类作为输入向量的分类标记,一定程度上忽略了类的分布结构信息,影响了分类的准确度。在得到更多数据的前提下,修改以上两点可以获得更高的分类准确度,以及数据量归一化下更快的执行速度。

     

    Reference
    [1] Boiman O, Shechtman E, Irani M  In defense of nearest-neighbor based image classification[C]//Computer Vision and Pattern Recognition, 2008  CVPR 2008  IEEE Conference on  IEEE, 2008: 1-8 
    [2] H   Cheng,  Z   Liu,  L   Hou,  and  J  Yang   Sparsity  induced  similarity  measure  and  its  applications   IEEE Transactions on Circuits and Systems for Video Technology, 2012


    附录:实验代码(Matlab语言)

    clear all; 
    close all 
    clc 
       
    load bedroom.mat 
    load forest.mat 
    [m,n] = size(bedroom); 
    %data feature normalization 
    for i =1:m 
        Nbedroom(i,:) = bedroom(i,:)./max(bedroom(i,:)); 
    end 
    for i =1:m 
        NMITforest(i,:) = MITforest(i,:)./max(MITforest(i,:)); 
    end 
    Nbedroom = Nbedroom'; 
    NMITforest = NMITforest';  
    [m,n] = size(Nbedroom); 
    %parameter 
    %% bed  
    for k = 1:n 
        fk = Nbedroom(:,k); 
        Gk = [Nbedroom(:,1:k-1) Nbedroom(:,k+1:end) NMITforest]; 
        [x_bed(:,k)] = Focuss(Gk,fk); 
    end 
    for k = 1:n 
        fk = NMITforest(:,k); 
        Gk = [Nbedroom NMITforest(:,1:k-1) NMITforest(:,k+1:end)]; 
        [x_forest(:,k+n)] = Focuss(Gk,fk); 
    end 
       
    Xk = [x_bed zeros(19,10)]+ x_forest;                        
    [M,N] = size(Xk); 
    for k = 1:N 
        for i = 1:M 
                    x = Xk(:,k); 
                    rest = sum(x' * (x > 0)) - max(x(i),0); 
                    S(k,i) = max(Xk(i,k),0) ./ (rest); 
        end 
    end 
    for i = 1:N 
        s = S(i,:);  
        S_new(i,:) = [s(1:i-1) 0 s(i:end)]; 
    end 
    W = (S_new + S_new')./2;  
    Wnew = W + eye(N);                  
    %compute classified probability 
    for i = 1:N 
        [whatever,sim_label(i)] = max(W(i,:)); 
    end 
    class = sim_label < N/2;        
    ratebed = sum(class(1:N/2))/length(class(1:N/2)) 
    rateforest = sum(~(class(N/2+1:N)))/length(class(N/2+1:N)) 


     

  • 相关阅读:
    本地缓存方式
    iOS Touch ID 身份认证
    iOS之WKWebView
    [Objective-C]关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
    iOS利用UIDocumentInteractionController和Quick Look打开或预览文档
    轮播图的无限轮播
    贝赛尔曲线UIBezierPath(后续)
    贝赛尔曲线UIBezierPath
    NSRunLoop的进一步理解
    CADisplayLink 及定时器的使用
  • 原文地址:https://www.cnblogs.com/helay/p/7133954.html
Copyright © 2011-2022 走看看