目录
5. 序列最小优化SMO(Sequential Minimal Optimization)
学习完机器学习实战的支持向量机,简单的做个笔记。文中部分描述属于个人消化后的理解,仅供参考。
本篇综合了先前的文章,如有不理解,可参考:
所有代码和数据可以访问 我的 github
如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~
0. 前言
支持向量机(Support Vector Machine)是一类监督学习的二分类算法。
通过构建超平面,将数据分割开来,超平面一边的数据属于同一类别。
支持向量是指距离分割超平面最近的那些点,支持向量机目的是使得支持向量到超平面的间隔最大。
- 优点:泛化错误率低,结果易于解释
- 对参数调节和核函数的选择敏感
- 适用数据类型:数值型和标称型数据
如下图所示(图源:百度百科):

为分割超平面,在超平面上下方各建立一个界面
和
,在
之上的为一类,在
之下的为一类。
SVM的目的是为了最大化间隔,即 到
的距离。
1. 寻找最大间隔
在SVM中,定义正类 ,定义反类
,这是为了方便后面计算。
通过 拟合数据的分界线,即超平面,则可定义上界面为
,下界面为
。因可以通过改变系数的倍数表示距离,所以可粗略定义为
。
上界面以上的点表示为 ,下界面以下的点表示为
,所以综合可得
。
需最大化上界面到下界面的距离:
所以,可得目标函数和约束条件:
2. 拉格朗日乘子法和KKT条件
- 拉格朗日乘子法:求在约束条件下,函数的极值问题
- KKT条件:若约束条件为不等式,则需满足一定条件
在拉格朗日乘子法中,引入了其他的参数,并将原问题转换为对偶问题(求最小值转换为求最大值)。
首先修改目标函数和约束条件为:
应用拉格朗日乘子法:
应满足的KKT条件为:
将KKT条件代回拉格朗日乘子法:

支持向量机SVM(Support Vector Machine)&spm=1001.2101.3001.5002&articleId=83240826&d=1&t=3&u=d06e6a6984d34625bdf4ec739de0ced2)
1436

被折叠的 条评论
为什么被折叠?



