Linearly Non-Separable Binary Classification Problem

首先,该程序无法针对RBF(gaussianKernel())正常运行,我想对其进行修复。

这是一个非线性SVM演示,用于说明使用硬边距应用程序对2类进行分类。
  • 问题是关于二维径向随机分布的数据。
  • 我使用二次规划求解器来计算拉格朗日乘数(alpha)


  • 为了解决此非线性分类问题,我编写了一些内核函数,例如高斯(RBF),齐次多项式和非齐次多项式内核函数。

  • 对于RBF,我在下图中实现了该功能:



    使用Tylor系列扩展,将产生:



    而且,我像这样将高斯内核分开:



    这个思想的实现是:



    ***我认为我的RBF实现是错误的,但是我不知道如何解决。请在这里帮助我。

    这是我得到的输出:



    在哪里,



    另外,我实现了同质多项式内核“K(x,x')=()^ 2”,代码为:



    而且我得到了令人惊讶的好输出:



    综上所述,该程序可以使用同质多项式内核正常运行,但是当我使用RBF时,它无法正常运行,RBF的实现存在问题。

    如果您了解RBF(高斯内核),请告诉我如何正确设置。

    编辑:如果您有同样的问题,请直接使用上面定义的RBF,不要用phi分隔它。

    最佳答案

    为什么要为高斯核计算phi? Phi将是无穷维向量,当我们甚至不知道10是否足以近似内核值时,您会将taylor系列中的项限制为10!通常,直接计算内核而不是获取phi(和计算k)。例如[1]。

    这是否意味着我们永远不应该为高斯计算phi?并非如此,不是,但是我们必须对此稍加精明。最近的工作[2,3]显示了如何为高斯计算phi,以便您可以在仅具有有限维phi的情况下计算近似内核矩阵。这里[4]我给出了非常简单的代码,使用本文中的技巧来生成近似内核。但是,在我的实验中,我需要生成100至10000维的phi,以便能够很好地近似内核(取决于原始输入具有的特征数量以及特征值的速率)。原始矩阵逐渐缩小)。

    目前,仅使用类似于[1]的代码来生成高斯内核,然后观察SVM的结果。同样,使用gamma参数,错误的gamma参数可能会导致非常糟糕的分类。

    [1] https://github.com/ssamot/causality/blob/master/matlab-code/Code/mfunc/indep/HSIC/rbf_dot.m

    [2] http://www.eecs.berkeley.edu/~brecht/papers/07.rah.rec.nips.pdf

    [3] http://www.eecs.berkeley.edu/~brecht/papers/08.rah.rec.nips.pdf

    [4] https://github.com/aruniyer/misc/blob/master/rks.m

    关于matlab - 在MATLAB中实现的基本SVM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26870928/

    10-12 21:55