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
随机森林总结
主要优点:
- 训练可以高度并行
- 随机特征划分,在样本维度很高时,仍然能高效训练
- 训练完成后,可以给出各特征的重要性
- 随机采样,模型方差小,泛化能力强
- 对于Boosting系列的adaboost和GBDT,RF实现更简单。
- 对部分特征缺失不敏感
主要缺点:
- 在某些噪声较大的样本集上,RF容易过拟合。
- 取值划分较多的特征容易对RF决策产生更大的影响,从而影响模型效果。
sklearn随机森林RF使用
类库
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import RandomForestRegressor
参数
- n_estimators:弱学习器迭代次数
- oob_score:是否采用袋外样本评估模型
- 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)