原文链接:http://tecdat.cn/?p=4281
最近咱们被客户要求撰写对于随机森林模型的钻研报告,包含一些图形和统计输入。
如果咱们对所有这些模型的后果进行均匀,咱们有时能够从它们的组合中找到比任何单个局部更好的模型。这就是集成模型的工作形式
让咱们构建一个由三个简略决策树组成的十分小的汇合来阐明:
这些树中的每一个都依据不同的变量做出分类决策。
随机森林模型比下面的决策树更深地成长树木,实际上默认是尽可能地将每棵树成长进去。随机森林以两种形式做到这一点。
第一个技巧是应用套袋。Bagging 会对您的训练集中的行进行随机抽样。应用样本函数很容易在 R 中进行模仿。假如咱们想在 10 行的训练集上进行装袋。
> sample(1:10, replace = TRUE)
[1] 3 1 9 1 7 10 10 2 2 9
在此模仿中,如果再次运行此命令,则每次都会取得不同的行样本。均匀而言,大概 37%的即将被排除在自举样本之外。通过这些反复和省略的行,每个应用装袋成长的决策树将略有不同。
第二个随机起源超过了这个限度。随机森林不是查看整个可用变量池,而是仅采纳它们的一部分,通常是可用数量的平方根。在咱们的例子中,咱们有 10 个变量,因而应用三个变量的子集是正当的。
通过这两个随机性起源,整体蕴含一系列齐全独特的树木,这些树木的分类都不同。与咱们的简略示例一样,每个树都被调用以对给定乘客进行分类,对投票进行统计(可能有数百或数千棵树)并且抉择少数决策。
R 的随机森林算法对咱们的决策树没有一些限度。咱们必须清理数据集中的缺失值。rpart 它有一个很大的长处,它能够在遇到一个 NA 值时应用代替变量。在咱们的数据集中,短少很多年龄值。如果咱们的任何决策树按年龄宰割,那么树将搜寻另一个以与年龄类似的形式宰割的变量,并应用它们代替。随机森林无奈做到这一点,因而咱们须要找到一种手动替换这些值的办法。
看一下合并后的数据框的年龄变量:
> summary(combi$Age)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
0.17 21.00 28.00 29.88 39.00 80.00 263
1309 个中有 263 个值失落了,这个数字高达 20%!此子集是否短少值。咱们当初也想应用 method=”anova” 决策树的版本,因为咱们不是要再预测某个类别,而是连续变量。因而,让咱们应用可用的年龄值在数据子集上生成一个树,而后替换短少的那些样本:
> combi$Age[is.na(combi$Age)] <- predict(Agefit, combi[is.na(combi$Age),])
您能够持续查看摘要,所有这些 NA 值都隐没了。
当初让咱们看看整个数据集的摘要,看看是否还有其余咱们以前没有留神到的问题变量:
> summary(combi)
> summary(combi$Embarked)
C Q S
2 270 123 914
两名乘客的空白。首先,咱们须要找出他们是谁!咱们能够 which 用于此:
> which(combi$Embarked == '')
[1] 62 830
而后咱们简略地替换这两个,并将其编码为一个因素:
> combi$Embarked <- factor(combi$Embarked)
另一个变量是 Fare,让咱们来看看:
> summary(combi$Fare)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
0.000 7.896 14.450 33.300 31.280 512.300 1
它只有一个乘客 NA,所以让咱们找出它是哪一个并用中位数票价取而代之:
> which(is.na(combi$Fare))
[1] 1044
好的。咱们的数据框现已被清理。当初进入第二个限度:R 中的随机森林只能消化多达 32 个等级的因子。咱们的 FamilyID 变量简直翻了一倍。咱们能够在这里采纳两条门路,或者将这些级别更改为它们的根底整数(应用 unclass() 函数)并让树将它们视为连续变量,或者手动缩小级别数以使其放弃在阈值之下。
咱们采取第二种办法。而后咱们将它转换回一个因素:
> combi$FamilyID2 <- combi$FamilyID
> combi$FamilyID2 <- factor(combi$FamilyID2)
咱们曾经降到了 22 级,所以咱们很好地将测试和训练集离开,装置并加载包
randomForest:> install.packages('randomForest')
设置随机种子。
> set.seed(415)
外部数字并不重要,您只需确保每次应用雷同的种子编号,以便在随机森林函数内生成雷同的随机数。
当初咱们筹备运行咱们的模型了。语法相似于决策树。
> fit <- randomForest()
咱们强制模型通过临时将指标变量更改为仅应用两个级别的因子来预测咱们的分类,而不是 method=”class” 像应用那样指定。
如果您正在应用更大的数据集,您可能心愿缩小树的数量,至多在初始摸索时,应用限度每个树的复杂性 nodesize 以及缩小采样的行数 sampsize
那么让咱们来看看哪些变量很重要:
> varImpPlot(fit)
点击题目查阅往期内容
PYTHON 链家租房数据分析:岭回归、LASSO、随机森林、XGBOOST、KERAS 神经网络、KMEANS 聚类、天文可视化
左右滑动查看更多
01
02
03
04
咱们的 Title 变量在这两个指标中都处于领先地位。咱们应该非常高兴地看到剩下的工程变量也做得十分好。
预测函数与决策树的工作形式相似,咱们能够完全相同的形式构建提交文件。
> Prediction <- predict(fit, test)
> write.csv(submit, file = "firstforest.csv", row.names = FALSE)
让咱们尝试一下条件推理树的森林。
所以持续装置并加载 party 包。
> install.packages('party')
> library(party)
以与咱们的随机森林相似的形式构建模型:
> set.seed(415)
> fit <- cforest()
条件推理树可能解决比 Random Forests 更多级别的因子。让咱们做另一个预测:
> Prediction <- predict(fit, test, OOB=TRUE, type = "response")
有问题欢送下方留言!
点击文末 “浏览原文”
获取全文残缺代码数据资料。
本文选自《R 语言泰坦尼克号随机森林模型案例数据分析》。
点击题目查阅往期内容
R 语言贝叶斯狭义线性混合(多层次 / 程度 / 嵌套)模型 GLMM、逻辑回归剖析教育留级影响因素数据
Python 中的 Lasso 回归之最小角算法 LARS
高维数据惩办回归办法:主成分回归 PCR、岭回归、lasso、弹性网络 elastic net 剖析基因数据
Python 高维变量抉择:SCAD 平滑剪切相对偏差惩办、Lasso 惩办函数比拟
R 语言惩办 logistic 逻辑回归(LASSO, 岭回归)高维变量抉择的分类模型案例
R 应用 LASSO 回归预测股票收益
狭义线性模型 glm 泊松回归的 lasso、弹性网络分类预测学生考试成绩数据和穿插验证
贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析免疫球蛋白、前列腺癌数据
R 语言 RSTAN MCMC:NUTS 采样算法用 LASSO 构建贝叶斯线性回归模型剖析职业声望数据
r 语言中对 LASSO 回归,Ridge 岭回归和弹性网络 Elastic Net 模型实现
R 语言高维数据惩办回归办法:主成分回归 PCR、岭回归、lasso、弹性网络 elastic net 剖析基因数据(含练习题)
Python 中 LARS 和 Lasso 回归之最小角算法 Lars 剖析波士顿住房数据实例
R 语言 Bootstrap 的岭回归和自适应 LASSO 回归可视化
R 语言 Lasso 回归模型变量抉择和糖尿病倒退预测模型 R 语言实现贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析
基于 R 语言实现 LASSO 回归剖析
R 语言用 LASSO,adaptive LASSO 预测通货膨胀工夫序列
R 语言自适应 LASSO 多项式回归、二元逻辑回归和岭回归利用剖析
R 语言惩办 logistic 逻辑回归(LASSO, 岭回归)高维变量抉择的分类模型案例
Python 中的 Lasso 回归之最小角算法 LARS
r 语言中对 LASSO 回归,Ridge 岭回归和弹性网络 Elastic Net 模型实现
r 语言中对 LASSO 回归,Ridge 岭回归和 Elastic Net 模型实现
R 语言实现 LASSO 回归——本人编写 LASSO 回归算法
R 应用 LASSO 回归预测股票收益
python 应用 LASSO 回归预测股票收益 Python 中 LARS 和 Lasso 回归之最小角算法 Lars 剖析波士顿住房数据实例
R 语言 Bootstrap 的岭回归和自适应 LASSO 回归可视化
R 语言 Lasso 回归模型变量抉择和糖尿病倒退预测模型 R 语言实现贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析
基于 R 语言实现 LASSO 回归剖析
R 语言用 LASSO,adaptive LASSO 预测通货膨胀工夫序列
R 语言自适应 LASSO 多项式回归、二元逻辑回归和岭回归利用剖析
R 语言惩办 logistic 逻辑回归(LASSO, 岭回归)高维变量抉择的分类模型案例
Python 中的 Lasso 回归之最小角算法 LARS
r 语言中对 LASSO 回归,Ridge 岭回归和弹性网络 Elastic Net 模型实现
r 语言中对 LASSO 回归,Ridge 岭回归和 Elastic Net 模型实现
R 语言实现 LASSO 回归——本人编写 LASSO 回归算法
R 应用 LASSO 回归预测股票收益
python 应用 LASSO 回归预测股票收益 R 语言随机森林 RandomForest、逻辑回归 Logisitc 预测心脏病数据和可视化剖析
数据分享 | R 语言逻辑回归、线性判别分析 LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM 分类葡萄酒穿插验证 ROC
MATLAB 随机森林优化贝叶斯预测剖析汽车燃油经济性
R 语言用 Rcpp 减速 Metropolis-Hastings 抽样预计贝叶斯逻辑回归模型的参数
R 语言逻辑回归、Naive Bayes 贝叶斯、决策树、随机森林算法预测心脏病
R 语言中贝叶斯网络(BN)、动静贝叶斯网络、线性模型剖析错颌畸形数据
R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归
Python 贝叶斯回归剖析住房累赘能力数据集
R 语言实现贝叶斯分位数回归、lasso 和自适应 lasso 贝叶斯分位数回归剖析
Python 用 PyMC3 实现贝叶斯线性回归模型
R 语言用 WinBUGS 软件对学术能力测验建设档次(分层)贝叶斯模型
R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真剖析
R 语言和 STAN,JAGS:用 RSTAN,RJAG 建设贝叶斯多元线性回归预测选举数据
R 语言基于 copula 的贝叶斯分层混合模型的诊断准确性钻研
R 语言贝叶斯线性回归和多元线性回归构建工资预测模型
R 语言贝叶斯推断与 MCMC:实现 Metropolis-Hastings 采样算法示例
R 语言 stan 进行基于贝叶斯推断的回归模型
R 语言中 RStan 贝叶斯层次模型剖析示例
R 语言应用 Metropolis-Hastings 采样算法自适应贝叶斯预计与可视化
R 语言随机搜寻变量抉择 SSVS 预计贝叶斯向量自回归(BVAR)模型
WinBUGS 对多元随机稳定率模型:贝叶斯预计与模型比拟
R 语言实现 MCMC 中的 Metropolis–Hastings 算法与吉布斯采样
R 语言贝叶斯推断与 MCMC:实现 Metropolis-Hastings 采样算法示例
R 语言应用 Metropolis-Hastings 采样算法自适应贝叶斯预计与可视化
视频:R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型
R 语言 MCMC:Metropolis-Hastings 采样用于回归的贝叶斯预计 R 语言用 lme4 多层次(混合效应)狭义线性模型(GLM),逻辑回归剖析教育留级考察数据
R 语言随机森林 RandomForest、逻辑回归 Logisitc 预测心脏病数据和可视化剖析
R 语言基于 Bagging 分类的逻辑回归 (Logistic Regression)、决策树、森林剖析心脏病患者
R 语言用主成分 PCA、逻辑回归、决策树、随机森林剖析心脏病数据并高维可视化