打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
支持向量机及其R实现
userphoto

2015.09.23

关注

    本文分为三个部分:第一部分为原理及概念说明;第二部分为方法评价及应用;第三部分为R实现及参数说明


一、原理及概念说明

    支持向量机(SVM)是一种线性和非线性数据的分类方法,它使用非线性映射将原始数据映射到高维空间,在该空间内搜索最佳分离超平面。在线性可分的情况下,存在这样的超平面把空间中的类分开,并且该超平面与类的距离最大即最大边缘超平面,它等价于求解约束的凸二次最优化问题(在此不详述,请参考Reference),此时是在原输入空间(n)内寻找最大边缘超平面;在线性不可分的情况下,可以允许个别样本分类错误,但需要借助非线性映射把原输入数据变换到高维空间,在该空间搜索最大边缘超平面(此时是线性的,可用二次最优化求解),将该超平面对应到原输入空间的非线性超平面。然而这个过程中的点积计算量极大,幸而二次最优化求解中含有训练元组的点积等价于核函数应用于原输入数据,这些核函数在原输入空间上产生非线性分类器,利用核函数不仅可以省略变换后数据元组上的点积计算,也避免了这种映射,此时仍在原输入空间计算,因此与非线性映射后的维度相比降低了不少。

    软边缘(Soft Margin):即线性不可分情况下,允许个别样本跑到其它类别之中。但要使用参数来权衡两端,一个是要保持最大边缘的分离,另一个要使这种破例不能太离谱。这种参数就是对错误分类的惩罚程度C

    分离超平面(separating hyperplane):即将类进行分离的超平面,这样的超平面很多,而从超平面到其边缘的两侧距离最短且相等的超平面即为最大边缘超平面(Maximal Margin Hyperplane,MMH),它具有更高的泛化准确率,此时MMH到类的最近的训练元组即为支持向量(support vector)

    支持向量是最难分类(临界)的训练元组,给出了最多的分类信息,它定义了边缘及最大边缘超平面。因此,学习后的分类器的复杂度由支持向量数而不是数据维度刻画,SVM也不太容易过分拟合。过拟合的原因与不稳定性密切相关,改动一个或两个训练元组会引起大范围的决策边界的变化,但决策最大边缘超平面则相对比较稳定,只有当被增加或去除的训练元组是支持向量时,边缘才会变动。过度拟合的起因是边缘过分拟合。而支持向量通常只是训练元组中的极小部分,几乎不会发生过分拟合。

    即使数据维度很高,具有少量支持向量的SVM可以具有很好的泛化性能。利用支持向量数可计算SVM分类器的期望误差率的上界,同样独立于数据维度。

    支持向量机回归(SVR):是由SVM发展出来的回归方法,同样也有线性可分与不可分情况。与SVM的区别在于,目标是使预测误差最小化同时函数平面度最大化。这种权衡是通过设置参数C来控制。参数ε是在回归函数周围定义的一个管道,管道内的误差将被忽略。如果所有的训练元组都在宽度为2ε的管道内,算法输出一个位于最平的管道中央的函数,这个管道包含所有训练元组,这种情况下总误差为0。因此,ε控制了函数与训练元组的拟合程度。支持向量即在管道外或管道边缘的训练元组。


二、方法评价及应用

    SVM训练速度较慢;SVM能够对复杂的非线性边界建模,不容易过分拟合;SVM总能发现全局最优解

    在实践中,不可能事先判定一个数据集是否线性可分,因此可以先假设数据可分并验证,如果不成立再假设数据不可分。

    如前所述,支持向量机可用于回归、分类和异常检验,前者即为支持向量机回归,后者为支持向量机分类。支持向量机应用在许多领域,包括手写数字识别、对象识别、演说人识别,以及基准时间序列预测检验。

    SVM的研究目标主要是提高训练和检验速度,使得SVM可以成为超大型数据集更可行的选择。其他问题包括,为给定的数据集确定最佳核函数,为多类问题找出更有效的方法。

本帖隐藏的内容

三、R实现及参数说明
kernlab包:
    函数ksvm()通过。Call接口,使用bsvm和libsvm库中的优化方法。对于分类,有C-SVM分类算法和v-SVM分类算法,同时还包括C分类器的有界约束的版本;对于回归,提供了ε-SVM回归算法和v-SVM回归算法;对于多类分类,有一对一(one-against-one)方法和原生多类分类方法。
e1071包:
    使用libsvm库中的优化方法。多分类通过一对一的投票机制(one-against-one voting scheme)实现。e1071包的tune()函数在指定的范围内选取合适的参数。
klaR包:
    klaR对库SVMlight进行了简单的包装,提供了函数svmlight()以分类,可视化。Svmlight()支持C-SVM进行分类,ε-SVM进行回归;以一对所有(one-against-all)进行多类分类。SVMlight支持高斯核,多项式,线性和sigmoid核。Svmlight()的参数形式为字符串形式。
svmpath包:
    svmpath包里的函数可用来选取支持向量机的cost参数C
rminer包
。。。


    核函数:
Linear:使用它的话就成为线性向量机,效果基本等价于Logistic回归。但它可以处理变量极多的情况,例如文本挖掘。
Polynomial:n次多项式核函数,适用于图像处理问题。选择n的好方法是从1(一个线性模型)开始,然后递增至估计误差不再改进为止。通常,相当小的数目就足够了。

Radial basis,高斯核函数,最流行易用的选择。参数包括了sigma,其值若设置过小,会有过度拟合出现
Sigmoid:反曲核函数,多用于神经网络的激活函数。
实践中,核函数的选择一般并不导致结果准确率的很大差别(也有特例!)。

    软边缘参数C:
cost



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ML之SVM:SVM算法的简介、应用、经典案例之详细攻略
理解支持向量机(SVM)
面试 | SVM 高频面试题
基于RBF核函数的支持向量机参数选择
【典型算法】SVM算法
吴恩达《Machine Learning》精炼笔记 7:支持向量机 SVM
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服