1、基本介绍

(1)概述:SVM是指支持向量机。其是一种分类方法。SVM在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。SVM包括SVC(支持向量机分类器)和SVR(支持向量机回归器)。该算法是建立在统计学习理论的VC维理论和结构风险最小化原理基础之上的,根据有限的样本信息在模型的复杂性(对特定样本的学习精度)和学习能力(无错误地识别任意样本的能力)之中寻求最佳折中(trade off),以获取更好的推广能力。

(2)优点

[1] 该算法是一种有坚实理论基础的小样本学习方法,基本不涉及概率测度和大数定律。因此有不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统统计过程,实现了从训练样本到测试样本的高效“转化推理”,大大简化了分类和回归等问题的解决;

[2] 该算法的最终决策函数只有少数的支持向量所决定,计算的复杂度取决于支持向量的个数,而不是样本空间的维数,这在某种意义上避免了“维数灾难”;

[3] 少数支持向量决定了最终结果,这不但可以帮助关键样本的抓取、剔除大量冗余的样本,而且注定了该方法的算法简单,并且具有较好的鲁棒性。

(3)缺点

[1] 对大规模的训练样本难以实施(因为求解过程中需要借助二次规划,当样本量很大时,计算将有非常大的开销);

[2] 用SVM算法解决多分类问题存在困难,分类精度比较低;

[3] 对缺失数据敏感。

2、算法流程

(1)问题说明

4f5db2b4e1738cce0879b9f7f2a88d8d.png

(2)算法步骤(文字描述版)

e3e86ba949fbc0e46755df2dcf641a26.png

(3)算法步骤(数学描述版)

935dba91a13d56d0111c7c9bbd2b1830.png

3、详细例子

(1)例子一(靠嘴模拟)

67d4b0d9e45ac0bf6da992e805f0b25f.png

(2)例子二(R语言实操)

[1] 代码

library(e1071)        # 加载e1071包,使用里面的svm函数进行分类决策

data(iris)            # 获取数据集

attach(iris)          # 绑定数据集

x<-subset(iris,select=-Species)     # 构建特征向量,subset函数是用于从某一个数据框中选择出符合某条件的数据或是相关的列

y<-Species                          # 构建类别向量

model<-svm(x,y)       # 构建svm模型

summary(model)        # 查看描述统计结果

pre<-predict(model,x)               # 对模型进行预测

table(pre,y)          # 查看预测的结果的混淆矩阵,分类结果不错

[2] 结果

88a0a2a3aaa9f2c401af140c104a7a15.png

e08f7eabc02038a3b0be5ec23dcd2f06.png
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐