SVM 支持向量机(1) 硬间隔最大化
2017-03-02 22:02
204 查看
SVM (Support Vector Machine)- 支持向量机
主要从<<统计学习方法>>中整理线性可分的情况下,假设存在一个超平面, w⃗ 是其法向量,对于正样本有 w⋅x+b≥γ^, 对于负样本有w⋅x+b≤−γ^, 如果γ=0, 说明样本刚好落在超平面上. 这里能一眼看出来width=2γ^, 对于二分类, yi={1,−1}, 于是上面两个不等式乘以相应的yi就都成了yi(w⋅x⃗ i+b)≥γ^
所有样本带进去都满足, 至少有一个样本取等号,γ^就是最小函数间隔, 若定义γ^i=yi(w⋅x⃗ i+b)
由于w和b的等比例缩放, width也会跟着缩放, 没法求最优, 所以得把w变成单位法向量, 这样产生了一种几何意义: 样本x⃗ i在法向量方向上的投影的点离超平面有多远, 于是有了几何间隔γi=yi(w⋅x⃗ i+b)||wi||最小几何间隔
γ=mini=1,2,...,nγi=γ^i||wi||
于是有了最大化最小集合间隔的问题: maxw,bγ^||w||
满足对于所有样本有 yi(w⋅x⃗ i+b)≥γ^
假设将w和b缩放到λw和λb, 则函数间隔变成了 λγ^, 这对不等式约束没有影响, 对最大化γ也没有影响(相除消掉了), 所以令λ=1/γ^, 则有等价的优化问题
maxw,b1||w||
yi(w⋅x⃗ i+b)≥1这里我认为相当于是缩放了坐标系, 即缩放x和b使得γ^=1
这条缝边上的点是支持向量的候选集, 即让不等式条件取等号的样本点:yi(w⃗ ⋅x⃗ i+b)=1
从图中可以看出, 缝的宽度width=(x⃗ +−x⃗ −)⋅w⃗ ||w⃗ ||=(1−b)+(1+b)||w⃗ ||=2||w⃗ ||
于是有了优化问题 ,让带子的宽度尽量大maxw⃗ 1||w⃗ ||
相当于minw⃗ 12w⃗ 2,s.t. −(yi(w⃗ ⋅x⃗ i+b)−1)≤0
这是个凸优化的问题,根据 Slater’s condition, 这里的约束都是线性的, 并且存在一组w和b满足约束条件(用人话讲就是存在一个超平面能把样本分开,当然如果是线性不可分的,那么条件就不成立了), 原问题和对偶问题应该是强对偶的, 这样应该满足KKT条件了,于是可以用拉格朗日乘数法求对偶问题, 拉格朗日函数为,
L(w⃗ ,b,α⃗ )=12w⃗ 2−∑iαi[yi(w⃗ ⋅x⃗ i+b)−1], αi≥0
先要固定α⃗ , 求w⃗ ,b最小化L得到对偶函数Ld(α⃗ ) , 可以看到这是w的二次函数,存在最小值, 但是 b是线性的, 除非b的系数等于0,否则Ld(α⃗ )=−∞,因此对b求导得到b的系数并令其等于0
∂L∂b=−∑iαiyi=0
这样Ld(α⃗ )就不是负无穷了, 然后按照函数求极值的方法对w⃗ 求导并令其等于0
∂L∂w⃗ =w⃗ −∑iαiyix⃗ i=0
w⃗ ∗=∑αiyix⃗ i
现在把(2)(3)代入(1)得
Ld(α⃗ )=12∑i∑jαiαjyiyj(x⃗ i⋅x⃗ j)−∑iαi[yi(∑jαjyj(x⃗ i⋅x⃗ j)+b)−1]
把b提出来, 那一项等于0了, 结果就成了
Ld(α⃗ )=−12∑i∑jαiαjyiyj(x⃗ i⋅x⃗ j)+∑iαi
现在变成了对偶问题
maxα⃗ Ld(α⃗ ) s.t.∑iαiyi=0, αi≥0
加个负号就成了
minα⃗ 12∑i∑jαiαjyiyj(x⃗ i⋅x⃗ j)−∑iαi , s.t.∑iαiyi=0, αi≥0
而且由KKT条件之一的互补松弛条件可得到最优解之间的关系
α∗i[yi(w⃗ ∗⋅x⃗ i+b∗)−1]=0
如果yi(w⃗ ⋅x⃗ i+b)−1<0, 必然有αi=0, 对于那些αj>0的点, 就是支持向量(间隔带边上的点), 即
yj(w⃗ ∗⋅x⃗ j+b∗)−1=0
把上式两边乘以yj, 然后把w⃗ ∗(2)代入可得
b∗=yj−∑iα∗iyi(x⃗ i⋅x⃗ j)
这样, 位于缝隙中间的超平面就是(把约束里面的1去掉)
∑iα∗iyi(x⃗ i⋅x⃗ )+b∗=0
分类的时候就看输入点在平面上面(>0)还是下面(<0), 即
f(x)=sign(∑iα∗iyi(x⃗ i⋅x⃗ )+b∗)
传统解法是让 L(α⃗ )=12∑i∑jαiαjyiyj(x⃗ i⋅x⃗ j)−∑iαi 对αi的导数等于0, 然后配合边界约束求极值, L里面会有包含α2i的项, 求导以后变为一次, 因此需要解线性方程组获得极值点, 有时候极值会在边界上达到而不是在极值点达到, 总之挺复杂的, 不过好在后来发明了SMO算法可以较快速的求出α⃗ . 求出α⃗ 之后按上面的公式得到分离超平面.
相关文章推荐
- SVM 支持向量机(2) 软间隔最大化与核方法
- 【机器学习】使用Scikit-Learn库实现支持向量机(SVM)最大化分类间隔
- 统计学习方法笔记:支持向量机之线性可分支持向量机与硬间间隔最大化
- SVM学习记录1:线性可分硬间隔最大化
- 机器学习第十课:支持向量机SVM(一)线性可分(硬间隔)SVM
- 支持向量机 - 2 - 线性可分支持向量机与硬间隔最大化
- 模式识别(Pattern Recognition)学习笔记(十一)--SVM支持向量机(狭义):大间隔
- 支持向量机 - 3 - 线性支持向量机与软间隔最大化
- 线性可分SVM与硬间隔最大化
- [机器学习]SVM---硬间隔最大化数学原理
- 机器学习(七、八):SVM(支持向量机)【最优间隔分类、顺序最小优化算法】
- 机器学习笔记八 - SVM(Support Vector Machine,支持向量机)的剩余部分。即核技法、软间隔分类器、对SVM求解的序列最小化算法以及SVM的一些应用
- 机器学习之支持向量机SVM Support Vector Machine (一) 线性SVM模型与软硬间隔
- [置顶] 为什么支持向量机要用拉格朗日对偶算法来解最大化间隔问题
- 机器学习(九):CS229ML课程笔记(5)——支持向量机(SVM),最优间隔分类,拉格朗日对偶性,坐标上升法,SMO
- 支持向量机原理(二) 线性支持向量机的软间隔最大化模型
- 学习SVM(二) 如何理解支持向量机的最大分类间隔
- 统计学习方法笔记:1.2 线性支持向量机与软间隔最大化
- SVM 推到期间 遇到的 表背景知识 (间隔最大化)
- SVM支持向量机三(软间隔处理规则化和不可分情况)