Bagging原理

Bagging是n个相互无信赖的弱学习器,通过一定的策略,得到一个强学习器。

随机采样

Bagging一个主要的特点是随机采样,bagging是有放回的采样。

对于一个有m个样本的数据集,每次采集一个样本,被采的概率是\(\frac{1}{m}\),不被采的概率是\(1-\frac{1}{m}\),如果m次采样都没有被采中的概率是\((1-\frac{1}{m})^m\),当\(m\to\infty\)时,\((1-\frac{1}{m})^m\to\frac{1}{e}\simeq0.368\),也就是说,在每轮采样中,大绝36.8%的样本没有被采中。这此没有参与拟合的数据,可以提高模型的泛化能力。

bagging应用

bagging常用于决策树和这神经网络。

bagging决策策略

常用的策略是平均法和投票法

随机森林

随机森林Random Forest(RF)是bagging算法思想的进化版本。

随机森林使用了CART决策树作为弱学习器,RF对决策树的建立进行了改进。

RF对决策树的改进

对于普通的决策树,我们会在节点上所有n个样本特征中选择一个最优的特征来做决策树的左右子树划分。但对于RF算法,只选择节点上一部分特征假设为\(n_{sub}\),然后在随机选择的特征中,选择一个最优的特征进行左右子树的划分,增强模型的泛化能力。

随机森林RF的应用

随机森林RF在实际应用中有良好的特性,基于RF有很多推广。如extra trees、Totally Random Trees Embedding、Isolation Forest

随机森林总结

主要优点:

  1. 训练可以高度并行
  2. 随机特征划分,在样本维度很高时,仍然能高效训练
  3. 训练完成后,可以给出各特征的重要性
  4. 随机采样,模型方差小,泛化能力强
  5. 对于Boosting系列的adaboost和GBDT,RF实现更简单。
  6. 对部分特征缺失不敏感

主要缺点:

  1. 在某些噪声较大的样本集上,RF容易过拟合。
  2. 取值划分较多的特征容易对RF决策产生更大的影响,从而影响模型效果。

sklearn随机森林RF使用

类库

from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import RandomForestRegressor

参数

  1. n_estimators:弱学习器迭代次数
  2. oob_score:是否采用袋外样本评估模型
  3. criterion:CART树对特征的评价标准

实例

rf = RandomForestClassifier(oob_score=True,random_state=10)
rf.fit(x,y)

使用GridSearchCV交叉验证调参

param_test1 = {'n_estimators': range(20, 81, 10)}
gs2 = GridSearchCV(estimator=RandomForestClassifier(random_state=10),
                   param_grid=param_test1,scoring='roc_auc',cv=5)