黑箱方法 支持向量机①

简介: 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))
目录
相关文章
|
8月前
|
机器学习/深度学习 运维 算法
大模型开发:解释监督学习和非监督学习之间的区别。
监督学习与非监督学习是机器学习的两大分支。监督学习使用带标签的训练数据来学习预测模型,如线性回归、SVM,常用于分类和回归问题。非监督学习则从无标签数据中挖掘模式和结构,如聚类、PCA,适用于市场细分和异常检测。关键在于根据任务和数据选择合适的方法。
308 1
|
5月前
|
存储 机器学习/深度学习 缓存
【数据挖掘】XGBoost面试题:与GBDT的区别?为什么使用泰勒二阶展开?为什么可以并行训练?为什么快?防止过拟合的方法?如何处理缺失值?
XGBoost与GBDT的区别、XGBoost使用泰勒二阶展开的原因、并行训练的原理、速度优势、防止过拟合的策略以及处理缺失值的方法,突出了XGBoost在提升模型性能和训练效率方面的一系列优化。
200 1
|
8月前
|
机器学习/深度学习 算法 数据挖掘
一文介绍回归和分类的本质区别 !!
一文介绍回归和分类的本质区别 !!
324 0
|
8月前
|
机器学习/深度学习 数据采集 算法
支持向量机(SVM)在分类问题中的表现与优化方法
支持向量机(SVM)在分类问题中的表现与优化方法
385 1
|
机器学习/深度学习 人工智能 分布式计算
因果推断:效应估计的常用方法及工具变量讨论
日常工作中很多的策略/产品的效果是无法设计完美的随机实验的,要求我们从观察性数据中去(拟合随机试验)发现因果关系、测算因果效应。
1922 0
|
机器学习/深度学习 数据可视化 算法
SHAP值:用博弈论的概念解释一个模型
SHAP值:用博弈论的概念解释一个模型
710 0
SHAP值:用博弈论的概念解释一个模型
|
机器学习/深度学习 算法
①机器学习分类算法之支持向量机
机器学习分类算法之支持向量机
96 0
①机器学习分类算法之支持向量机
|
机器学习/深度学习 算法
②机器学习分类算法之支持向量机
机器学习分类算法之支持向量机
77 0
②机器学习分类算法之支持向量机
|
机器学习/深度学习 存储 算法
①机器学习分类算法之LightGBM(梯度提升框架)
机器学习分类算法之LightGBM(梯度提升框架)
595 0
①机器学习分类算法之LightGBM(梯度提升框架)
|
机器学习/深度学习 算法
②机器学习分类算法之LightGBM(梯度提升框架)
机器学习分类算法之LightGBM(梯度提升框架)
431 0
②机器学习分类算法之LightGBM(梯度提升框架)