我的数学之美(三) —— 使用支持向量机进行预测

现实生活中充满着预测问题,即对未知世界的大胆猜测。我们基于什么根据来推测呢?最多的当然是已有的经验,即之前所做的一些已知结果的推测,这就是所谓的“有监督的学习”。

这里,我举一个最简单的例子,就是公务员考试中那种最常见的数字推理题:1,4,9,16,?

当然,你一眼就看出了这是一个平方序列,下一个数字一定是25,但是,这是唯一的答案吗?

应该说,平方序列只是一个模型,比方说,我们可以假定这样一个多项式模型,
[quote]a * x * x * x + b * x * x + c * x + d[/quote]
其中a、b、c、d为未知数,而x分别为1、2、3、4,采用初中数学所学的待定系数法,就可以算得abcd的值,从而得到符合上述规律一个模型。对于上面我给出的多项式模型,由于我们有四个未知数和四个方程,因此解是唯一的。但是如果我们变换模型的样式(比如说采用更高阶或低阶或是指数或是对数的模型),总的来说,其解是无限的。

如果上述例子还不够有说服力的话,请看下面的例子:

[img]http://dl.iteye.com/upload/attachment/457103/8d2df7f9-3227-35f6-9029-a649ca8e5e8c.png[/img]

这是一个回归的例子,即根据已有的数据点得出合理的模型,并预测新数据点的问题。由上图看出,我们可以使用sin函数完美拟合所有的已知点,但是,得出的模型却和真实函数大相径庭,预测出来的结果也肯定是有问题的。

那么,既然存在着多种可能的解释,我们如何来确保,所选用的模型一定是正确的呢?很遗憾,不存在一定的答案,除非模型是已知的,但如果是这样的话,有何必需要预测呢?

两个可能的努力方向,一是提高样本数量,这是显而易见的,可供训练的数量越多,模型一定是越可靠。另一点是降低模型的复杂度(VC维),这一点或许比较难以理解,但是我们可以这样去思考,越是复杂的模型或者分类器,输入的变化引起输出的波动也就越大。

下面再来细谈一下VC维。考虑平面内的N个点,需要进行简单的“是或否”的分类,总共会有2的N次方种划分方式。对于任何一种分类模型来说,其N的最大值就是该模型的VC维。例如对于直线来说,其VC维等于3,可以如下证明:假设平面内有四个点,而直线无法将处于对角的点两两分开。

接下来谈谈SVM,通常来说,它采用直线模型将数据分类,并且只有处于分界线附近的支撑向量才会对最后的分类结果又贡献,因此特别适合于处理高维向量分类问题(比如说文本分类等等)。

[img]http://dl.iteye.com/upload/attachment/457153/dd5dfd14-f70f-3cc9-814c-de0b3647fd99.png[/img]

但是,现实生活中,许多复杂的问题并不是线性可分的。为了解决这类问题,SVM引入了核函数(kernal)的理念,将输入集映射到更高维度的另一个空间。在原始空间不可分的问题,总会存在另一个空间其实线性可分的,如图所示:

[img]http://dl.iteye.com/upload/attachment/457157/07305a35-2e29-3a30-b031-a85bd6ff2d35.png[/img]

此外,在SVM的学习过程中,会遇到惩罚因子这个参数,通常是用来处理噪声问题的。现实的数据当中,往往会存在少量的噪声问题,我们与其寻找一个相当复杂的kernal,不如在训练过程中允许一定的误差,这样往往会简化问题的处理。

最后,这里给出一个使用OPENCV-SVM实现平面点预测的例子:

[img]http://dl.iteye.com/upload/attachment/457165/2761cea4-7bcc-35a2-827b-cc60dc66107a.jpg[/img]

其中白色圈圈是支撑向量,十字点为训练数据,着色区域为训练器计算出来的区域。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值