RForML之核心包:kernlab

2016-12-30 10:14

本文介绍基于 核技巧 的机器学习方法,对应于RForML之核心包: kernlab

RForML之核心包:kernlab0

一、kernlab简介

kernlab包是R中实现基于核技巧机器学习的扩展包(需要额外安装和加载,才能使用里面强大的算法群)。

核技巧家族 RForML之核心包:kernlab1

kernlab的算法群可以解决机器学习中分类、回归、奇异值检测、分位数回归、降维等诸多任务(这个包真够强大啊)。 kernlab还包括支持向量机(SVM)、谱聚类、核主成分分析(KPCA)和高斯过程等算法。

RForML之核心包:kernlab2

二、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))

RForML之核心包:kernlab3

第三步:数据集划分

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)

RForML之核心包:kernlab4

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)

RForML之核心包:kernlab5

参考资料:

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

您在阅读中,有什么建议或者想法,请留言。

如果您觉得本文有收获,请小额赞赏,让我有动力继续写出高质量的文章。

RForML之核心包:kernlab6

数据人网是数据人学习、交流和分享的平台http://shujuren.org 。专注于从数据中学习。 平台的理念:人人投稿,知识共享;人人分析,洞见驱动;智慧聚合,普惠人人。 您在数据人网平台,可以1)学习数据知识;2)创建数据博客;3)认识数据朋友;4)寻找数据工作;5)找到其它与数据相关的干货。 我们努力坚持做原创,分享和传播有价值的数据知识! 我们都是数据人,数据是有价值的,坚定不移地利用数据价值创造价值!