R语言机器学习之核心包kernlab

  • A+
所属分类:R语言 机器学习

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

一、kernlab简介

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

核技巧家族
R语言机器学习之核心包kernlab

kernlab的算法群可以解决机器学习中分类、回归、奇异值检测、分位数回归、降维等诸多任务(这个包真够强大啊)。

kernlab还包括支持向量机(SVM)、谱聚类、核主成分分析(KPCA)和高斯过程等算法。

R语言机器学习之核心包kernlab

二、kernlab安装和加载

代码如下:

  1. ##kernlab 安装和加载
  2. if(!suppressWarnings(require('kernlab')))
  3. {
  4. install.packages('kernlab')
  5. require('kernlab')
  6. }

三、kernlab应用

通过kernlab的介绍可知,kernlab包中算法可以完成机器学习很多任务。

分类问题

第一步:生成数据集(人造)

  1. n <- 1000 # 样本数
  2. p <- 2 # 变量数
  3. sigma <- 1 # 分布的标准差
  4. meanpos <- 0 # 正样本分布的均值
  5. meanneg <- 3 # 负样本分布的均值
  6. npos <- round(n/2) # 正样本数目
  7. nneg <- n-npos # 负样本数目
  8. # 生成正样本
  9. ##设置种子,为了试验可重复性
  10. set.seed(1234)
  11. xpos <- matrix(rnorm(npos*p,mean=meanpos,sd=sigma),npos,p)
  12. ##生成负样本
  13. set.seed(1234)
  14. xneg <- matrix(rnorm(nneg*p,mean=meanneg,sd=sigma),npos,p)
  15. ##正样本和负样本合并
  16. x <- rbind(xpos,xneg)
  17. # 生成标签
  18. y <- matrix(c(rep(1,npos),rep(-1,nneg)))

第二步:数据集可视化

  1. # Visualize the data
  2. plot(x,col=ifelse(y>0,1,2))

R语言机器学习之核心包kernlab

第三步:数据集划分

  1. ntrain <- round(n*0.8) # number of training examples
  2. tindex <- sample(n,ntrain) # indices of training samples
  3. xtrain <- x[tindex,]
  4. xtest <- x[-tindex,]
  5. ytrain <- y[tindex]
  6. ytest <- y[-tindex]

训练样本占比80%

第四步:训练SVM模型

  1. library(kernlab)
  2. svp <- ksvm(xtrain,ytrain,type="C-svc",kernel='vanilladot',C=100,scaled=c())

第五步:模型结果可视化和应用

1、模型结果可视化

  1. plot(svp,data=xtrain)

R语言机器学习之核心包kernlab

2、模型应用到测试集

  1. ypred <- predict(svp,xtest) ##应用到测试集
  2. table(ytest,ypred) ##利用table()生成混淆矩阵
  3. sum(ypred==ytest)/length(ytest) ##模型预测的准确率

结果如下:

ypred

ytest -1 1

-1 99 2

1 3 96

准确率:0.975

第六步:绘制ROC曲线

  1. if(!suppressWarnings(require('ROCR')))
  2. {
  3. install.packages('ROCR')
  4. require('ROCR')
  5. }
  6. ypredscore <- predict(svp,xtest,type="decision")
  7. pred <- prediction(ypredscore,ytest)
  8. perf <- performance(pred, measure = "tpr", x.measure = "fpr")
  9. plot(perf)

R语言机器学习之核心包kernlab

参考资料:

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

 

作者:JackWang

个人介绍:专注于从数据中学习,努力发掘数据之洞见,积极利用数据之价值。

精选各名校数学专业考研初试试卷
小额消费信贷用户数据
MySQL必知必会
数学建模教材(包括十大算法、matlab、lingo、spss、exce以及多种实例模型)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: