OnlineSVR算法原理(2)

来源:互联网 发布:金融专业数据分析 编辑:程序博客网 时间:2024/05/28 11:50

 OnlineSVR算法原理(2)

   

    通过下面的讲解你将获得对OnlineSVR(在线支持向量回归机)算法的全面了解。

  目录

    01. SVM简介()

    02. 算法分析

    03. 伪代码算法

    04. 复杂度分析

05. 测试

  OnlineSVR算法原理(1)

2.7 Support集合

     Support集合为空时,所有的qih值可以直接更新,DqcSupport集合不再有影响。虽然Support集合为空,但还是要通过Dqc更新b的值:

Db = Dqc

Dh(xi) = Db,    i=1..l

 

(41)

 

 

2.8 样本移动

 

至此,我们已经找到了在保持满足KKT条件的前提下通过改变Dqc的值来更新SupportErrorRemaining三个集合的方法。接下来的问题是Dqc改变后会出现哪些可能的情形。下面是三个集合与h(x)之间的关系图:

   

    在该图中,每个圆圈代表一个样本。红色圆圈代表Error样本,黄色圆圈是Support样本,绿色圆圈是Remaining样本。

当尝试增加一个新样本时,会出现两种情形(蓝色圆圈表示新样本)

 

第一种情形是,新样本的误差h(x)小于e。这种最简单的情况,此时应把该新样本直接增加到Remaining集合中,无须改变其他集合。如果h(x)大于等于e,情形要复杂得多:

 

此时新样本的qch(xc)的值会不断改变,直到它被移动到Support集合或Error集合中。注意图示中的箭头表示样本qih(xi)的移动方向。但它的移动将带来新的问题——这些变化将会影响到其他样本的移动:

 

在更新过程结束时,如果qc的变化量过大,一些样本更新qih(xi)后,可能会退出它所在的样本而转向其他集合。所以在把新样本移动到SupportError集合之前,我们应该先移动那些由于qih(xi)的更新而转入其他集合的样本。此时要注意到另外一个重要因素:并不是所有样本都像新样本一样朝一个方向移动:

 

Support集合中的样本来说,它的移动方向取决于bi的符号;而对ErrorRemaining集合中的样本,它的移动方向取决于gi的符号。下面将展示所有可能出现的移动情形。

 

2.9 Support集合到Error集合

 

当一个样本从Support集合转移到Error集合中时,它的qi0<|qi |<C变化成|qi |= C,|h(xi)||h(xi)|= e变成| h(xi) |> e。对Support样本来说,更新公式为:

Dqi = bi Dqc

(1)

于是可得到相关的变化量:

Dqc = Dqi / bi

(2)

在这种情况下:

Dqc = (C - qi) / bi    or   (-C - qi) / bi

(3)

 

 

2.10 Support集合到Remaining集合

 

当一个样本从Support集合转到Remainning集合时,它的qi0<| qi |<C变成| qi | = 0,并且| h(xi) || h(xi) |= e变成| h(xi) | < e。对于Support样本来说,更新公式是:

Dqi = bi Dqc

(4)

于是可得到相关的变化量:

Dqc = Dqi / bi

(5)

在此情形下:

Dqc = - qi / bi

(6)

 

2.11 Error集合到Support集合

 

当一个样本从Error集合转到Support集合时,它的| h(xi)|| h(xi)|> e 变成| h(xi)| = e。对Error样本来说,更新公式为:

Dh(xi) = gi Dqc

(7)

于是可得到相关的变化量:

Dqc = Dh(xi) / gi

(8)

在此情形下:

Dqc = (-e-h(xi)) / gi    or   (e-h(xi)) / gi

(9)

 

 

2.12 Remaining集合到Support集合

 

当一个样本从Remaining集合转到Support集合时,可以看到它的| h(xi)|| h(xi)| < e 变成 | h(xi)| = e。对Error样本而言,更新公式为:

Dh(xi) = gi Dqc

(10)

可得到相关的变化量:

Dqc = Dh(xi) / gi

(11)

此种情形下:

Dqc = (-e-h(xi)) / gi    or   (e-h(xi)) / gi

(12)

 

2.13 算法是如何工作的

 

在一个新样本被加入之前,三个集合中的所有样本都可能被移动。在每次迭代过程中,新样本的h(xc)qc值也发生了变化。当| h(xc)| = e时,该样本增加到Support集合中。若在此之前|qc|的值变成|qc| = C,那么该样本应加入到Error集合中去。鉴于此,我们可以建立一个增量算法。该算法从开始于一个已确定的情形,能把一个新样本加入到训练集中。在下一章节中,我们将展示出完整的算法过程。本章节旨在说明这样一个事实:在增加一个新样本之前,为了保持满足KKT条件可能会出现某个样本从一个样本集合转移到另一个集合的情况。

 

2.14 稳定性

 

糟糕的是,由于该算法进行了大量的浮点运算会产生许多不稳定性的错误。当一个样本退出其所在集合而不再满足KKT条件时,这种错误便有可能会发生。为了避免这种情况,我们设想出一个方法来矫正这样的样本,让它们能返回到它们先前的所属集合中。这个方法的基本思想是仅当一个样本从它所属集合中退出的时候,根据标准算法中相同原理再给该样本创造一个能返回到先前集合的机会。在下一章节中,我们将列出所有可能出现的情形。

 

 2.14.1 无效的Support样本

 

当一个Support样本的|qi|值变成|qi| > C时,该样本便是无效的:这种情形下,它既不是Support样本,也不是Error样本。此时它不满足KKT条件,故算法中涉及到该样本的部分将不会被使用。

 

2.14.2 无效的Error样本

 

当一个Error样本的|h(xi)|值变成|h(xi)| < e 时,该样本便是无效的:这种情形下,它既不是Error样本,也不是Remaining样本,因为此时|qi| = C

 

2.14.3 无效的Remaining样本

 

当一个Remainning样本的|h(xi)|值变成|h(xi)| > e 时,该样本便是无效的:在这种情形下,它既不是Remaining样本,也不是Error样本,因为此时|qi | = 0