svm训练完保存权重_svm-硬/软间隔-分类

最近在看oneclasssvm突然想到原来的svm还没洗完,打开西瓜书补充一下。

漫漫成长:拉格朗日乘子法与KKT条件详解​zhuanlan.zhihu.com
漫漫成长:拉格朗日乘子法与KKT条件详解​zhuanlan.zhihu.com
如何理解拉格朗日乘子法?​www.zhihu.com
1966cffaa80cc719367033eeae5aa95c.png

关于拉格朗日的详细例子可以看第二个链接。

关于拉格朗日和kkt条件可见上,很好的把拉格朗日和kkt与梯度下降法联系到一起方便理解,一般梯度下降法处理没有约束的优化问题,这也是大部分常见有监督机器学习算法使用的优化方法,无脑梯度下降呗,nn再配点启发式的改造。

如果有等式约束就用拉格朗日转化成无约束问题求解。

如果有不等式约束就拉格朗日+kkt然后想办法求解(我反正只知道svm的smo可以快速求解这个问题,要不然就用二次规划算法求)

50f66dad18b6e3443c9fab00eb0dd0fa.png

from 西瓜书:

形式上svm和线性回归类似:

17e163e9141b9dc3210b5ca7abfb38de.png

我们最终训练出来的svm的形式就是W*X+b,预测的时候把样本带入计算出W*X+b然后和正负1比较,大于1则属于样本1,小于-1则属于样本-1,否则就是落于间隔中无法判断。

直观来看:

7793eb1e7e7195a33248f0373fc2a1c6.png

两直线(或者超平面)的间隔为:

c9c2d3afe65020de989d3afe3b7c803e.png

具体可参考高中数学公式,两直线的距离的计算公式推广到超平面也是一样的形式。这个间隔称为margin。我们的目的是找到最大margin的超平面对应的公式:

5a56ec38a58fe27dab8236a433260243.png

直观上这样最鲁棒,间隔最大最不容易对未知的样本错分。

然后我们把这个实际问题用数学公式抽象出来:

971b72941f127b8a8f33bcae1eb8bd8c.png

然后统一成最小化的形式:

6673849fb18c6aa007e9826b2ef6f3ee.png

这里W右上角多了个平方对最重要优化的结果没有影响,是为了后面的计算方便而加上的,这里改成次方,4次方。。。之类的都没有影响,因为||W||本身就是一个正数。

这样我们就得到了SVM的基本形。

6673849fb18c6aa007e9826b2ef6f3ee.png

针对这种形式我们没有办法直接使用梯度下降法,最优化式子里面x都没有。。。x出现在约束项里何从下手。这个时候拉格朗日乘子法就派上用场了。

使用拉格朗日乘子法将上面的公式转化为其所谓的对偶问题的形式:

0b2483d43c21547c233f3f6f11fbae61.png

e68045f3dc86fa00dc42fe37616a4515.png

将6.9带入原式可得:

8f941c64e150345541cd74d5d164c62c.png
对偶问题,最小化变成最大化,公式死记硬背就完事儿了

这样就得到了原始问题的对偶问题形式了,我们只要求解出

就能根据6.9式得到W了,但是b求不出来,怎么处理b后面再说。

e40902d6db9209bf3f7e34b18b4a34c1.png

注意到原始的问题的约束条件不是等式约束而是不等式约束,所以这里要引入kkt条件:

力学渣:浅谈最优化问题的KKT条件​zhuanlan.zhihu.com
8e931b79544308a370ec8f48089c2e50.png

关于kkt的具体介绍可见:

5a8d21cb4aa0680e7c07f032c3d3c371.png
u就是本文中的alpha

1. L( w,b,

)对x求导为零;

0b2483d43c21547c233f3f6f11fbae61.png

我们对x求导令其为0可得:

2. h(x) =0;

这里没有等式约束所以这一步没有

3. u*g(x) = 0;

这里对应的不等式约束是

7b5a071b91503ed453dedba785d61e45.png

所以可得:

5dc1f19be721064bf9766e6e427e4817.png

4、u>=0

对应 的 :

86b801096bc66ce614eea3a357848e86.png

最终得到:

94ec6f100e77211ed1f18367e5a70d1c.png

其中最后一个等式最重要:

8795ad31264e094708e848759ffc99a8.png

如下重要结论:

8c2e715316852d9568e87873377ff657.png

当然这并不意味着svm只需要很少的样本。。。训练的时候还是需要越多越好的高质量样本的。

写到这里之后我重新翻阅了《机器学习》,《统计学习方法》和《机器学习实战》以及刘建平大佬的blog,对于硬间隔版本的svm的求解貌似并没有涉及到smo算法,因为硬间隔没有引入C这个参数的概念,关于硬间隔的求解也仅仅在《统计学习方法》上找到了一个例子

d437cc2bebf720ec42f4196bde2d90fe.png

7316e23fd6ce332dd81ed2ee93fcad6b.png

这实际上就是使用规划问题的解题思路来求解的并没有涉及到smo中提到的

871d0643643d9e38ed991276c9cd65d1.png

所以准确来说,网上的各种资料应该讲解的是软间隔版本的svm求解用到了smo的方法,否则这里的C的二次规划的求解怎么得到的??不合理啊。

那么下面就谈谈软间隔svm,

软间隔的svm引入了hinge loss的概念:

0b2483d43c21547c233f3f6f11fbae61.png

上面是原始的硬间隔的拉格朗日转化后的式子。

77c329deab0ce0885aae62779c84d03e.png

bb645f02dbfec8d4f9db007f679d4189.png

上式还是一个二次规划问题的形式,所以我们还是进行拉格朗日展开:

0e58d5ed3054b75cd607f1a21b5a1d56.png

这里相对于硬间隔来说多了一个不等式约束所以多了一个拉格朗日乘子。

求对除了

之外的变量求偏导数并令其等于0可得:

8c705cad8b7e22217f8e93442a02f77d.png

带入原式中可得smo软间隔全家桶:

35454497eb2892feb3c9e2c93d7eb17a.png

所以,注意下面这段话是重点,否则看机器学习实战的代码的时候会比较迷糊。

faeba2f979fc7bd22511d7f94b82150b.png

所以可以看到,只要是

对应的样本都是支持向量包括了

C的几何意义实际上就是界定了间隔的大小:

c82e81c1f3733d6c17be85d422515631.png

e68045f3dc86fa00dc42fe37616a4515.png

的上限C越大的时候,则对应的W整体的取值范围越大,则
可以取到的值越小,当C趋于无穷大的时候,无约束的
也很可能会趋于非常大的值,导致
可以取到非常小的值,也就是间隔平面可以非常非常小直到趋于同一个面。所以C越大则模型对训练集的拟合越严格,如果C趋于无穷大则模型倾向于把模型中的每个点都正确分类这是很容易过拟合的,C越小则相反。

需要注意这里kkt的条件进一步表示为:from

f51a968be6849fc5c563a14c0e9976c8.png

faeba2f979fc7bd22511d7f94b82150b.png
《机器学习》

10a69e5977769084a50a2be28b4a700c.png
《统计学习方法》

通过这个软间隔的kkt条件很容易就能理解了。所以凡是

大于0的样本都是支持向量,支持向量可以在间隔边界上也可以在边界margin和分离超平面之间(总算搞明白了)

df266c57939aefc023bd27cf78e0512c.png

因为二次规划求解开销大,所以引入了SMO的高效求解这类问题的算法:

邵正将:机器学习算法实践-SVM中的SMO算法​zhuanlan.zhihu.com
ad28fdbc3a185f6d49579c1e10632011.png
https://blog.youkuaiyun.com/chenhaouestc/article/details/77199196​blog.youkuaiyun.com

看smo的求解过程真的有一口老血喷出来的感觉。

1、启发式方法选择需要更新的参数

smo的大体思路先确定两个

为待求解的变量,其它
都当做常量,然后求导更新(思路和坐标轴法类似),简化版的smo略去了启发式选择两个参数的过程,直接使用随机选择的方法来进行参数更新,而启发式版的smo则使用了一些启发式的方法,详细资料来自:
支持向量机原理(四)SMO算法原理 - 刘建平Pinard - 博客园​www.cnblogs.com
e4f18f3c99693baa855b2b345a72b94d.png

前面我们根据kkt条件有:

f51a968be6849fc5c563a14c0e9976c8.png

可以得到:

0853579a8fe76963259a93b81233a9b5.png

(如果

=0则该样本不会对f(x)=wx+b产生任何影响,这类样本应该是远离margin的,如果
>0则必然有
,并且该样本是支持向量,如果
<C,则根据软间隔的推导:

b1126766b49b2311201ea37e6986c06b.png

6.39式,如果

<C则必然
>0然后结合:

5975e00f720ae017824c4fe555a02d11.png

可以得到

=0,说明当前样本的分类没有误差,从而说明这个样本恰好的分界的margin上;

如果

则必然有
,此时
则落在margin之间,如果
则该样本被错误分类,

df266c57939aefc023bd27cf78e0512c.png

这样再看这张图就很有感觉了!

所以根据smo的启发式法则——选择违背kkt条件最严重的:

第1个

的选择:

SMO算法称选择第一个变量为外层循环,按照顺序依次选择,优先选择不满足条件1的,如果没有则选择不满足条件2的,如果还没有就选择不满足条件3的。

1、

2、如果不存在这样的

则选不满足

2、最后选择

第2个

的选择:

SMO算法称选择第二个变量为内层循环,假设我们在上一步已经得到了

,现在我们要找到
,第二个
需要满足的标准是使得
最大,我们结合后面的推导公式:

2a53f133c7f1fb4a861218ca86ae3e76.png

也就是希望新的参数和旧的参数之间的变动的幅度尽量大,这就是所谓的启发式的思路,幅度变动越大则对目标函数产生的增大或者减少的效果越好。当

确定的时候,
也确定了,所有的E都是确定的(未知的参数都是一开始都是随机初始化的),那么当
为正时,选择最小的
作为
,那么当
为负时,选择最大的
作为
,可以将所有的E保存下来以加快迭代。

如果内存循环找到的点不能让目标函数有足够的下降, 可以采用遍历支持向量点来做

,直到目标函数有足够的下降, 如果所有的支持向量做
都不能让目标函数有足够的下降,可以跳出循环,重新选择

2、选择完

之后对其进行求解并参数更新

这里需要注意的是

是带着约束条件的,即:

35454497eb2892feb3c9e2c93d7eb17a.png

此时转换为分类讨论的二次规划问题:

https://zhuanlan.zhihu.com/p/29212107

根据上面链接的复杂的推导过程最终我们可以得到:

2a53f133c7f1fb4a861218ca86ae3e76.png

其中:

aad043f178f2ebaca9dd1a8ffaf959e5.png

1a462ae3929e2d97bf6e6f1cf261672a.png

这样就得到了

的迭代公式。

我们根据:

074c4a1eec45b1c976ded7e9da07e740.png

这里用到第一个约束条件

8e128e6ac4efd470aa9c4f19ff60c385.png

这个推导出来的,更新前的

和更新后的
都必须满足这个基本条件所以可以直接得到上面的等式。则

2e2567a13833d1757ca99cdafd390f40.png
这里本来是y1/y2不过考虑到y不是1就是-1所以y1y2表示没差别符号一样绝对值都是1

这里用到第二个约束条件

b9975b81403faa6bffe7dd2a04db5b44.png

方法就是先找原链接那样转化为二次规划问题求解:

871d0643643d9e38ed991276c9cd65d1.png

注意,横轴是

,纵轴是
,并且我们要根据这些约束条件得到
的上下限,这个问题和初中的线性规划问题类似。。。还是比较容易得到结论的:

067532c662b7adcd13bc6fe20c0ee997.png

这样我们就完成了

的参数更新过程了。

3、更新阈值b和差值E

考虑到我们的f(x)=wx+b仅仅与支持向量有关并且结合:

df266c57939aefc023bd27cf78e0512c.png

所以

所以可以得到:

c3a74cf3609c00acca176d772aefbc55.png

可以看到,b的更新完全和支持向量有关(好像是废话)。

然后也要更新预测误差E

6d045d951e127c2b433bec30d6ae9878.png

S表示所有支持向量的集合。

4、总结SMO:

6c64156814d38daaf3f857aff7b06f52.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值