RForML之核心包:kernlab
本文介绍基于核技巧的机器学习方法,对应于RForML之核心包:kernlab
一、kernlab简介
kernlab包是R中实现基于核技巧机器学习的扩展包(需要额外安装和加载,才能使用里面强大的算法群)。
核技巧家族
kernlab的算法群可以解决机器学习中分类、回归、奇异值检测、分位数回归、降维等诸多任务(这个包真够强大啊)。
kernlab还包括支持向量机(SVM)、谱聚类、核主成分分析(KPCA)和高斯过程等算法。
二、kernlab安装和加载
代码如下:
##kernlab 安装和加载
if(!suppressWarnings(require('kernlab')))
{
install.packages('kernlab')
require('kernlab')
}
三、kernlab应用
通过kernlab的介绍可知,kernlab包中算法可以完成机器学习很多任务。
分类问题
第一步:生成数据集(人造)
n <- 1000 # 样本数
p <- 2 # 变量数
sigma <- 1 # 分布的标准差
meanpos <- 0 # 正样本分布的均值
meanneg <- 3 # 负样本分布的均值
npos <- round(n/2) # 正样本数目
nneg <- n-npos # 负样本数目
# 生成正样本
##设置种子,为了试验可重复性
set.seed(1234)
xpos <- matrix(rnorm(npos*p,mean=meanpos,sd=sigma),npos,p)
##生成负样本
set.seed(1234)
xneg <- matrix(rnorm(nneg*p,mean=meanneg,sd=sigma),npos,p)
##正样本和负样本合并
x <- rbind(xpos,xneg)
# 生成标签
y <- matrix(c(rep(1,npos),rep(-1,nneg)))
第二步:数据集可视化
# Visualize the data
plot(x,col=ifelse(y>0,1,2))
第三步:数据集划分
ntrain <- round(n*0.8) # number of training examples
tindex <- sample(n,ntrain) # indices of training samples
xtrain <- x[tindex,]
xtest <- x[-tindex,]
ytrain <- y[tindex]
ytest <- y[-tindex]
训练样本占比80%
第四步:训练SVM模型
library(kernlab)
svp <- ksvm(xtrain,ytrain,type="C-svc",kernel='vanilladot',C=100,scaled=c())
第五步:模型结果可视化和应用
1 模型结果可视化
plot(svp,data=xtrain)
2 模型应用到测试集
ypred <- predict(svp,xtest) ##应用到测试集
table(ytest,ypred) ##利用table()生成混淆矩阵
sum(ypred==ytest)/length(ytest) ##模型预测的准确率
结果如下:
ypred
ytest -1 1
-1 99 2
1 3 96
准确率:0.975
第六步:绘制ROC曲线
if(!suppressWarnings(require('ROCR')))
{
install.packages('ROCR')
require('ROCR')
}
ypredscore <- predict(svp,xtest,type="decision")
pred <- prediction(ypredscore,ytest)
perf <- performance(pred, measure = "tpr", x.measure = "fpr")
plot(perf)
参考资料:
1 kernlab文档;https://cran.r-project.org/web/packages/kernlab/kernlab.pdf
2 kernlab作者分享文档:https://eeecon.uibk.ac.at/~zeileis/papers/Ensemble-2005.pdf
3 ROCR文档:https://cran.r-project.org/web/packages/ROCR/ROCR.pdf
4 ROC曲线含义:https://en.wikipedia.org/wiki/Receiver_operating_characteristic
【温馨提示】:因为微信公众号不支持外链,诚邀大家点击【阅读原文】,进入【数据人网】获取更多有价值的信息。大家可以在数据人网注册,然后写文章记录自己学习或者应用数据的历程。
您在阅读中,有什么建议或者想法,请留言。
如果您觉得本文有收获,请小额赞赏,让我有动力继续写出高质量的文章。
数据人网是数据人学习、交流和分享的平台http://shujuren.org 。专注于从数据中学习。
平台的理念:人人投稿,知识共享;人人分析,洞见驱动;智慧聚合,普惠人人。
您在数据人网平台,可以1)学习数据知识;2)创建数据博客;3)认识数据朋友;4)寻找数据工作;5)找到其它与数据相关的干货。
我们努力坚持做原创,分享和传播有价值的数据知识!
我们都是数据人,数据是有价值的,坚定不移地利用数据价值创造价值!
数据人网推荐福利,想学习英语口的伙伴们,可以关注这个公众号:
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!