机器学习变量筛选系列教程三:SVM算法
引言
支持向量机(support vector machines, SVM)是一种常用的分类算法,核心采用的是线性分类器,是一种二分类模型。
方法简介
SVM的基本模型是定义在特征空间上的间隔最大的线性分类器,模型训练即求解能够正确划分训练数据集并且几何间隔最大的分离超平面。通俗理解,就是在二维上找一分割线把两类分开,无法确定分类线(线性超平面)时,将数据投影到一个高维空间,在高维空间中这些数据可能会线性可分。
1.安装与调用
install.packages('e1071')
library(e1071)
2.准备输入文件
数据集
MASS包的cats数据集。目标是使用体重和心脏重量来预测猫的性别。
加载数据
install.packages("MASS")
library(MASS)
data(cats)
3. 实现算法
数据预处理
inputData<-data.frame(cats[,c("Bwt","Hwt")], response = as.factor(cats[,"Sex"]))
运行函数
svmfit <- svm(response ~ ., data = inputData, kernel = "linear", cost = 10, scale = FALSE)svmfit
compareTable<table(inputData$response,predict(svmfit))compareTable
画图
plot(svmfit, inputData, col = c("green","blue"))
总结
本文使用cats数据集和e1071包的svm()函数演示了线性支持向量机的实现过程。Libsvm是一种常用的SVM工具,R包e1071提供了libsvm的实现。另外,SVM工具还有SVMLite等,R包klap提供对SVMLite的实现。
科研风暴团队提供正规、可复现的生信分析
接受预定,名额有限
科研风暴 | 原创出品,任何形式转载,均需获授权
若您是读者,欢迎分享,无需授权