你能给我一个径向基函数内核技巧的简短的逐步数值示例吗?我想了解如何应用于感知器

Can you give me a short step by step numerical example of radial basis function kernel trick? I would like to understand how to apply on perceptron

我很了解感知器,所以只强调内核,但我不熟悉数学表达式,所以请给我一个数值示例和内核指南。

例如:

我的感知器超平面是x1*w1+x2*w2+x3*w3+b=0;RBF核公式:k(x,z) = exp((-|x-z|^2)/2*variance^2)这里作用的是径向基函数核。 x 是输入吗?这里的 z 变量是什么?

或者如果它是公式中的方差,我必须计算什么方差? 我已经理解的某个地方,所以我必须将这个公式插入感知器决策函数 x1*w1+x2*w2+x3*w3+b=0; 但是如果我插入它看起来如何?

我想问一个数值例子,以免混淆。

线性感知器

如您所知,线性感知器可以针对二进制 class化进行训练。更准确地说,如果在n维space、Rn中有n个特征,x1, x2, ..., xn,并且你想将它们标记为2类,y1 & y2(通常是 -1 和 +1),你可以使用定义超平面 w1*x1 + ... + wn*xn + b = 0 的线性感知器来做到这一点。

w1*x1 + ... + wn*xn + b > 0  or W.X + b > 0  ==>  class = y1
w1*x1 + ... + wn*xn + b < 0  or W.X + b < 0  ==>  class = y2

线性感知器可以很好地工作,前提是问题在 Rn 中是线性可分的。例如,在 2D 中 space,这意味着一条线可以分隔 2 组点。

算法

训练感知器的一种常用算法,即根据 N 个数据点 X1, ..., XN 及其标签 Y1, ..., YN 找到权重和偏差 w's & b ] 如下:

Initialize: W = zeros(n,1); b = 0
For i=1 to N:
    Calculate F(Xi) = W.Xi + b
    If F(Xi)*Yi <= 0:
        W <--- W + Xi*Yi
        b <--- b + Yi

这将给出 W & b 的最终值。此外,根据训练,W 将是训练点的线性组合,Xi's,更准确地说,是错误class 的训练点。所以 W = a1*X1 + ... + ...aN*XN 其中 a's{0,y1,y2}.

现在,如果有一个新的点,比如说Z,为了标记,我们检查F(Z) = W.Z + b = a1*(X1.Z) + ... + aN*(XN.Z) + b的符号。有趣的是只有新点和训练点的内积参与其中

内核感知器

现在,如果问题不是线性可分的,可以尝试进入更高维度的 space,其中超平面可以进行 class化。例如,考虑一个二维圆 space。圆内和圆外的点不能用一条线分开。但是,如果您找到一个可以将点转换为 3D space 的变换,使得所有点的前 2 个坐标保持相同,并且第 3 个坐标对于内部和外部的点变为 +1 和 -1圆,然后定义为 3rd coordinate = 0 的平面可以将点分开。

找到这样的转换可能很困难并且计算量很大,因此引入了内核技巧。请注意,我们只使用了新点与训练点的内积。内核技巧利用了这一事实并定义了变换点的内积,而没有实际找到变换。

如果未知转换为 P(X),则核函数将为: K(Xi,Xj) = <P(Xi),P(Xj)>。因此,不是寻找 P,而是定义内核函数,它表示高维 space 中内积的标量结果。也有关于什么函数可以是核函数的定理,即对应于另一个space.

中的内积

选择核函数后,算法修改如下:

Initialize: F(X) = 0
For i=1 to N:
    Calculate F(Xi)
    If F(Xi)*Yi <= 0:
        F(.) <--- F(.) + K(.,Xi)*Yi + Yi

最后,F(.) = a1*K(.,X1) + ... + ...aN*K(.,XN) + b 其中 a's{0,y1,y2}.

RBF 内核

径向基函数是核函数的一种,实际上是计算无穷维空间的内积space。可以写成

K(Xi,Xj) = exp(- norm2(Xi-Xj)^2 / (2*sigma^2))

Sigma 是一些参数,您可以使用它来找到最佳值。例如,您可以使用不同的 sigma 值训练模型,然后根据性能找到最佳值。您可以从 sigma = 1

开始

训练模型找到F(.)后,对于新数据ZF(Z) = a1*K(Z,X1) + ... + ...aN*K(Z,XN) + b的符号将决定class。

备注:

  • 关于你的方差问题,你不需要求方差。
  • 关于你问题中的x and z,在每次迭代中,你应该找到当前数据点的内核输出和所有先前添加的点(错误class化的点因此被添加到 F).
  • 我想不出一个简单的有指导意义的数值示例。

参考资料: 我借用了一些符号 https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0ahUKEwjVu-fXo8DOAhVDxCYKHQkcDDAQFggoMAE&url=http%3A%2F%2Falex.smola.org%2Fteaching%2Fpune2007%2Fpune_3.pdf&usg=AFQjCNHlxy9TnY8xNe2-QDERipN_GycSqQ&bvm=bv.129422649,d.eWE