SVM:关于内核的基本问题

时间:2014-08-20 12:29:42

标签: machine-learning svm

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

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

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

(3)经常声明使用内核的优点是降低计算复杂度。现在给出我们的地图$ \ phi $如下:$ \ phi(x)^ T \ phi(z)$ = $(x_1 ^ 2,\ sqrt {2} x_1 * x_2)^ T(z_1 ^ 2,\对于二维向量x和z,sqrt {2} z_1 * z_2,z_2 ^ 2)$,并且该映射可以写为内核$(x ^ T * z)^ 2 $。计算优势是必须执行的操作数量减少(例如乘法),以及使用内核意味着在输入空间中使用点积而不是在特征空间中使用点积?

(4)由于权重向量可以写成输入向量的函数,因此内核包含两个输入向量的标量乘法的原因是什么?

任何帮助表示赞赏...

1 个答案:

答案 0 :(得分:2)

(它应该在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,...)一起使用。