R中模型性能的提升
来源:互联网 发布:淘宝服装店招牌 素材 编辑:程序博客网 时间:2024/05/11 04:40
最近正在学习这一部分,备忘录。
1、参数调整
对算法合适的选项进行调整的过程——参数调整
caret包中提供了多种工具进行自动参数调整,train()函数作为接口,可以选择评估方法和度量性指标,自动寻优过程。
主要考虑的问题:
(1)训练哪种模型,(2)模型中哪些参数可调,可调节空间多大,(3)选择评价标准
以C5.0示例:
library(caret)control <- trainControl(method = "cv",number =5, selectionFunction = "oneSE")set.seed(7)fit <-train(label~.,data = traindata1[-1],method ="C5.0", metric = "Accuracy",trControl = control)print(fit)
定制调整的过程,trainControl()函数实现配置选项,主要参数为method,selectionFunction。?trainControl可以得到所有的参数列表。method主要用来设置重抽样的方法,例如保持抽样或k折验证。selectionFunction可设定一个函数在各个候选者中选择最优的模型。
可创建可调参数的数据框,每一行代表可调参数的组合
grid <- expand.grid(.model = “tree”,
.trials = c(1,5,10,15,20,25,30,35),
.winnow = “FALSE”
)
set.seed(300)
m <- train(label~.,data = traindata1[-1],method = “C5.0”,
metric = “Kappa”,
trControl = ctrl,
tuneGrid = grid)
2、使用元学习提高模型性能
bagging: 自主抽样产生数据集,这些数据集使用单一机器学习算法产生多个模型,最后采用投票或平均的方法来组合预测值
boosting:在不同的重抽样数据中训练模型的集成学习。区别:重抽样数据集是专门构建的,根据上一次分类器,自动调整本次分类器构造时,各样本被抽中的概率。对经常分错的样本给与较大的权重,预测正确的样本在下一个分类器中的可能性较小。通过投票决定最后的预测值,每个分类器的票数会按照建模数据集上的准确度进行加权。
以下主要介绍bagging:
ipred包提供了bagging决策树的实现。如下:
library(ipred)
m.bag <- bagging(label~.,data = traindata1[,-1], nbagg = 25)
p.bag <- predict(m.bag,testdata1[,-c(1,16)],type = “class”)
其中nbagg参数控制用来投票的决策树的数目。
caret包中train函数采用10折交叉验证方法建立bagging树,函数为treebag
library(caret)
control <- trainControl(method = “cv”,number =10)
set.seed(7)
fit <-train(label~.,data = traindata1[-1],method =”treebag”,
metric = “Accuracy”,trControl = control)
caret包中含添加更加通用的bag()函数,支持向量机svmBag,朴素贝叶斯nbBag,决策树ctreeBag,神经网络nnetBag。以下选取支持向量机为例svmBag,创建一个bagging控制对象:
ctrl <- trainControl(method = “cv”,number = 10)
bagctrl <- bagControl(fit = svmBagfit,predict=svmBag pred,
aggregate = svmBagaggregate)set.seed(300)svmbag<−train(label .,data=traindata1[,−1],”bag”,trControl=ctrl,bagControl=bagctrl)可以通过学习函数,使用同样的方式创建自己的bagging,实现任意的机器学习算法svmBag fit
function (x, y, …)
{
loadNamespace(“kernlab”)
out <- kernlab::ksvm(as.matrix(x), y, prob.model = is.factor(y),
…)
out
}
以及svmBagpred,svmBag aggregate的函数实现方式,可定制bagging
- R中模型性能的提升
- 【R的机器学习】模型性能提升探索:随机森林
- 【R的机器学习】模型性能提升探索:朴素贝叶斯
- 【R的机器学习】模型性能提升探索:神经网络
- 【R的机器学习】模型性能提升探索:R的其他神经网络包-neuralnet
- 【R的机器学习】模型性能提升探索:支持向量机
- 【R的机器学习】决策树性能提升
- R语言评测回归模型的性能
- 提升R语言程序性能
- Atitit 性能指标与性能提升的5个原则与性能提升模型
- 8中提升模型精度的方法
- Java编程中提升性能的方法
- Java 8 中 HashMap 的性能提升
- Java 8 中 HashMap 的性能提升
- OpenBlas-base引擎提升“R”计算性能
- 提升R代码运算效率的11中方法
- 提升XP的性能
- 提升JSP的性能
- js对分页的控制
- 为何从ThreadLocal中获得的对象是线程安全的? Java7 Java8
- Vim全屏配置
- HIVE自定义函数之UDF,UDAF和UDTF
- Android 开发小工具之:Custom Tabs
- R中模型性能的提升
- 如何在Linux中查看所有正在运行的进程
- 设计2个线程1个线程每次对i加1,另一个线程每次对i减去1
- DHCP保留地址批量导入导出
- iOSiOS app 退出问题
- equals和==的区别,以及如何将自定义类作为HashMap的Key
- 10条建议分享:帮助你成为与硅谷工程师一样优秀的程序员
- Pixhawk_Ardupilot_Makefile文件调用关系
- 判断sqlserver对象是否存在(转)