统计-可能是最丰富的随机森林攻略+代码放送

如题所述

第1个回答  2022-07-20

a) 先用临近值填补缺失值

iter: 迭代数 breiman说4-6次就好,过多的迭代数不会让OOB error变小
set.seed:保证抽取的过程是随机的
hd~: 我们想通过所有参数预测hd

红框部分为每次迭代的OOB error

b) 构建随机森林模型

mtry:
如果我们想预测的是连续变量,该值为总的变量值/3
如果想预测的是factor,该值为总变量数的根号
本例子中,hd是factor,mtry的默认值为sqrt(13)=3.6约等于3

number of tree :500 种树个数,默认500个
no. of variables tried at each split : 3 (即mtry)节点个数
OOB误差 :17.82% 这个很重要
cofusion matrix的意义
22个unhealthy被分入healthy中
32个healthy被分入unhealthy中

c) 更换mtry和number of trees的数量,使随机森林达到最优
核心思想:使OOB,healthy, unhealthy的error rate达到最低

横行:种的第i颗树,i=1:500,依次类推
纵行:OOB error rate; healthy error rate; unhealthy error rate

可以看出:当树种到400以后,三者的误差基本不变了

500-1000之间,误差基本不变,因此选500颗树就好

可以看出, mtry在3左右就很好,再低容易引起过拟合

具体原理参照我之前的帖子

可见我们的随机森林效果不错, healthy分成一类,unhealthy分成一类

注意:importance=TRUE必须得打开,否则没法进行重要性评分