你能给我一个径向基函数内核技巧的简短的逐步数值示例吗?我想了解如何应用于感知器
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(.)
后,对于新数据Z
,F(Z) = a1*K(Z,X1) + ... + ...aN*K(Z,XN) + b
的符号将决定class。
备注:
- 关于你的方差问题,你不需要求方差。
- 关于你问题中的
x and z
,在每次迭代中,你应该找到当前数据点的内核输出和所有先前添加的点(错误class化的点因此被添加到 F
).
- 我想不出一个简单的有指导意义的数值示例。
我很了解感知器,所以只强调内核,但我不熟悉数学表达式,所以请给我一个数值示例和内核指南。
例如:
我的感知器超平面是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(.)
后,对于新数据Z
,F(Z) = a1*K(Z,X1) + ... + ...aN*K(Z,XN) + b
的符号将决定class。
备注:
- 关于你的方差问题,你不需要求方差。
- 关于你问题中的
x and z
,在每次迭代中,你应该找到当前数据点的内核输出和所有先前添加的点(错误class化的点因此被添加到F
). - 我想不出一个简单的有指导意义的数值示例。