随机森林

来源:互联网 发布:sqlserver 2008 64 编辑:程序博客网 时间:2024/05/09 07:16

介绍

在集成学习的算法中,分为两种,一种是boosting,它的特点是各个弱分类器之间有依赖关系,另外一种是Bagging,各个弱分类器之间无联系,可以并行拟合。

随机森林,属于Bagging流派的算法,每个分类器之间没有依赖关系;
首先从样本集中有放回地随机采集固定个数的样本,这样,会导致已经被采集到的数据可能会被再次采集到,当然,也会存在某些样本不被采集到。

OOB:袋外数据(out of bag),也就是没有被采集到的数据,这样的数据约占36.8%

随机森林算法采取了Bagging的思想,各个弱分类器无限制,可以为决策树或者神经网络。普通的决策树,会在n个特征中选择最优特征进行左右子树的划分,但是随机森林的弱分类器,会在n个特征值随机选择nsub 个特征,然后在这 nsub个特征中选择最优特征进行左右子树的划分。

sklearn使用

在scikit-learn中:
RF的分类类是sklearn.ensemble.RandomForestClassifier
RF的回归类是:sklearn.ensemble.RandomForestRegressor

RF框架相关参数:

n_estimators:也就是弱学习器的最大迭代次数,或者说最大的弱学习器的个数,一般来说n_estimators太小,容易欠拟合,n_estimators太大,计算量会太大,并且n_estimators到一定的数量后,再增大n_estimators获得的模型提升会很小,所以一般选择一个适中的数值。默认是100。在实际调参的过程中,我们常常将 n_estimators 和 learning_rate 一起考虑
oob_score:即是否采用袋外样本来评估模型的好坏。默认识False。推荐设置为True,因为袋外分数反应了一个模型拟合后的泛化能力。
criterion:即CART树做划分时对特征的评价标准。分类模型和回归模型的损失函数是不一样的。分类RF对应的CART分类树默认是基尼系数gini,另一个可选择的标准是信息增益。回归RF对应的CART回归树默认是均方差mse,另一个可以选择的标准是绝对值差mae。一般来说选择默认的标准就已经很好的。

RF决策树相关参数

  • RF划分时考虑的最大特征数max_features:可以使用很多种类型的值,默认是”None”, 意味着划分时考虑所有的特征数;如果是”log2”意味着划分时最多考虑log2N个特征;如果是”sqrt”或者”auto”意味着划分时最多考虑N个特征。如果是整数,代表考虑的特征绝对数。如果是浮点数,代表考虑特征百分比,即考虑(百分比xN)取整后的特征数。其中N为样本总特征数。一般来说,如果样本特征数不多,比如小于50,我们用默认的”None”就可以了,如果特征数非常多,我们可以灵活使用刚才描述的其他取值来控制划分时考虑的最大特征数,以控制决策树的生成时间。

  • 决策树最大深度max_depth:默认可以不输入,如果不输入的话,决策树在建立子树的时候不会限制子树的深度。一般来说,数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间。

  • 内部节点再划分所需最小样本数min_samples_split:这个值限制了子树继续划分的条件,如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。 默认是2.如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。

  • 叶子节点最少样本数min_samples_leaf:这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。 默认是1,可以输入最少的样本数的整数,或者最少样本数占样本总数的百分比。如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。

  • 叶子节点最小的样本权重和min_weight_fraction_leaf:这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝。 默认是0,就是不考虑权重问题。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了。

  • 最大叶子节点数max_leaf_nodes:通过限制最大叶子节点数,可以防止过拟合,默认是”None”,即不限制最大的叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制,具体的值可以通过交叉验证得到。

  • 节点划分最小不纯度min_impurity_split:这个值限制了决策树的增长,如果某节点的不纯度(基于基尼系数,均方差)小于这个阈值,则该节点不再生成子节点。即为叶子节点 。一般不推荐改动,默认值1e-7。

上面决策树参数中最重要的包括最大特征数max_features, 最大深度max_depth, 内部节点再划分所需最小样本数min_samples_split和叶子节点最少样本数min_samples_leaf。