SVM(二) latex手打公式 良心推导 原理分析 个人理解


往期博客
SVM(一) latex手打公式 良心推导 原理分析 个人理解

简介

这一篇主要是衔接上一个SVM(一),主要是软间隔、核函数和SMO的分享。建议没有读过第一篇的先看看第一篇blog。这一篇直接接着上一篇blog。

SVM(二)

软间隔

上一次我们介绍了SVM的原理,但是不是所有的样本都能如我们的心意,比如这种情况:

在这里插入图片描述

很明显一个规则的超平面不能很好的将两类样本进行分割,所以我们引入了软间隔,哦哦,不是我引入的,那些科学家们就引入了。

在这里插入图片描述

我们把后面那一项作为松弛变量,如果没有的话式子的意思就是保证样本点距离超平面都大于1,这时候有了一个松弛变量,我先他的作用就不需要再说了,实际的意义就是可以把一些噪声点包含进正确的类别。

这个时候我们需要修改我们的原始的约束方程组了。

在这里插入图片描述

可以看到我们需要将松弛变量增加到约束方程中去,道理很简单,我们不能一味的放宽对于噪声点的限制,那样的话这个svm模型就会过拟合,也就是失去泛性。

而其中的C是叫做调和系数,什么意思呢,一般都会有一个这样的系数和惩罚项放在一起,主要是用来控制整个模型的泛性。也就是控制这个超平面到底能有多软。

然后我们进行添加软间隔之前一样的推导,不过唯一有一个比较重要的变化就是拉格朗日乘子的范围

在这里插入图片描述

这里增加了一个拉格朗日乘子的上线,主要是根据KKT条件得到的。

然后我们就可以根据公式求得w*

在这里插入图片描述

然后根据公式求得b*

在这里插入图片描述

这里注意一下下标,i和j是不一样的,对了sum符号是i从1到N,这里手打忽略了。

核函数

我们在SVM(一)中说的是核函数解决了在线性不可分情况下的超平面划分问题。其实如果没有核函数,依靠我们已经说过的部分,已经可以说学会了SVM了,但是还有一个比较重要的问题,就是你比别人慢很多,核函数可以提高寻找到最优解的效率。

我们先来看看我们现在的问题的样子:

在这里插入图片描述

上面的公式中最消耗计算的是(xixj),因为这不是两个数字的乘积,而是两个向量的乘积,而且是点积。我们需要求得很多个这样复杂向量的点积,并且进行sum求和,这样的计算量有多大的,我们来举一个例子,常见的一个图片数据集大约有5-10万张图片,然后每一张图片我们假设256个维度。10万个样本的256256向量的计算,大大拖慢了整个算法的速度。

核函数就可以很好的解决这个问题:

我们举一个常见的核函数:

在这里插入图片描述

假设现在有两个高维向量x和z。此时为了简化计算,我们使用核函数将其映射到高维空间,然后在高维空间再进行运算。那么具体怎么使用呢?

假设这里我们使用高斯核:

在这里插入图片描述

那么两个超级复杂的向量点积就变成了上了计算上面这个,复杂度大大降低。

SMO优化

先不说什么是SMO,我们顺着上面说,现在知道了核函数的好处了,我们要应用到公式中去:

在这里插入图片描述

s.t.在这里省略不打了,也就是说,我们利用核函数K替换了xi*xj的向量点积。怎么样,就是这么简单。快写完了,我有点开心。

然后我们再来仔细看这个原始问题:

在这里插入图片描述

现在就是要求解α,但是α并不好求,他是一个向量。这里引入SMO,中文是序列最小最优化算法。

现在不是要求解一堆α吗,但是直接求一堆并不好求,所以咱们就先求一个,然后把其他的α当做参数。然后在调整两个,再接着找下一对…

而求解的过程运用了KKT条件,因为我们知道只要是最优解一定满足KKT,这两个命题是充要关系。那么我们先满足一个是KKT,然后满足第二个是KKT,以此类推。

SMO优化过程

这里我们描述一些SMO的优化过程,同时更好的理解变量的选择过程。

  1. 选择第一个变量
  • 选择违反KKT条件最多的点,量化公式是:

在这里插入图片描述

其中 ξ i \xi _i 表示的就是违反的量化指标。

  1. 选择第二个变量
  • 选择第二个还是要选择除了第一步之外,修改的步子最大的一个α,量化方式是|E1 - E2|,对于E怎么求,公式选择书上的:

在这里插入图片描述

  1. 不是选择第三个点而是选择下一对,每一次选择两个α进行调整
  • 直到所有的α都满足条件。

欢迎指正,大家共勉~

猜你喜欢

转载自blog.csdn.net/qq_40742298/article/details/106837632