[机器学习&数据挖掘]SVM---核函数

一、核函数概述:算法

核函数通俗的来讲是经过一个函数将向量的低维空间映射到一个高维空间,从而将低维空间的非线性问题转换为高维空间的线性问题来求解,从而再利用以前说的一系列线性支持向量机,经常使用的核函数以下:函数

多项式核函数:优化

            

高斯核函数:spa

            

好比硬间隔种的目标函数为:3d

            

而核函数替换后的目标函数为:blog

             

从这个两个目标函数找共同点,其实会发现核函数是做用在特征向量上,开始的目标函数一次计算是利用了两个特征向量,而接下来的核函数是对两个特征向量作函数运算,假如将核函数利用在一次运算利用三个特征向量的计算,这时核函数就会对这三个特征向量作核函数,其实就是一个替换的问题,将两个特征向量点积运算换成一个核函数的值,仅此而已。变量

二、SMO算法概述:循环

所以接下来的处理仍是求解拉格朗日乘子、w、b,所以引入SMO(序列最小最优化算法)遍历

 首先SMO算法要解决的对偶问题以下:方法

             

SMO算法是一种启发式算法,基本思路:若是全部变量的解都知足此最优化问题的KKT条件,那么这个最优化的问题的解就获得了,SMO算法其实就是在求解拉格朗日算子。SMO算法子问题:先选择两个变量,而后固定其余变量,针对此两个变量构建二次规划问题,子问题由两个变量,一个是违反KKT条件最严重的变量,另外一个由约束条件自动肯定,而后对此子问题求解,当此两个变量都知足KKT条件,则子问题求解完成。SMO算法就是将问题不断的分解为此子问题,直到全部的变量的解都知足此问题的KKT条件,从而结束算法

经过以上的对偶问题能够将子问题写成(此处假定选择两个变量alpha一、alpha2):

              

              

注意:此子问题的目标函数是从上面的对偶问题得来,在推导的过程当中会发现有一些项没有,是由于这个时候只有alpha1和alpha2是变量,其余的都看做固定的值,就相似求min(f(x))和min(f(x)+C)的解x是同样的(C为常数)

三、alpha计算公式:

接下来几个公式用于每次计算:

              

注:Ei是g(x)对xi的预测值对yi的值之差

               

              

此计算的是alpha2未通过处理的值,由于各个alpha都由一个范围的,具体以下分段函数:

              

经过alpha2能够求得alpha1的新值以下:

              

四、变量选择:

(1)首先面临的是第一个变量的选择,在SMO算法的概述中我也介绍过,就是最不知足此问题的KKT条件,KKT条件为什么看以下(KKT是相对于每一个样本点来讲的即(xi,yi)):

                  

                  g(xi)如上述的式子

第一个变量的选择是SMO的外层循环,在检验过程当中,首先遍历全部知足0<alpha<C条件的样本点,即在间隔边界上的支持向量点,检验其是否知足KKT条件,若是都知足,则遍历整个训练集是否知足KKT条件,选择最不知足的点为第一个变量。

(2)其次是第二个变量的选择:第二个变量的选择是SMO的内层循环,首先假定已经选定了第一个变量,第二个变量的选择是但愿能使alpha2有足够大的变化,一种简单的作法是其对应的|E1-E2|最大。在特殊的状况下,经过以上方法不能使目标函数有足够的降低,则采用向下启发规则继续选择alpha2,遍历全部的间隔边界上的支持向量点,依次将其做为alpha2试用,直到目标函数有足够的降低,若找不到则便利整个训练集;若仍找不到,则放弃alpha1,经过外层循环继续选择另外的alpha1.

(3)计算b和差值Ei

由于在每次完成两个变量的优化以后,都须要从新计算b和Ei,主要是Ei的计算须要用的b,公式以下:

      

      

      

相关文章
相关标签/搜索