【问题标题】:SVM: Basic Questions about KernelsSVM:关于内核的基本问题
【发布时间】:2014-10-13 19:31:34
【问题描述】:

我刚刚开始熟悉 SVM,并且有以下关于 SVM 和内核更具体的问题:

(1) 如果我理解正确,决策边界总是是线性的。内核用于从输入空间映射到特征空间,其中可能以前线性不可分离的数据现在是线性可分离的。如果决策边界始终是线性的,那么在一些论文中如何谈论“非线性决策边界”(例如,在 Ben-Hur 等人的“支持向量机用户指南”第 3 页)?

(2) 是否有可能知道哪个 Kernel 应用于哪个数据集,即指示哪个 Kernel 可能导致特征空间中的线性可分性?

(3) 人们常说使用内核的一个优点是可以降低计算复杂度。现在给定我们的映射 $\phi$ 如下: $\phi(x)^T \phi(z)$ = $(x_1^2, \sqrt{2}x_1*x_2)^T(z_1^2, \ sqrt{2}z_1*z_2,z_2^2)$ 用于二维向量 x 和 z,这个映射可以写成核 $(x^T*z)^2$。计算优势是否减少了必须执行的操作(例如乘法)的数量,以及使用内核意味着在输入空间而不是在特征空间中使用点积这一事实?

(4) Kernel 包含两个输入向量的标量乘法是因为权重向量可以写成输入向量的函数吗?

任何帮助表示赞赏...

【问题讨论】:

    标签: machine-learning svm


    【解决方案1】:

    (它应该在 CrossValidated 上,但我还是会回答)

    1) 边界总是线性的。边界在内核空间中是线性的,但在原始空间中是非线性的。

    2) 在不知道数据的情况下,不。 rbf 内核通常工作得非常好,因为它有一个可以在交叉验证循环中调整的参数“alpha”。如果您事先不知道数据并且不知道要使用什么,我建议您使用它。

    3) 我对此有不同的看法。与手动进行映射相比,使用内核可降低计算复杂度(由于内核技巧,参见理论)。但它并没有降低与线性 SVM 相比的复杂性(我不知道你暗示了什么)。

    据我回忆,无需参考任何内容,因为边界的搜索依赖于学习数据的点积,而不是手动映射所有内容,因此您只能计算核矩阵,其余的就是线性规划。

    4) 见 (3)

    我应该查阅我的大学笔记以获得更详细的答案。告诉我你是否需要更多。

    编辑:回答您的评论。

    (2) 我的意思是了解数据多于了解数据。如果您知道这两个类之间的分隔类似于一个圆圈http://mikedeff.in/MLIntro.PNG,那么您就知道您的映射将类似于 a1^2 等。

    实际上 rbf 内核可以通过参数的调整来表达类之间的许多分离情况。 (我可能错了,但我总是使用 rbf 内核来使事情正常工作)。

    (3) 所以SVM的表达式是这样的:

    y(x) = f(x_i'.x_j)
    

    所以你知道你有点积 x_i'.x_j,你可以用 phi(o) 你的非线性函数做一个映射。你有内核:K(o_1, o_2) = phi'(o_1).phi(o_2),你有:

    y(x) = f(K(x_i, x_j)) 
    

    因此,如果您使用例如高斯核 K(o_1, o_2) = exp( -(o_1 - o_2)' (o_1 - o_2) / sigma) 您不必计算 phi(o) 或phi(x_i) 和 phi(x_j) 之间的点积(这就是我的意思是“手动”),因为点积隐含在内核的表达式中。因此成本更低。你是对的。

    (4) 源自 y(x) = ... 实际上,当您使用点积时,它是为了衡量两个对象(x_i 和 x_i)之间的相似性。您可以将内核与任何使用点积的方法(如 PCA,...)一起使用。

    【讨论】:

    • 嗨,非常感谢,不确定是这里还是交叉验证。 (1)现在很清楚,关于(2):鉴于我们知道数据,我们如何推断最好使用哪个内核?关于(3),我已经阅读了内核技巧,但仍然有上述问题 - 不确定“手动”是什么意思,如果标量积必须在输入中计算一次,我理解问题的区别空间(内核)或特征空间(非线性函数方法),后者的成本更高。我错了吗?另外,我现在仍然不确定 (4) :-)
    猜你喜欢
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多