sklearn中RandomForest详解

随机森林基本原理

随机森林是一种bagging算法。bagging是一种随机采样(bootsrap)算法,与boosting不同,bagging弱学习器之间没有依赖关系,bagging通过采样训练不同的模型,然后进行组合。随机森林通过采样训练不同的决策树模型,然后进行组合。

在这里插入图片描述

注:注意到这和GBDT的子采样是不同的。GBDT的子采样是无放回采样,而Bagging的子采样是放回采样。

随机森林中的随机性表现在:(1)在随机森林中的每棵树都是根据训练集中的随机抽样的样本构建的。(2)在树的构造过程中拆分每个节点时,最好的切分点可能出现在所有的特征中也可能所有特征的一个特征子集中(子集大小为max_features)

这两个随机性是为了减少减少森林估计量的方差,单个决策树通常表现出较高的方差并且倾向于过度拟合。在森林中注入的随机性产生决策树,随机森林通过组合不同的树木得到预测的平均值,可以减小预测误差(方差),但略微增加偏差。

注:scikit-learn实现通过平均分类器的概率预测来组合分类器,而不是让每个分类器对单个分类投票。

优缺点:

(1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势

(2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。

(3) 在训练后,可以给出各个特征对于输出的重要性

RandomForestClassifier

参数说明

随机森林分类,sklearn 中的接口如下:

sklearn.ensemble.RandomForestClassifier(n_estimators=100, 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=None, random_state=None, verbose=0, warm_start=False, class_weight=None, ccp_alpha=0.0, max_samples=None)

参数

参数 说明
n_estimators 决策树的个数,若n_estimators太小容易欠拟合,太大不能显著的提升模型,所以n_estimators选择适中的数值。必须设置
bootstrap 是否对样本集进行有放回抽样来构建树,默认值True。
oob_score 是否采用袋外样本来评估模型的好坏,默认false,推荐设置True。
max_features 构建决策树最优模型时考虑的最大特征数。默认是"auto",表示最大特征数是N的平方根;“log2"表示最大特征数是 log_{2}N ;"sqrt"表示最大特征数是 \sqrt{N} 。如果是整数,代表考虑的最大特征数;如果是浮点数,表示对(N * max_features)取整。其中N表示样本的特征数。
max_depth 决策树最大深度。默认None,表示决策树在构建最优模型的时候不会限制子树的深度。如果模型样本量多,特征也多的情况下,推荐限制最大深度;若样本量少或者特征少,则不限制最大深度。
min_samples_leaf 叶子节点含有的最少样本。若叶子节点样本数小于min_samples_leaf,则对该叶子节点和兄弟叶子节点进行剪枝,只留下该叶子节点的父节点。整数型表示个数,浮点型表示取大于等于(样本数 * min_samples_leaf)的最小整数。min_samples_leaf默认值是1。
min_samples_split 节点可分的最小样本数,默认值是2。整数型和浮点型的含义与min_samples_leaf类似。
max_leaf_nodes 最大叶子节点数。int设置节点数,None表示对叶子节点数没有限制。
min_impurity_decrease 节点划分的最小不纯度。假设不纯度用信息增益表示,若某节点划分时的信息增益大于等于min_impurity_decrease,那么该节点还可以再划分;反之,则不能划分。
criterion 表示节点的划分标准。两种取值:entropy,默认"gini。"不纯度标准参考Gini指数,信息增益标准参考"entrop"熵。
min_samples_leaf 叶子节点最小的样本权重和。叶子节点如果小于这个值,则会和兄弟节点一起被剪枝,只保留叶子节点的父节点。默认是0,则不考虑样本权重问题。一般来说,如果有较多样本的缺失值或偏差很大,则尝试设置该参数值。
warm_start 默认为False,设置True为时,重用上一个调用的解决方案以适应并向集合添加更多估计量,否则,仅适应一个全新的森林
class_weight 默认无,{“ balanced”,“ balanced_subsample”}。
对于四分类问题,指定方式:[{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}]而不是[{1:1}, {2:5}, {3:1}, {4:1}]。
max_samples 从X抽取以训
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值