SMO 算法优化

一、优化原因
在几百个点组成的小规模数据集上,简化版SMO算法的运行是没有什么问题的,但是在更大的数据集上的运行速度就会变慢。简化版SMO算法的第二个α的选择是随机的,针对这一问题,我们可以使用启发式选择第二个α值,来达到优化效果。

1、启发选择方式

下面这两个公式想必已经不再陌生:
SMO 算法优化_第1张图片

在实现SMO算法的时候,先计算η,再更新αj。为了加快第二个αj乘子的迭代速度,需要让直线的斜率增大,对于αj的更新公式,其中η值没有什么文章可做,于是只能令:在这里插入图片描述

因此,我们可以明确自己的优化方法了:

  • 最外层循环,首先在样本中选择违反KKT条件的一个乘子作为最外层循环,然后用“启发式选择”选择另外一个乘子并进行这两个乘子的优化。
  • 在非边界乘子中寻找使得|Ei - Ej| 最大的样本
  • 如果没有找到,则从整个样本中随机选择一个样本。

2、完整版SMO算法

完整版Platt SMO算法是通过一个外循环来选择违反KKT条件的一个乘子,并且其选择过程会在这两种方式之间进行交替:

  • 在所有数据集上进行单遍扫描
  • 在非边界α中实现单遍扫描

非边界α指的就是那些不等于边界0或C的α值,并且跳过那些已知的不会改变的α值。所以我们要先建立这些α的列表,用于α的更新状态。
在选择第一个α值后,算法会通过"启发选择方式"选择第二个α值

你可能感兴趣的:(SMO 算法优化)