你能给我一个径向基函数核技巧的一步一步的数值例子吗?我想了解如何申请感知器

时间:2016-08-12 01:06:53

标签: machine-learning svm

我理解很好的感知器,所以只在内核上加注,但我不熟悉matemathic表达式,所以请给我一个数值例子和内核指南。

例如:

我的感知器超平面是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;中插入这个公式但是它看起来如何看起来如果我插入?

我想问一个数字例子以避免混淆。

1 个答案:

答案 0 :(得分:1)

线性感知器

如您所知,可以训练线性感知器进行二元分类。更确切地说,如果{n}空间中有n个要素x1, x2, ..., xnRn,并且您希望将它们标记为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空间中,这意味着一条线可以分开两组点。

<强>算法

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

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,更准确地说,是错误分类的训练点。 W = a1*X1 + ... + ...aN*XN a's {0,y1,y2}位于Z。{/ 1>

现在,如果有一个新点,让我们说F(Z) = W.Z + b = a1*(X1.Z) + ... + aN*(XN.Z) + b,要标记,我们会检查3rd coordinate = 0的符号。有趣的是,只有新点和训练点的内在产品才能参与其中。

核心感知器

现在,如果问题不能线性分离,可能会尝试进入更高维空间,超平面可以在其中进行分类。例如,考虑2D空间中的圆。圆圈内外的点不能用线分开。但是,如果您发现可以将点转换为3D空间的变换,使得前2个坐标对于所有点保持相同,并且第3个坐标分别对于圆内外的点变为+1和-1,则定义为P(X)的平面可以分离点。

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

如果未知转换为K(Xi,Xj) = <P(Xi),P(Xj)>,则内核函数将为: P。因此,不是查找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}位于K(Xi,Xj) = exp(- norm2(Xi-Xj)^2 / (2*sigma^2))

RBF内核

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

sigma = 1

Sigma是您可以使用的一个参数,可以找到最佳值。例如,您可以使用不同的sigma值训练模型,然后根据性能找到最佳值。您可以从F(.)

开始

训练模型以查找Z后,对于新数据F(Z) = a1*K(Z,X1) + ... + ...aN*K(Z,XN) + bx and z的符号将决定该类。

<强>说明:

  • 关于方差的问题,您不需要找到任何差异。
  • 在您的问题中关于F,在每次迭代中,您应该找到当前数据点和所有先前添加的点的内核输出(错误分类的点,因此被添加到<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script> $(document).ready(function(){ $(".remove_tr").click(function(){ var tr_id = $(this).parent().attr("id"); var flag = "N"; var row_cnt = 0; $("#dummy_table tr").each(function(){ if( flag == "Y" ){ $(this).attr("id", "row_"+ row_cnt); $(this).children("td:first-child").html("row_"+ row_cnt); $(this).attr("id", "row_"+ row_cnt); row_cnt++; } if( flag =="N" && $(this).attr("id") == tr_id){ var rowArr = $(this).attr("id").split("_"); row_cnt = rowArr[1]; $(this).remove(); flag= "Y"; } }) }); }); </script> )。
  • 我无法想出一个简单的指导数字例子。

参考文献: 我从中借了一些符号 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