随机森林

随机森林

1、算法概述

从数据集中按照Bootstraping的方式抽取k个样本,共抽取n次,使用这n个数据集可以训练n个决策树。

训练决策树时可以随机抽取总特征数一定比例的特征,作为进行决策树的训练时的特征划分集,未选的特征将不再考虑。

最终每个样本的分类结果经根据这n个决策树投票决定。

2、调参

from sklearn.ensemble import RandomForestClassifier

RandomForestClassifier(n_estimators=10,  criterion='gini', max_depth=None,  min_samples_split=2,  min_samples_leaf=1, min_weight_fraction_leaf=0.0,  max_features='auto',  max_leaf_nodes=None,  min_impurity_decrease=0.0, min_impurity_split=None,  bootstrap=True,  oob_score=False,  n_jobs=1,  random_state=None,  verbose=0,  warm_start=False, class_weight=None)¶

1)max_features是分割节点时考虑的特征的随机子集的大小。 这个值越低,方差减小得越多,但是偏差的增大也越多。 根据经验,回归问题中使用 max_features = n_features ,分类问题使用 max_features = sqrt(n_features) (其中 n_features 是特征的个数)是比较好的默认值。 

2)max_depth = None 和 min_samples_split = 2 结合通常会有不错的效果(即生成完全的树)。 请记住,这些(默认)值通常不是最佳的,同时还可能消耗大量的内存,最佳参数值应由交叉验证获得。

3)另外,请注意,在随机森林中,默认使用自助采样法(bootstrap = True)。

4)当使用自助采样法方法抽样时,泛化精度是可以通过剩余的或者袋外的样本来估算的,设置 oob_score = True 即可实现。

5)并行化

这个模块还支持树的并行构建和预测结果的并行计算,这可以通过n_jobs参数实现。

3、特征的重要性评估

特征对目标变量预测的相对重要性可以通过(树中的决策节点的)特征使用的相对顺序(即深度)来进行评估。

实际上,对于训练完成的模型这些估计值存储在 feature_importances_ 属性中。 这是一个大小为 (n_features,) 的数组,其每个元素值为正,并且总和为 1.0。一个元素的值越高,其对应的特征对预测函数的贡献越大。

原文地址:https://www.cnblogs.com/yongfuxue/p/10039010.html