Bagging
(Bootstrap aggregating)是一种基于自助采样法(bootstrap sampling)的集成学习方法,它通过从训练集中有放回地采样生成多个子集,每个子集用于训练一个独立的个体学习器,然后将所有个体学习器的预测结果进行平均或投票,得到最终的集成结果。Bagging的目的是减少模型的方差,提高模型的泛化性能,常见的Bagging算法包括随机森林(Random Forest)。
Boosting
是一种迭代的集成学习方法,它通过逐步训练个体学习器,并根据其表现对样本权重进行调整,以使得难以分类的样本得到更多关注,从而提高模型的精度。Boosting算法的核心思想是通过多个弱学习器的组合,得到一个强学习器,常见的Boosting算法包括AdaBoost、GBDT(Gradient Boosting Decision Tree)和XGBoost。
区别
它们的不同之处在于个体学习器的训练方式和预测结果的组合方法,Bagging注重降低模型的方差,Boosting注重降低模型的偏差:
在机器学习中,模型的方差(variance)指的是模型的预测结果对于训练数据的变化敏感程度,即模型在不同的训练数据集上产生的预测结果的差异大小。如果一个模型具有高方差,说明它对于训练数据的过拟合程度较高,容易出现过拟合现象,但在训练集上表现良好,而在测试集上的表现较差。
Bagging算法可以降低模型的方差,原因在于通过对数据进行自助采样,Bagging算法生成了多个不同的训练集,并在每个训练集上训练一个弱学习器。这些弱学习器是独立的,由于每个弱学习器对应的训练集是不同的,因此每个弱学习器都具有不同的误差和方差。当这些弱学习器的结果通过平均或投票等方式结合在一起时,弱学习器之间的方差会互相抵消,从而得到一个更加稳定的集成模型。因此,Bagging算法可以降低整体模型的方差,提高模型的泛化能力。
Bagging算法不能解决模型的偏差问题,因为弱学习器之间的误差不会相互抵消。
Boosting算法通过迭代训练弱学习器,每次都会调整训练数据的权重,并让弱学习器关注上一轮训练中分类错误的样本,从而降低整体模型的偏差,提高模型的准确性。