svm KKT条件违反SMO中的alpha选择

时间:2017-12-07 09:47:40

标签: svm

当我阅读关于SMM for SVM的论文时。 John C. Platt paper

选择违反KKT条件的alpha非常令我困惑。我不太了解下面的代码。

if ((r2 < -tol && alph2 < C) || (r2 > tol && alph2 > 0))

为什么选择r2&lt; -tol alph2&lt; C,而不是r2&lt; TOL?

1 个答案:

答案 0 :(得分:0)

定义KKT条件的重要性

首先,请注意,SVM的KKT条件对于摆脱不是支持向量的向量特别有帮助。这样,考虑一个(非支持的)矢量点,例如带有远高于超平面(正确识别)的标签1的矢量点。考虑一下,如果将点插入决策方程,则可能会得到2.5之类的值,因为该点不是支持向量。像这样的点在SVM的优化阶段被系统清除,因此只有加权值的点是靠近超平面的支持向量。

给出:在以下情况下违反KKT条件:

  • [a_i
  • [a_i> 0和y_i(+ b)> 1]

现在,让我们看看您在Platt中提到的伪代码。

Plat 1998中的伪代码摘录:

E2 = SVM output on point[i2] – y2 (check in error cache)
r2 = E2*y2

if ((r2 < -tol && alph2 < C) || (r2 > tol && alph2 > 0))

普拉特的论文和KKT条件

考虑到r2和E2的值,普拉特的if语句在数学上说如下:

如果[y_i((w,x)+ b-y_i)<-tol && alpha2 tol && alpha2> 0]

让我们将tol设置为0。第一个条件的等式现在显示为: y_i((w,x)+ b-y_i)<0

重写,本质上是: y_i((w,x)+ b)<1,因为(y_i)*(y_i)将始终为正1.条件: [y_i((w,x)+ b)<1和a

此代码的意思是,进一步说明,此处普拉特正在检查KKT条件的违反者(“无边界”)。他本质上是在尝试清除显然根本不靠近超平面的那些点。