在机器学习领域,集成学习技术是一种通过结合多个学习算法或模型来创建一个最优预测模型的方法。这种模型的性能通常优于单独使用的基础学习器。集成学习的应用还包括特征选择、数据融合等。集成技术主要可以分为Bagging、Boosting和Stacking三种类型。
Bagging技术主要应用于监督学习问题中,它包括两个步骤:自助采样(bootstrapping)和聚合(aggregation)。自助采样是一种随机抽样方法,通过替换过程从数据中抽取样本。在Bagging的第一步中,随机数据样本被输入到每个基础学习器中。然后,基础学习算法在样本上运行以完成这一过程。在聚合步骤中,基础学习器的输出被组合起来,目的是在很大程度上提高准确性并减少方差。例如,在随机森林中,来自决策树(基础学习器)的预测是并行进行的。在回归问题中,这些预测被平均以给出最终预测;在分类问题中,选择众数作为预测类别。
Boosting是一种集成方法,每个预测器从前面的预测器错误中学习,以在未来做出更好的预测。该技术结合了几个弱基础学习器,它们以序列方式排列(如图1所示),使得弱学习器从前面弱学习器的错误中学习,以创建一个更好的预测模型。因此,通过显著提高模型的可预测性,形成了一个强大的学习器。例如,XGBoost、AdaBoost等。
与Bagging和Boosting使用同质弱学习器进行集成不同,Stacking通常考虑异质弱学习器,它们并行学习,并通过训练一个元学习器来输出基于不同弱学习器预测的预测。元学习器将预测作为特征输入,目标是数据D中的地面真实值(如图2所示),它尝试学习如何最好地结合输入预测以做出更好的输出预测。
在平均集成例如随机森林中,模型结合了多个训练模型的预测。这种方法的一个限制是,每个模型对集成预测的贡献是相同的,无论模型的性能如何。
另一种方法是加权平均集成,它根据对它们在提供最佳预测中的贡献的信任度来权衡每个集成成员的贡献。加权平均集成提供了对模型平均集成的改进。
# 假设已经有了训练好的弱学习器和测试数据
# 弱学习器的预测结果
predictions = {
'DecisionTree': decision_tree_predictions,
'RandomForest': random_forest_predictions,
'KNeighbors': k_neighbors_predictions,
'XGBoost': xgboost_predictions
}
# 将弱学习器的预测结果作为特征输入给元学习器
stacked_predictions = meta_learner.predict(predictions)