基于R语言randomForest包的随机森林建模研究

摘  要  随机森林是重要的数据挖掘模型,常用于对样本进行分类预测。本文描述了一个实验,使用R语言randomForest包对一组人口普查数据建立随机森林模型,并对模型进行观察和优化,所建立的模型可对成年人的年薪进行分类预测。实验对研究随机森林建模有积极意义,实验中涉及的建模思路与模型优化方法可借鉴应用于其他情景的数据挖掘工作。
关键词  数据挖掘;R语言;随机森林;randomForest
 

1.1.1  引言
数据挖掘是通过统计学与机器学习算法,在大量的历史数据中挖掘出隐藏在其中的有价值的信息的科学。随机森林是一种数据挖掘模型,常用于进行分类预测[1,2]。本文描述了一个为研究随机森林建模而设计的实验,实验中使用R语言的randomForest包[4]对一组包含超过3万条记录的人口普查数据[3]进行随机森林建模,所建立的模型可对成年人的年薪水平进行预测。本次实验中的随机森林建模与优化方法可借鉴应用于其他情景的数据挖掘工作。
1.1.2  随机森林建模实验
1.1  数据预处理
    adult是一组包含了32560条记录的人口统计信息数据集[3],在载入数据集之后,首先清除掉对本次建模无关的变量,然后将变量名称替换为中文,过程如下:
> data = read.csv("~/Desktop/adult.data") 
> data = data[ ,c(-3,-11,-12,-14)] 
> names(data) = c("年龄","职业","学历","教育年数","婚姻状态","从事行业","家庭角色","种族","性别","每周工时","年薪")
1.2  遍历比较确定最优mtry值
mtry参数是建模中每棵决策树分支随机抽样的变量个数,选择合适的mtry参数值可以降低随机森林模型的预测错误率。实验中通过遍历mtry所有可能取值依次建模,打印出每次建模的错误率,选择错误率最低的mtry取值。过程如下:
> n=ncol(data)-1; errRate=1; formula=年薪~.
> for ( i in 1:n) {
+ m = randomForest(formula, data, mtry=i, importance=TRUE)
+ errRate[i] = mean(m$err.rate) }
> errRate
[1] 0.2498542 0.2177361 0.2164838 0.2227437 0.2284665 0.2317535 0.2349915 0.2365614 0.2381530 0.2385501
当mtry=3时,错误率达到最低,因此本次建模过程中以3作为mtry参数值
1.3  选择合适的ntree参数值
ntree参数指出建模时决策树的数量。ntree值设置过低会导致错误率偏高;过高则会提升模型复杂度。将模型错误率与决策树数量的关系可视化。