黑箱方法 支持向量机①

简介: 1. 介绍支持向量机(Support Vector Machine,SVM)是Corinna Cortes和Vapnik等于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。

1. 介绍

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

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

2.原理

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

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

img_5e9a4c5eb1ba206926cdd0f26704994a.jpe
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))
目录
相关文章
|
1月前
|
机器学习/深度学习 运维 算法
大模型开发:解释监督学习和非监督学习之间的区别。
监督学习与非监督学习是机器学习的两大分支。监督学习使用带标签的训练数据来学习预测模型,如线性回归、SVM,常用于分类和回归问题。非监督学习则从无标签数据中挖掘模式和结构,如聚类、PCA,适用于市场细分和异常检测。关键在于根据任务和数据选择合适的方法。
25 1
|
30天前
|
机器学习/深度学习 人工智能 自然语言处理
大模型开发:解释强化学习以及它与监督学习的不同之处。
强化学习(RL)是机器学习的一种,通过智能体与环境交互学习最优策略,以获取最大回报,常用于动态环境如游戏和机器人。与之不同,监督学习(SL)使用有标签的训练数据来预测新数据,适用于如图像分类等稳定问题。两者关键区别在于学习方式和应用场景:RL侧重环境交互和策略优化,适合未知动态环境;SL依赖已知标签数据,适合标签明确的任务。在大模型开发中,两者各有优势,并不断融合创新,推动人工智能发展。
|
8月前
|
机器学习/深度学习 算法 决策智能
最大熵图像复原方法原理(附完整代码)
最大熵图像复原方法原理(附完整代码)
109 0
|
6月前
|
机器学习/深度学习 人工智能 算法
AdaBoost算法解密:从基础到应用的全面解析
AdaBoost算法解密:从基础到应用的全面解析
31 0
|
11月前
|
算法
连载|如何通俗理解AdaBoost
连载|如何通俗理解AdaBoost
|
机器学习/深度学习 算法
LSTM最通俗的解释
LSTM最通俗的解释
|
机器学习/深度学习 算法 前端开发
通俗解释随机森林算法
通俗解释随机森林算法
319 0
通俗解释随机森林算法
|
机器学习/深度学习 算法
通俗解释优化的线性感知机算法:Pocket PLA
通俗解释优化的线性感知机算法:Pocket PLA
274 0
通俗解释优化的线性感知机算法:Pocket PLA
|
机器学习/深度学习 Python 算法
从原理到代码,轻松深入逻辑回归模型!
学习逻辑回归模型,今天的内容轻松带你从0到100!阿里巴巴达摩院算法专家、阿里巴巴技术发展专家、阿里巴巴数据架构师联合撰写,从技术原理、算法和工程实践3个维度系统展开,既适合零基础读者快速入门,又适合有基础读者理解其核心技术;写作方式上避开了艰涩的数学公式及其推导,深入浅出。
1493 0
|
机器学习/深度学习 计算机视觉 缓存
黑箱方法 支持向量机②
支持向量机 1. R中svm介绍 R的函数包e1071提供了libsvm的接口。使用e1071包中svm函数可以得到与libsvm相同的结果。write.svm()更是可以把R训练得到的结果写为标准的Libsvm格式,以供其他环境下libsvm的使用。
1086 0

相关实验场景

更多