鉴于csdn上已经有很多优秀的博文对RandomForest做过介绍,在此重复的内容我就不再复述:如随机森林的Bootstrap,features select...
主要结合原论文谈谈RandomForest的实现细节:
1.out-of-bag的计算:
对于每一颗树来说,大约有1/3的样本会成为这棵树的out-of-bag,随机森林可以利用这部分数据进行模型检验,也就不需要额外的验证集,同时这也被数学证明是模型泛化误差的无偏估计,那么怎么计算这个oob error呢?
对于每个样本来说,大约有1/3的树的oob包含它,对这些树对该的分类结果进行多数表决,再将预测结果与真实结果比较,然后就可以得到一个全部数据的分类误差,这个就是oob error
2.特征重要性的计算:
随机森林可以很方便得给出每个特征的重要性,但是如果特征A和B存在很强的关系,也就是说能从A中推出B,那么这样的特征的重要性是没有意义的,因为随机森林往往只会给A一个很高的值,而B就会小很多(为什么会这样呢?大家以GINI系数为出发点,思考下就可以得出结果)
暂且不论上述的缺点,这也是随机森林一个很独特的地方,这里给出2种计算特征重要性的方法:
方法一:
还是以一棵树为例,记录