Bagging 方法
本篇博客的关于随机森林的优缺点参考了https://blog.csdn.net/zhongjunlang/article/details/79488955
来自上篇投票法的启示,我们想要得到泛化性较强的集成,集成中的分类器应尽可能的相互独立。这个独立可能显示任务中很难做到,于是人们设法给基学习器较大的差异,那么怎么做呢?一种可能的方法就是对基分类器进行采样,让他产生不同的数据子集,再从每一个数据子集中训练出一个基分类器。同时我们还希望基分类器个体的效果不能太差,如果我们采样出来的每个分类器都完全不同,这就让每一个基分类只是用了一小部分数据集,难以充分利用数据集中的信息,所以我们采用了bostrap有放回的采样方法来分割实例。
集成算法中,bagging 方法会在原始训练集的随机子集上构建一类黑盒估计器的多个实例,然后把这些估计器的预测结果结合起来形成最终的预测结果。 该方法通过在构建模型的过程中引入随机性,来减少基估计器的方差(例如,决策树)。 在多数情况下,bagging 方法提供了一种非常简单的方式来对单一模型进行改进,而无需修改背后的算法。 因为 bagging 方法可以减小过拟合,所以通常在强分类器和复杂模型上使用时表现的很好(例如,完全决策树,fully developed decision trees),相比之下 boosting 方法则在弱模型上表现更好(例如,浅层决策树,shallow decision trees)。
我们用sklearn去实现 bagging 方法做的时候
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
bag_clf = BaggingClassifier(
DecisionTreeClassifier(random_state=42), n_estimators=500,
max_samples=100, bootstrap=True, n_jobs=-1, random_state=42)
bag_clf.fit(X_train, y_train)
y_pred = bag_clf.predict(X