您的位置:首页 > 其它

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 机器学习
相关文章推荐