R语言与机器学习

上传人:M****1 文档编号:557449417 上传时间:2023-08-26 格式:DOCX 页数:7 大小:49.06KB
返回 下载 相关 举报
R语言与机器学习_第1页
第1页 / 共7页
R语言与机器学习_第2页
第2页 / 共7页
R语言与机器学习_第3页
第3页 / 共7页
R语言与机器学习_第4页
第4页 / 共7页
R语言与机器学习_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《R语言与机器学习》由会员分享,可在线阅读,更多相关《R语言与机器学习(7页珍藏版)》请在金锄头文库上搜索。

1、R 语言与机器学习 - 回归方法学习(二)三、boos ting回归Boosting 方法是一种用来提高弱分类算法准确度的方法,这种方法通过构造 一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。他是一种框 架算法,主要是通过对样本集的操作获得样本子集,然后用弱分类算法在样本子 集上训练生成一系列的基分类器。他可以用来提高其他弱分类算法的识别率,也 就是将其他的弱分类算法作为基分类算法放于 Boosting 框架中,通过 Boosting 框架对训练样本集的操作,得到不同的训练样本子集,用该样本子集去训练生成 基分类器;每得到一个样本集就用该基分类算法在该样本集上产生一个基分类器,

2、这样在给定训练轮数 n 后,就可产生 n 个基分类器,然后 Boosting 框架算法将 这 n 个基分类器进行加权融合 ,产生一个最后的结果分类器,在这 n 个基分类器 中,每个单个的分类器的识别率不一定很高,但他们联合后的结果有很高的识别 率,这样便提高了该弱分类算法的识别率。Boosting 方法简而言之就是采取少数服从多数的原理,他的合理性在于如果 每个回归树的出错率为 40%,那么 1000 棵决策树犯错误的概率就降到了 4.40753e-ll,这就比较小了。对 diabetes 数据做 boosting 回归,使用到的函数包为 mboost ,使用函数为 mboost. 用法如下:

3、 mboost(formula, data = list(),baselearner=c(bbs,bols,btree,bss,bns),.) 其中 formular 需要使用到函数 btree():btree(., tree_controls = ctree_control(stump = TRUE,mincriterion = 0,savesplitstats = FALSE)试运行下列代码:1. library(mboos t)2. reg-mboost(ybtree(x2. ltg)+btree(x2.bmi)+btree(x2.bmi.ltg),3. dat a二w,co nt ro

4、l=boos t_cont rol(nu=0.1)我们可以得到 boosting 回归的信息,通过 plot 函数还有可视化结果。这里值得一提的是我在做 boosting 回归时为了减少工作量直接做了变 量选择(这个选择与回归树的最终选择是一致的,所以也有一定的道理)。最后 交叉验证的结果为:测试集 NMSE 为 0.5513152,训练集 NMSE 为 0.4656569。比 起上次计算的回归树模型测试集 NMSE 为 0.7036484,训练集 NMSE 为 0.518876 好了不少。四、bagging回归与 boosting 回归想法类似, bagging 回归的做法就是不断放回地对训

5、练样 本进行再抽样,对每个自助样本都建立一棵回归树,对于每一个观测,每棵树给 一个预测,最后将其平均。对 diabetes 数据做 bagging 回归,使用到的函数包为 ipred ,使用函数为 bagging (),用法如下:bagging(formula, data, subset, na.action=na.rpart, .) 主要参数介绍:Formula:回归方程形式Data:数据集Control:对树枝的控制,使用函数rpart.control (),可以控制诸如cp值, xval 等参量。输入代码:1. library(ipred)2. reg-bagging(y.,da ta二

6、w,coob二TRUE,co nt rol=rpar t.co nt rol(cp=0.02 5)结果为:Baggingregression trees with 25 bootstrap replicationsCall:bagging.data.frame(formula = y ., data = w, coob = TRUE, control =rpart.control(cp = 0.025)Out-of-bagestimate of root mean squared error: 58.3648使用交叉验证(代码略),得到结果:测试集NMSE为0.5705753,训练集NMSE

7、为0.3906232。比起上次计算的回归树模型测试集NMSE为0.7036484,训练集 NMSE 为 0.518876 好了不少。五、随机森林回归与 bagging 回归相比,随机森林则更进一步,不仅对样本进行抽样,还对变量进 行抽样。对 diabetes 数据做随机森林回归,使用到的函数包为 randomForest ,使用函数为 randomForest (),用法如下:randomForest(formula, data=NULL, ., subset, na.action=na.fail)这里值得一提的是,随机森林有个十分牛逼的性质,不会出现过拟合现象,这也 省去了我们确定树的分类程

8、度等一系列麻烦的事情。得到结果:测试集 NMSE 为0.08992529,训练集NMSE为0.08835731,效果显著提升。随机森林还可以输出 自变量重要性度量,试运行代码:1. library(randomForest)2. reg-randomFores t( y.,da ta二w,impor tance二TRUE)3. reg$importance得到结果:%IncMSE IncNodePurityx.glu68.803419942207.351x2.age22.678433118569.370x2.sex6.27357132808.346x2.bmi1379.067513437137

9、2.494x2.map331.3925059113411.547x2.tc18.608094814990.179x2.ldl24.369084717457.214x2.hdl216.274162064627.209x2.tch419.045185793688.855x2.ltg1514.0912885379235.430x2.glu81.756802051984.121x2.age.21.524283619364.582x2.bmi.275.634511253635.024x2.map.25.915679923049.475x2.tc.21.679268315631.426(省略部分输出)其中

10、第二列为均方误差递减意义下的重要性,第三列为精确度递减意义下的重要 性。六、其他的回归方法除去我们所说的以上4种方法外,还有人工神经网络回归,SVM回归,他们可以通过 nnet,rminer 包中有关函数实现,这里我们从略。在结束本文之前,我想我们可以做一件更有意义的事。在介绍 diabetes 数据集 时,我们提到了这个数据最早是一个关于偏最小二乘的例子。那么想必他与这个 模型的契合度还是不错的,我们可以尝试去算算利用偏最小二乘得到的训练集与 测试集的 NMSE。代码如下:1. library(lars)2. library(pls)3. NMSE-rep(0,5)4. NMSEO-NMSE

11、5. for(i in 1:5)6. m-index1index2=i7. reg.pls - plsr(y x2,64, data = diabe tes-m, validation 二CV)8. yO-predic t( reg.pls,diabe tes-m,)9. y1-predic t( reg.pls,diabe tesm,)10. NMSEOi-mean(diabetes$y-m-y0厂2)/mean(diabetes$y-m-mean(diabetes$y-m)厂2)11. NMSEi-mean(diabetes$ym-y1厂2)/mean(diabetes$ym-mean(di abetes$ym)厂2)12. 运行结果:测试集NMSE为0.6094071,训练集NMSE为0.4031211。这里也仅仅 是得到了一个优于回归树,与 bagging 回归相当,不如随机森林的一个结果。也 说明了机器学习方法在实际问题中还是有一定优势的。但这绝不意味着这样的回 归可以代替OLS,毕竟这些数据挖掘的方法在表达式的简洁程度,计算量等诸多 方面还是存在着或多或少的不足。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号