随机森林 RandomForest
1、集成学习
集成学习(ensemble learning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等。在现在的各种算法竞赛中,随机森林,梯度提升树(GBDT),Xgboost等集成
算法的身影也随处可见。
更多关于集成学习的概念和公式推导这里不过多阐释,有兴趣可看这篇博客刘建平集成学习博客
1.1 Sklearn中的集成算法模块
类 | 类功能 |
---|---|
ensemble.AdaBoostClassifier |
AdaBoost分类 |
ensemble.AdaBoostRegressor |
Adaboost回归 |
ensemble.BaggingClassifier |
装袋分类器 |
ensemble.BaggingRegressor |
装袋回归器 |
ensemble.ExtraTreesClassifier |
Extra-trees分类(超树,极端随机树) |
ensemble.ExtraTreesRegressor |
Extra-trees回归 |
ensemble.GradientBoostingClassifier |
梯度提升分类 |
ensemble.GradientBoostingRegressor |
梯度提升回归 |
ensemble.IsolationForest |
隔离森林(用于检测异常值) |
ensemble.RandomForestClassifier |
随机森林分类 |
ensemble.RandomForestRegressor |
随机森林回归 |
ensemble.RandomTreesEmbedding |
完全随机树的集成 |
ensemble.VotingClassifier |
用于不合适估算器的软投票/多数规则分类器(如集成SVM) |
ensemble.HistGradientBoostingRegressor |
基于直方图的梯度增强回归树 |
ensemble.HistGradientBoostingClassifier |
基于直方图的梯度增强分类树 |
2、随机森林 RandomForest
2.1 优缺点分析
RF的主要优点有:
- 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。个人觉得这是的最主要的优点。
- 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
- 在训练后,可以给出各个特征对于输出的重要性。
- 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
- 对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
- 对部分特征缺失不敏感。
RF的主要缺点有:
- 某些噪音比较大的样本集上,RF模型容易陷入过拟合。
- 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
2.2 分类/回归
2.2.1 RandomForestClassifier
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
)
2.2.2RandomForestRegressor
sklearn.ensemble.Rando