黑箱方法 支持向量机①

1. 介绍

支持向量机(Support Vector Machine,SVM)是Corinna Cortes和Vapnik等于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。 SVM几乎可以适用于所有的学习任务,包括分类和数值预测两个方面。著名的应用包括:

  • 在生物信息学领域中,识别癌症或者其他遗传病的微阵列基因表达数据的分类
  • 罕见却重要的事件检测,如内燃机故障,安全漏洞等。
  • 当支持向量机用于二分类时,它最容易理解

2.原理

SVM可以想象成一个平面,该平面定义了各个数据点之间的界限,而这些数据点代表是根据它们的特征值在多维空间绘制。支持向量机的目标是创建一个平面边界,称为一个超平面,使得任何一边的数据划分都是均匀的。通过这种方式,svm结合了近邻学习和线性回归,因此允许支持向量机对复杂的关系进行建模。

支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。建立方向合适的分隔超平面使两个与之平行的超平面间的距离最大化。其假定为,平行超平面间的距离或差距越大,分类器的总误差越小

image

3.kernlab

建立模型: m <- ksvm(target ~ predictors , data = data, kenal = "rbfdot" , c = 1)

  • kernal:给出一个非线性映射,例如"rbfdot"(径向基函数),"polydot"(多项式函数),"tandot"(双曲正切函数),"vanilladot"(线性函数)
  • c:对于软边界的惩罚大小,较大的c值会导致边界较窄。

p <- predict(m, test, type = "response")

  • 函数ksvm所训练的模型
  • test:包含测试数据的数据框
  • type:用于指定预测的类型为“respon”(预测类别), 或者“probabiilities”(预测概率, 每一列对应一个类水平值)
  • 例子:classifier <- ksvm(letter ~., data = letter_trian, kernal = "vanilladot")
  • prediction <- predict(classifier, latter_test)
  • 划分训练集和测试集
setwd("E:\\Rwork")
rm=list()
#install.packages("kernlab")
library(kernlab)  
iris=iris
##########拆分数据集
iris=iris
N = sample(2,nrow(iris),replace = T,prob = c(0.7,0.3))
train = iris[N==1,]
test = iris[N==2,]
dim(train)
dim(test)
  • 建立模型
#=================================
set.seed(12345) # for reproducing results
ksvmfit <- ksvm(Species ~ ., data = train, type = "C-bsvc",
                kernel = "rbfdot", kpar = list(sigma = 0.01), C = 10, prob.model = TRUE)
ksvmfit

> ksvmfit
Support Vector Machine object of class "ksvm" 

SV type: C-bsvc  (classification) 
 parameter : cost C = 10 

Gaussian Radial Basis kernel function. 
 Hyperparameter : sigma =  0.01 

Number of Support Vectors : 40 

Objective Function Value : -36.6708 -15.7083 -208.9155 
Training error : 0.039216 
Probability model included. 
  • 预测
predict=predict(ksvmfit, test, type = "probabilities")
 
predict=predict(ksvmfit, test, type = "response")

> real=test$Species
> table(predict,real)
            real
predict      setosa versicolor virginica
  setosa         19          0         0
  versicolor      0         12         0
  virginica       0          2        15
> #==========================================
> test=cbind(test,as.data.frame(predict))

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

你是合格的机器学习数据科学家吗?来挑战这40题吧!(附解答)

选自 Analytics Vidhya 作者:ANKIT GUPTA 机器之心编译 参与:机器之心编辑部 目前机器学习是最抢手的技能之一。如果你是一名数据科学...

3899
来自专栏华章科技

你是合格的机器学习数据科学家吗?来挑战这40题吧!(附解答)

目前机器学习是最抢手的技能之一。如果你是一名数据科学家,那就需要对机器学习很擅长,而不只是三脚猫的功夫。作为 DataFest 2017 的一部分,Analyt...

992
来自专栏专知

一个实例读懂监督学习:Python监督学习实战

【导读】1月28日,Vihar Kurama和Sai Tejaswie撰写了一篇机器学习技术博文,为读者介绍了如何用python进行监督学习。作者首先解释什么是...

8797
来自专栏PPV课数据科学社区

谷歌最新机器学习术语表,A/B 测试 、混淆矩阵、决策边界……都在这里了!

日前,谷歌发布机器学习术语表,以下术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义。 A A/B 测试 (A/B testing) 一种...

3266
来自专栏AI研习社

一文详解神经网络 BP 算法原理及 Python 实现

最近这段时间系统性的学习了 BP 算法后写下了这篇学习笔记,因为能力有限,若有明显错误,还请指正。 什么是梯度下降和链式求导法则 假设我们有一个函数 J(w...

5855
来自专栏机器学习算法与Python学习

推荐 | 图解机器学习

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 源 | ynaughty 每当提...

4125
来自专栏算法channel

从 n-gram 到 RNN 做的那些优化改进

3564
来自专栏灯塔大数据

原创译文|从神经网络说起:深度学习初学者不可不知的25个术语和概念(下)

人工智能,深度学习和机器学习,不论你现在是否能够理解这些概念,你都应该学习。否则三年内,你就会像灭绝的恐龙一样被社会淘汰。 ——马克·库班(NBA小牛队老板,...

4617
来自专栏数据派THU

一文读懂卷积神经网络CNN(学习笔记)

来源:机器学习算法与自然语言处理 作者:白雪峰 本文为图文结合,建议阅读10分钟。 本文为大家解读如何简单明了的解释卷积,并且分享了学习中的一些方法案例。 首...

3236
来自专栏企鹅号快讯

一文读懂卷积神经网络CNN

来源:机器学习算法与自然语言处理 作者:白雪峰 本文为图文结合,建议阅读10分钟。 本文为大家解读如何简单明了的解释卷积,并且分享了学习中的一些方法案例。 首先...

3516

扫码关注云+社区

领取腾讯云代金券