Bagging & Random Forest
100-Same Tree | Links:
Bootstrapping
- Bootstrapping思想:一种统计抽样方法,通过有放回的方法从总样本中选取部分样本,允许重复
Bagging
- bagging是boostrapping思想在机器学习领域的应用,是bootstrap aggregating的缩写
- Bagging核心:
- 有放回的方式选取训练集
- 利用样本扰动建立差异化的模型,对结果进行平均或投票 -> 有助于降低方差
- Bagging步骤
- 有m个样本的训练集
- 对训练集进行T次有放回的抽样,每次抽出m个样本-> T个采样集
- 建立T个学习器,对预估结果进行平均或投票
- Bagging的优势
- 改善过拟合,降低模型方差
- 并行式的集成学习方法:学习器的训练之间没有前后顺序可以同时进行
- 适合能力强但容易表达过度的模型:决策树和神经网络
随机森林
- Random Forest是一种决策树Bagging模型的优化版本
- 核心思想依然是bagging
- 森林【必须使用CART决策树作为基学习器,多棵树组成森林】 + 随机【Bagging + 特征随机】
- 步骤
- 样本抽样【有放回的选择样本,Bagging模式】
- 对m个样本训练集进行T次有放回的抽样,每次抽取m个样本 ->T个采样集
- 构建T个CART决策树
- 特征抽样
- 在每个树的节点处,先抽取k个特征子集
- 再从子集中选取最优特征进行生长
- 每棵树最大限度地生长,尽量overfitting,不做剪枝
- 多棵树组成随机森林,对预估结果做平均或投票
- 样本抽样【有放回的选择样本,Bagging模式】
- 本质:双重随机性/扰动 -> 利用树的差异性控制过拟合,提高泛化能力
随机森林 vs. Bagged Trees
- 随机森林的起始性能较差(单棵树的准确度有所下降)
- 随着树的数量增多,往往会收敛到比较低的泛化误差
- 只在特征子集选取最优划分属性,训练效率更高
随机森林重要参数
- Bagging参数
- n_estimators: 决策树的个数,默认100。n_estimators太小容易欠拟合,n_estimators太大训练耗时。随着树的数目增加,模型的表现会提升,但是到了一定程度,提升会放缓。通常选择50~200之间的数字。
- oob_score :即是否采用袋外样本来评估模型的好坏。默认识False。
- criterion: CART树选取最优特征的指标。分类模型默认是gini index,回归树默认是mse。
- 树参数
- max_features: 树节点处的最大特征数,这是体现树之间差异性从而提升泛化能力的重要参数。默认”auto”是sqrt(N)个特征。可选“log2”即log2N个特征;整数代表考虑的特征绝对数;浮点数代表特征百分比。其中N为样本总特征数。可以通过调参尝试不同参数值。
- max_depth:树的的最大深度,默认不限制深度。如果样本量多,特征多的时候,推荐限制这个最大深度,常用取值10-100之间。
- min_sample_split:限制了子树继续划分的条件,默认是2。如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分。 如果样本量不大,不需要管这个值。如果样本量数量级非常大,推荐增大这个值。
- min_samples_leaf: 叶子节点最少的样本树,默认1。如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝。对于随机森林来说,树越大越好,不需要管这个值。如果样本量非常大,在意训练速度,可以增大这个值,当模型表现变坏的之前停止。