rbf内核不足?

时间:2019-05-17 12:02:12

标签: python kernel svm

我正在使用LIBLINEAR进行直接内核实现。当需要将单个点集群分开时,它可以很好地工作。但是,当有两点需要分开时,它就无法做到。

我尝试了两种不同版本的内核,但是第二种类型甚至比第一种差。我以为我在这个rbf内核中缺少u-v组件,但是当我尝试将其放入其中时,我无法使其正常工作。

def KernelTransform(x, gammaVal): #direct kernel implementation

    #first type of kernel, n diemnsional but reductive 

    rbfKernVals = np.exp(-gammaVal*(x ** 2).sum(1))
    #print (rbfKernVals)

    #second type of RBF kernel, works even worse than the first
    #rbfKernVals = []
    #for vals in x:
    #    #print (vals[0])
    #    #print (vals[1])
    #    rbfKernVal = np.exp(-gammaVal*np.linalg.norm(vals[0]-vals[1])**2 )
    #    #print (rbfKernVal)
    #    rbfKernVals.append(rbfKernVal)
    #rbfKernVals = np.array(rbfKernVals)
    ##print (rbfKernVals)
    return rbfKernVals

当有一个要分离的点时,它会很好地工作: http://hep.ph.liv.ac.uk/~rcollins/stackQuestions/Fine_detail_exp_one_gauss.png

当有两个失败时: http://hep.ph.liv.ac.uk/~rcollins/stackQuestions/exp_two_gauss_svm_cut.png

即使rbf内核SVM可以将这些点分开(LIBSVM,c = 10 ^ 4,gamma = 1): http://hep.ph.liv.ac.uk/~rcollins/stackQuestions/rbf_exp_two_gauss_svm_10+4.png

0 个答案:

没有答案