序列最小最优化算法

 序列最小最优化算法

前面我们讲过了支持向量机的原理,将我们的问题转化为约束优化问题,但还没有提到使用什么方法求解最优化解。
事实上一般我们用SMO(序列最小最优化算法)求解最优解,最要是这个算法即使在训练样本很大的时候,仍然可以有很快的收敛速度。
SMO算法需要求解的支持向量机对偶问题如下:

序列最小最优化算法_第1张图片

上式,我们需要求解的变量就是拉格朗日乘子,每一个变量都对应一个样本(x_i,y_i);只要求解出每一个就可以得到我们的模型。

在这里插入图片描述

SMO算法是一种启发式算法,其思路就是不断更新每一个拉格朗日乘子,使它们满足KKT条件,KKT条件与拉格朗日函数关系关系密切,来自于拉格朗日对偶函数求其最优解时,得来的结论,即如果原始问题与对偶问题若有相同的解,则他们的解需满足KKT条
件。

那么什么时候原始问题与对偶问题有相同的解?我在之前介绍拉朗日函数的时候提到过这个定理,感兴趣的可以看看,其实这个定理很好记,即不等式约束严格满足,等式约束是放射函数,则原始问题和对偶问题是有相同的解的。

 

https://blog.csdn.net/weixin_43327597/1article/details/104321889

关于KKT条件具体是什么这里就不介绍了,我准备在以后的博客里也专门写一篇介绍一下。

那么现在我来具体介绍一下SMO算法的思想,SMO算法,针对我们需要求解的约束优化问题,我们需要知道这几点

1.不断更新的意图是是最小化函数的值不断变小,以至于最后得到是最小化函数最小的最优解。

2.拉格朗日乘子最后需要满足KKT条件

所以SMO算法的思路是,从众多的拉格朗日乘子中选择两个,其余固定,之后不断更新这两个的值,达到使优化函数最小的目的。达到收敛之后,再重复上述操作选择另外两个进行收敛。所以按照上面的操作当选择两个拉格朗日乘子进行迭代时,其他的则固定,所以约束优化问题变为下式

序列最小最优化算法_第2张图片

 

上式,i=1,2即为我们选择的那两个变量,其余则固定,选择的两个变量其中应至少有一个不满足KKT条件,则才有迭代的价值。当都满足KKT条件时,则说明最最优解已经求出。其中K_{12}下标为1,2的样本特征向量的核函数表示。

在这里其实有一个约束大家都能看到\alpha _{1}y_{1}+\alpha _{2}y_{2}=k,k是一个常数,因为我们固定了其他的,i=3,4,..N.所以初始化所有的时需要满足

 

 

y_{1} \neq y_{2} \doteq > \alpha _{1}-\alpha _{2}=K, y_{1} = y_{2} \doteq > \alpha _{1}+\alpha _{2}=K,所以我们需要在上述关系中找出最优的\alpha_{1},\alpha _{2},事实上我们确定了\alpha _{1}也就等于确定了\alpha _{2},且\alpha _{2}的取值范围是可以确定的由上面不等式应该可以看出,这里不做描述了。那么我们如何迭代\alpha_{1},\alpha _{2}呢?

序列最小最优化算法_第3张图片

y_{i}即为样本被分类标记的真实值,g(Xi)为模型得到的预测值Ei为预测值与真实值之差

则更新公式为

序列最小最优化算法_第4张图片

\phi (x)在核函数那一篇博客讲过,这里是一个非线性映射,将输入空间映射到特征空间,通过此公式求得其中一个\alpha之后,再利用求出的\alpha计算另一个。

那就讲到这里,上面可能有一个疑惑,最后两个公式怎么来的?其实是通过将两个变量用一个表示,然后求导得到的,这里就不多说了,很简单的数学原理,只是公式十分复杂。

 

 

 

 

 

 

 

 

 

 

uploading.4e448015.gif转存失败重新上传取消

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(机器学习)