应用机器学习(七):随机森林
来源:互联网 发布:苏州淘宝美工招聘 编辑:程序博客网 时间:2024/06/05 21:03
随机森林
随机森林( Random forest ),是一种用于分类、回归等任务的集成学习方法。对于分类任务,它在训练时构建多棵决策树,输出这些树的分类结果的众数( mode ),即,将大多数树的分类结果作为最终的结果。这样,随机森林修正了单棵决策树过度拟合训练集的倾向。
随机森林算法
- 准备工作:决策树学习
对于详细的决策树学习理论,请参考 应用机器学习 | 第七讲。
在构建的决策树里,长的比较”深”的树,倾向过拟合训练集,即,它有较低的偏差,但较高的方差。随机森林平衡了多棵决策树,目的是减小预测方差,但付出的代价是,增加了偏差且损失了部分模型可解释性。尽管如此,随机森林仍然很大程度上改善了最终模型的预测表现。
- Tree bagging
给定一个训练集
所谓装袋( bagging ),指的是从训练集中有放回地抽取一个随机样本,在这个样本上拟合树。假设重复装袋
对
分别从
X,Y 有放回地抽取训练实例Xb,Yb ;在
Xb,Yb 上训练一棵决策树fb .
经过
(1). 平均数原则
(2). 大多数原则
取大多数决策树的预测结果作为最终的结果。
以上训练随机森林的过程,称为 Bootstrapping procedure, 它在没有增减偏差( bias )的情况下,降低了模型的预测方差( variance )。当单棵决策树的预测对训练集的噪声数据敏感时,只要保证多棵树之间不相关,那么,它们的平均预测可以大大降低这种敏感性。仅在一个训练集上构建多棵决策树,会导致强相关的树,而 Bootstrapping 抽样是一种降低树之间相关性的有效方法。
在这里,样本数
- 从特征装袋到随机森林
特征装袋( feature bagging ), 指的是在决策树学习过程中,每次随机选择一个特征子集,在这个子集上构建决策树。而普通的装袋法,每棵决策树是在全部特征上拆分得到的。特征装袋的原因是,如果存在某个或多个特征是响应变量(类变量)强预测变量,那么,这些变量就可能在 B 棵树的多棵的构建过程中被选择作为拆分变量,这导致树的相关性。通常,对于一个分类问题,假设有 p 个特征,那么,在每次拆分时,随机选择的子特征数为
随机森林的性质
- 袋外误差
袋外误差( Out-of-bag (OOB) error ),也称袋外估计( out-of-bag estimate ),是测量随机森林预测误差的一种方法。
假设有数据集
- 变量重要性
在回归、分类问题里,随机森林可以排秩变量的重要程度。
使用数据集
R 执行代码
下面是随机森林和装袋集成算法的一段 R 执行代码,需要安装 R 包 party 和 TH.data.
set.seed(290875) ### honest (i.e., out-of-bag) cross-classification of ### true vs. predicted classes data("mammoexp", package = "TH.data") table(mammoexp$ME, predict(cforest(ME ~ ., data = mammoexp, control = cforest_unbiased(ntree = 50)), OOB = TRUE)) ### fit forest to censored response if (require("TH.data") && require("survival")) { data("GBSG2", package = "TH.data") bst <- cforest(Surv(time, cens) ~ ., data = GBSG2, control = cforest_unbiased(ntree = 50)) ### estimate conditional Kaplan-Meier curves treeresponse(bst, newdata = GBSG2[1:2,], OOB = TRUE) ### if you can't resist to look at individual trees ... party:::prettytree(bst@ensemble[[1]], names(bst@data@get("input"))) } ### proximity, see ?randomForest iris.cf <- cforest(Species ~ ., data = iris, control = cforest_unbiased(mtry = 2)) iris.mds <- cmdscale(1 - proximity(iris.cf), eig = TRUE) op <- par(pty="s") pairs(cbind(iris[,1:4], iris.mds$points), cex = 0.6, gap = 0, col = c("red", "green", "blue")[as.numeric(iris$Species)], main = "Iris Data: Predictors and MDS of Proximity Based on cforest") par(op)
阅读更多精彩内容,请关注微信公众号 “统计学习与大数据”!
- 应用机器学习(七):随机森林
- 随机森林-机器学习
- 机器学习 -- 随机森林
- 机器学习-随机森林
- 机器学习-随机森林
- 机器学习算法(六):随机森林
- 机器学习:随机森林(Random Forest)
- 机器学习算法(二)-随机森林
- 【机器学习】随机森林RF
- 【机器学习】随机森林RF
- 机器学习算法-随机森林
- 机器学习之随机森林
- 机器学习算法-随机森林
- 机器学习----集成学习(Bagging和随机森林)
- (摘抄笔记)机器学习算法复习--随机森林
- 机器学习算法之随机森林(Random Forest)
- 机器学习:集成算法(随机森林,Adaboost)
- 机器学习之随机森林(R)randomFordom算法案例
- 多磁盘多系统安装记录-以fedora25server/centos7为例
- 关于javascript起始标签和结束标签
- perror函数的作用
- 音视频数据处理(-3) 自行生成bmp图像以及bmp图像解析
- 扩展欧几里得
- 应用机器学习(七):随机森林
- POJ1061 数论gcd
- VMtools安装
- 大数据分析林夕的歌词
- Win7怎么查看内存占用率?Win7查看软件内存占用率的方法
- C#学习笔记:设置与获取控件的大小
- POJ2112 Dinic + Floyd
- 内存
- maven配合MyBatis-CMEU快速搭建ssm框架