b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

支持向量机通过寻找_r语言 支持向量机分类_支持向量机优缺点(2)

电脑杂谈  发布时间:2017-02-02 17:03:13  来源:网络整理

我们以鸢尾花数据来说说如何利用svm做分类,由于svm是一个2分类的办法,所以我们将鸢尾花数据也分为两类,“setosa”与“versicolor”(将后两类均看做一类),那么数据按照特征:花瓣长度与宽度做分类,有分类:

从上图可以看出我们通过最优化原始问题或者对偶问题就可以得到w,b,利用 sign(w.xb)就可以判断分类了。

我们这里取3, 10,56, 68,107, 120号数据作为测试集,其余的作为训练集,我们可以看到:

训练集 setosa virginica

setosa 48 0

virginica 0 96

测试集 setosa virginica

setosa 2 0

virginica 0 4

也就是完全完成了分类任务。

我们来看看鸢尾花后两类的分类versicolor和virginica的分类,我们将数据的散点图描绘如下:(我们把第一类“setosa“看做”versicolor“)

不难发现这时无论怎么画一条线都无法将数据分开了,那么这么办呢?我们一个自然的办法就是允许分类有一部分的错误,但是错误不能无限的大。我们使用一个松弛项来分类数据。最优化问题转变为:

当我们确定好松弛项C后,就可以得到分类:

我们还是先来看看分类的效果:(C=10)

训练集 versicolor virginica

versicolor 93 2

virginica 3 46

测试集 versicolor virginica

versicolor 4 2

virginica 0 0

虽然分类中有一些错误,但是大部分还是分开了的,也就是说还是不错的,至少完成了分类这个任务。r语言 支持向量机分类

我们再来看看一个更麻烦的例子:

假设数据是这样的:

这时再用直线作为划分依据就十分的蹩脚了,我们这时需要引入核的方法来解决这个问题。

在上图中,我们一就能看出用一个S型去做分类就可以把数据成功分类了(当然是在允许一点点错误的情况下),但是计算机能识别的只有分类器的分类结果是-1还是1,这时,我们需要将数据做出某种形式的转换,使得原来不可用直线剖分的变得可分,易分。也就是需要找到一个从一个特征空间到另一个特征空间的映射。我们常用的映射有:

线性核:u'*v

多项式核:(gamma*u'*v coef0)^degree

高斯核:exp(-gamma*|u-v|^2)

Sigmoid核:tanh(gamma*u'*v coef0)

我们这里使用各种常见的核来看看分类效果:

从图中我们可以看到正态核的效果是最好的,用数据说话,我们来看看分类错误率与折10交叉验证的结果(报告平均分类正确率):

我们可以看到,无论从存储数据量的多少(支持向量个数)还是分类精确度来看,高斯核都是最优的。所以一般情况,特别是在大样本情况下,优先使用高斯核,至少可以得到一个不太坏的结果(在完全线性可分下,线性函数的支持向量个数还是少一些的)。

有许多介绍SVM的书都有类的表述“由于理解支持向量机需要掌握一些理论知识,而这对读者来说有一定的难度,建议直接下载LIBSVM使用。”

确实,如果不是为了训练一下编程能力,我们没有必要自己用前面提到的做法自己实现一个效率不太高的SVM。R的函数包e1071提供了libSVM的接口,使用e1071的函数SVM()可以得到libSVM相同的结果,write.svm()更是可以把R训练得到的结果写为标准的libSVM式供其他环境下的libSVM使用。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30138-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 叶俊杰
      叶俊杰

      尽管此后3年一蹶不振

    • 高正臣
      高正臣

      我们是“让它三分”

    每日福利
    热点图片
    拼命载入中...