机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别输出的类别的众树而定,它有着许多的有点,能很好地处理多分类问题。
随机森林,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵之间是没有关联的,在得到森林之后,当有一个新的输入样本进入的时候,让森林中的每一棵决策树分别进行判断,对其进行分类,最后预测为被选择的最多的那一类。
建立决策树的过程中,需要注意两点:采样与完全分裂。首先是两个随机采样的过程,random forest对输入的数据进行行列的采样;这里的采样,可能存在重复的样本。假设有N个样本,那么采样的样本也为N个,在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。然后进行列采样,从M个feature中选择m(m<M)个,之后就是对采样后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面所有的样本都指向同一个分类。 一般很多的决策树算法都有一个很重要的步骤-剪枝,这里不需要这样做,因为之前的两个随机采样的过程保证了随机性,就算不减枝,也不会出现over-fitting。
需要注意的是: 每一棵决策树相对是较弱的,但是将多棵决策树结合起来就十分强大。可以这样比喻随机森林算法:每一棵决策树就是一个精通某一个窄领域的专家(从M个feature中选择m个让每一棵决策树进行学习),这样在随机森林中就有很多个精通不同领域的专家,对一个新的输入数据,可以从不同的角度去分析,最终由各方面的专家进行投票,得到最终结果。
RF:不敏感,它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度
XGB:不敏感,算法中对缺失值进行了处理,对缺失特征值分裂时,左右节点都分裂,最终看哪个损失更小就分到哪边,所以对缺失值不敏感
GBDT:对缺失值没有对应处理,敏感
ligthGBM: 不敏感,和Xgboost是一样的。每次分割的时候,分别把缺失值放在左右两边各计算一次,然后比较两种情况的增益,择优录取
参考:https://wustchuichui.github.io/2016/04/06/Random-forest/
原文:https://www.cnblogs.com/Allen-rg/p/13999119.html