支持向量机(SVM)

找到一篇很好的SVM学习笔记[https://blog.csdn.net/Revendell/article/details/84674024],良心推荐。

在样本空间中,划分超平面可通过线性方程来描述:

wTx + b = 0

其中w是法向量决定了超平面的方向,b为位移项,决定超平面与原点之间的距离。

支持向量

距离超平面最近的几个训练样本使得等号成立,它们被称为支持向量,两个异类支持向量到超平面的距离称为间隔。

WX + B >= +1  , y=+1
WX + B <= -1  , y=-1

要找到具有最大间隔的划分超平面,这样鲁棒性高,泛化能力强。间隔=2/||w||,所以要找到相应的w和b使得间隔最大。

要最大化间隔1/||w||,就是最小化||w||^2。这就是支持向量机的基本型。

如何最小化

对于约束最优化问题,有时原始问题的最优解不好求解,可以借助拉格朗日对偶性将原始问题转化为对偶问题,通过求解对偶问题的解来获得原始问题的最优解。

使用拉格朗日乘子法得到其对偶问题。

对偶问题用SMO算法来解决。

令L(w,b,a)对w和b求偏导为零,后带入L的式子消去w和b。具体步骤查看最上面博客。

你应该能够证明我们这个优化问题的条件是满足 p∗ = d∗ 和 KKT 条件的(等式 (3-7))。这样,我们就可以通过解这个对偶问题来解决掉原来的主优化问题。具体来说,就是我们构建了一个以 αi 作为参数的取最大值问题(maximization problem),这个就很简单了,不难发现,这是一个二次规划问题。可使用通用的二次规划算法来求解,然而,该问题的规模正比于训练样本数,这会在实际任务中造成很大的开销,人们通过利用问题本身的特性,提出了很多高效的算法,例如SMO(Sequential Minimal Optimization)。

SMO算法[https://blog.csdn.net/qq_39521554/article/details/80723770]

首先,初始化一个α,让它满足对偶问题的两个初始限制条件,然后不断优化它,使得由它确定的分离超平面满足g(x)目标条件,在优化的过程中始终确保它满足初始限制条件,这样就可以找到最优解。

而是想着怎么让α满足g(x)目标条件。

核函数

现实生活中存在异或问题,不存在一个正确划分两类的超平面。面对这样的问题,可以将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。

核函数有一个特性,xixj在特征空间的内积等于它们在原始样本空间通过k()计算的结果。

支持向量回归

传统回归模型通常直接基于模型输出f与真实输出y之间的差别来计算损失。与此不同,支持向量回归,当f与y的差别绝对值大于e时才计算损失,这就构建了一个2e的间隔带,若训练样本落入此间隔带,则被认为是预测正确的。

原文地址:https://www.cnblogs.com/chenshaowei/p/12759216.html