首页 文章

在SVM中练习内核技巧

提问于
浏览
2

我正在阅读SVM理论 . 在内核技巧中,我理解的是,如果我们有一个在原始维度n中不是线性可分的数据,我们使用内核将数据映射到更高的空间以进行线性可分(我们必须根据需要选择正确的内核)关于数据集等) . 然而,当我观看安德鲁Kernel SVM的视频时,我所理解的是我们可以将原始数据映射到更小的空间,这让我感到困惑!?任何解释 .

你能解释一下RBF内核如何通过一个具体的例子将每个原始数据样本 x1(x11,x12,x13,....,x1n) 映射到更高的空间(维度为m)为 X1(X11,X12,X13,...,X1m) . 另外,我理解的是内核计算转换数据的内积(因此在RBF之前还有另一个转换,这意味着RBF将数据隐式转换为更高的空间但是如何?) .

其他的事情:内核是一个函数 k(x,x1):(R^n)^2->R =g(x).g(x1) ,用g是转换函数,如何在RBF内核的情况下定义g?

假设我们在测试集中,我理解的是x是要分类的样本,x1是支持向量(因为只有支持向量将用于计算超平面) . 在RBF k(x,x1)=exp(-(x-x1)^2/2sigma) 的情况下,那么转型在哪里?

最后一个问题:承认RBF映射到更高维度m,有可能显示这个m?我想看看理论上的现实 .

我想用RBF内核实现SVM . 什么是 m 在这里以及如何选择它?如何在实践中实现内核技巧?

1 回答

  • 2

    你能解释一下RBF内核如何将每个原始数据样本x1(x11,x12,x13,....,x1n)映射到更高的空间(维度为m)为X1(X11,X12,X13, ......,X1m)有一个具体的例子 . 另外,我理解的是内核计算转换数据的内积(因此在RBF之前还有另一个转换,这意味着RBF将数据隐式转换为更高的空间但是如何?) .

    正如你所说 - 内核是投影空间的 inner product ,而不是投影本身 . 整个 trick 是你永远不会转换你的数据,因为它是 computationally too expensive 这样做 .

    其他的东西:内核是函数k(x,x1):( R ^ n)^ 2-> R = g(x).g(x1),g是变换函数,如何定义g RBF内核的情况?

    对于rbf核,g实际上是从R ^ n到连续函数空间(L2)的映射,并且每个点被映射到具有均值x和方差sigma ^ 2的非标准化高斯分布 . 因此(达到一些我们将放弃的归一化常数A)

    g(x) = N(x, sigma^2)[z] / A # notice this is not a number but a function of z!
    

    现在,功能空间中的内在产品是整个领域产品的整体

    K(x, y) = <g(x), g(y)> 
            = INT_{R^n} N(x, sigma^2)[z] N(y, sigma^2)[z] / A^2 dz 
            = B exp(-||x-y||^2 / (2*sigma^2))
    

    其中B是一些常数因子(归一化),仅取决于sigma ^ 2,因此我们可以放弃它(因为缩放在这里并不重要),以简化计算 .

    假设我们在测试集中,我理解的是x是要分类的样本,x1是支持向量(因为只有支持向量将用于计算超平面) . 在RBF k(x,x1)= exp( - (x-x1)^ 2 / 2sigma)的情况下,那么转换在哪里?

    如前所述 - 转换从未明确使用过,您只需显示具有转换点的超平面的 inner product 可以再次表示为具有支持向量的内积,因此您不会转换任何内容,只需使用内核

    <w, g(x)> = < SUM_{i=1}^N alpha_i y_i g(sv_i), g(x)> 
              = SUM_{i=1}^N alpha_i y_i <g(sv_i), g(x)>
              = SUM_{i=1}^N alpha_i y_i K(sv_i, x)
    

    其中sv_i是支持向量,alpha_i是在优化过程中找到的每样本权重(拉格朗日乘数),y_i是第i个支持向量的标签 .

    最后一个问题:承认RBF映射到更高维度m,有可能显示这个m?我想看看理论上的现实 .

    在这种情况下, m 是无穷大,因为您的新空间是R ^ n - > R域中连续函数的空间,因此单个向量(函数)被定义为连续体(实数集的大小)值 - 每个可能的输入值来自R ^ n一个(这是一个简单的集理论结果,任何正n的R ^ n都是大小连续的) . 因此,就纯数学而言,使用集合论这就是所谓的Beth_1(https://en.wikipedia.org/wiki/Beth_number) .

    我想用RBF内核实现SVM . 这里的m是什么以及如何选择它?如何在实践中实现内核技巧?

    你不选择m,它是由内核本身定义的 . 在实践中实现内核技巧需要表达你所有的表单中的优化例程,其中训练点在内部产品的上下文中使用 solely ,并且仅用内核调用替换它们 . 这太复杂了,无法以SO形式描述 .

相关问题