【svm学习笔记】svm_理论学习图谱_下

接着上一篇说。


泛化理论帮我们解决了维数灾难的问题,同时又指导我们找到了目标函数,将模型学习问题转化成了有约束条件下的优化问题。那么我们又知道,svm实际上是在高维空间学习一个超平面,那这个目标函数到底找到的是哪个超平面啊?这有引入了一些神马函数间隔、几何距离等东东。然后发现,找的是距离两类样本有“最大间隔”的超平面。这就是目标函数的几何意义。


那么我们有了最优化问题,那怎么解决这个问题呢?这就要请最优化理论来帮忙了。从前我们遇到的都是无条件优化问题,有等式条件优化问题。前者求导,解方程;后者拉格朗日方法,转化为前者。而现在遇到的问题有点特殊,是不等式优化问题。咋整?通常意义上来讲,没法整。不过svm又幸运地走了特殊性。首先,我们将问题转化成对偶问题,也就是另一个不同的问题,但与现在的问题有相同的解(或者说两个问题的解可以相互转换)。这是一个凸二次规划问题,只要满足KKT条件(和VC维一样,三个人名字的首字母组合在一起),不等式约束的优化问题就能转化为等式约束的优化问题,这个问题就有解析解。各位看官,这个可是解析解啊,就是那种套用个神马公式就能算出来结果的解啊,不是数值算法求得的近似解。多么令人心奋的事情。


不过别高兴的太早,这个东西不实用。为啥?它要求样本数目平方的空间复杂度。当样本数量是1k的时候,就需要10^6的空间——不是说这么多的int类型啊——而是说要存储这么多样本的所有信息。通常样本是用向量表示的,对于文本分类来讲,向量通常有个几万维都是正常的。呵呵,吓人吧。所以说,上面那些讲的,那些我们冥思苦想的公式、理论,跟svm的具体训练、代码实现嘛关系没有——这是最让我抓狂的。你妹啊,老子花了那么多时间看你每个公式的每个符号,看到这里却发现对写代码一点帮助都没有。这就像《葵花宝典》里面说:欲练神功,必先自动;即便自宫,未必成功。艹。


那么,解析解不行,只能数值解了。其实在神经网络的训练中,反向传播算法也是数值解,利用梯度逐渐更新参数。这里的思路也是一样,可以用梯度迭代求解。不过现在最常用的是SMO算法,翻译过来是序贯最小化算法。思路是这样的:如果整个样本的集合太大,无法同时全部优化的话,那么就先优化一部分,然后再优化其它部分,然后再优化这部分.....如此反复,不也相当于优化了全部了么。虽然不是同时的吧,但好歹是全部的啊。空间复杂度降下来了,但对于某个参数,需要多次优化,时间复杂度上去了。这是用用时间换空间的想法。哦,光说思想了。序贯最小化算法做得更加极端,每次只优化两个参数。说是两个参数,其实自由度是一,因为当一个参数确定了,另一个也能确定下来。对于训练算法,我还想单独写一篇来讲,这里就不罗嗦了。


写到这里,svm已经能够被训练出来了,并用于分类了。这时候又遇到了问题。如果样本点中有噪声,使得数据不可分,怎么办?那好办,继续增加空间维度不就行了。不过在现实中,也有些顾虑。一方面噪声点肯定是不对的,我们不应该根据这些来做训练。而用饱含噪声点的训练集训练出来的模型异常复杂,虽然在那种条件下泛化性能最高,但是当遇到新的样本的时候,新样本往往不是噪声点,对其分类其实并不需要那么复杂的模型来处理。而且,降低维度,降低模型的复杂度,能进一步提高模型的泛化性能。也就是说,不应该要那么复杂的模型。不过,这个是机器无法判断的——他并不知道那些是噪声、那些不是噪声。这个其实是人的经验来确定的。题外话,虽然理论保证了模型的泛化性能,但是仍然需要人的先验知识才能取得好的效果。另一方面,样本的空间维度往往是样本的某个描述属性,如:大小、色彩、光泽等等。在现实中,这些属性往往是有限的,不是说增加就能够有的。而且,在特征选择中我们会看到,某些属性对正确分类其实起到了相反的作用。


怎么办?以上没有噪声点,能够被正确分类的,svm模型叫做硬间隔模型。对于上一段中提到的,包含噪声点,无法正确分类的,我们进一步扩展了理论,提出了软间隔优化svm。具体做法挺复杂,不过思路很简单:对于那些明显的“离群点”,在一定程度上视而不见就可以了。复杂在于,什么算作明显的离群点,在多大程度上视而不见。这就加入了松弛变量,带着这个东东,将从前的那些理论公式又都更新了一遍,还好,理论基本上没太大变化。而对应松弛变量,又引入了一个模型参数,叫做惩罚因子,用C表示,意味着在多大程度上忽略离群点。需要注意的是,C的选择必须在模型训练之前,而且没有什么指导原则,只能尝试。其实我们看到,svm初衷很好,理论也很优美,不过具体做起来,好多地方还需要人的先验知识和手动尝试。免费的午餐,svm不是,现在也没有。


再说一下核函数。上文中说了,核函数在svm模型中起到了关键的作用,因为它有很神奇的功能:对于低维空间中的量,不必显示的映射到高维空间,就能够计算出输入量在高维空间中的内积。这么神奇的东西,肯定难找,找到了,也肯定不多。要说的是,核函数之所以成为核函数,必须满足Mercer条件。而且现在已知的核函数不多:线性核、径向基等等。虽然创造新的核函数也是扩展svm模型的手段之一,不过,门槛有点高啊。


好了,就写这么多,以后想起什么,再补充。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值