非线性支持向量机(2)
常用的核函数:
1、多项式核函数
对应的支持向量机是一个p次多项式分类器,在此情形下,分类决策函数成为:
(来自前面关于支持向量机w的估计,因而分类决策函数转为今儿通过核函数的内积将
映射后对分类决策函数进行替换得到上f(x)式子)
2、高斯核函数
对应的支持向量机是高斯径向基函数分类器,在此情形下,分类决策函数成为:
如上应用核技巧,将线性分类的学习方法应用到非线性分类问题中,将线性支持向量机扩展到非线性支持向量机,只需要将线性支持向量机对偶形式中的内积转换成核函数。
非线性支持向量机学习算法:
输入:训练数据集,其中
输出:分类决策函数
(1) 选取适当的核函数K(x,z)和适当的参数C,构造并求解最优化问题
求解最优解
(2) 选择a*的一个正分量,计算
(3) 构造决策函数:
当K(x,z)是正定核函数时,上述问题是凸二次规划问题,解是存在的。
由于支持向量机的学习问题可以形式化为求解凸二次规划问题,这样的凸二次规划问题具有全局最优解,并且有许多最优化算法用于该问题求解。其中就包括下面要提到的序列最小最优化(SMO)算法。
SMO算法要解如下凸二次规划的对偶问题:
在这个问题中,变量是拉格朗日乘子,一个变量ai对应于一个样本点(xi,yi);变量的总数等于训练样本容量N.
SMO算法的基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件,否则选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,因为这会使得原始二次规划问题的目标函数值变得更小,更重要的是这时子问题可以通过解析方法求解,那么就可以显著提高算法额计算速度。子问题有两个变量,一个是违反KKT条件最严重的,另一个由约束条件自动确定,如此SMO算法将原问题不断分解为子问题并对子问题求解,以达到求解原问题的目的。
子问题的两个变量中只有一个是自由变量,假设a1,a2为两个变量,a3,a4,...,aN固定,那么由等式约束可以得到:
(即上式提取a1并移项)
如果a2确定,那么a1也就随之确定,从而子问题同时更新两个变量。
整个SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。
两个变量二次规划的求解方法:
假设选择的两个变量是a1,a2,其他变量ai(3,4,...,N)是固定的,于是SMO的最优化问题(经核函数转换后的最优化问题)的子问题可以写成:
其中,是常数
(具体求解算法目前看不懂)
(总的来说就是不断将原二次规划问题分解为只有两个变量的二次规划子问题,对子问题进行解析求解,直到所有变量均满足KKT条件位置,通过这种启发式的方法得到原二次规划问题的最优解,因为子问题有解析解,因此计算子问题速度很快,即使子问题次数多但总体算法高效。)