【机器学习与实战】分类与聚类算法:集成学习
一、什么是集成学习
集成学习是通过建立多个模型来解决单一问题的机器学习策略。它的工作原理是生成多个学习器/模型,各自独立地学习和作出预测,结合了多个学习器的预测结果,以提供一个更准确、更稳定的最终预测模型。
集成学习的核心思想是通过多个模型的综合考虑来减少单一模型欠拟合、过拟合或不稳定性的问题。
二、集成学习类型
1、Bagging(Bootstrap Aggregating):
- Bagging 方法是生成多个子数据集,然后用每个子数据集独立地训练模型,最后将所有模型的预测结果通过等权投票进行结合得到最终预测结果。Bagging 方法的目标是通过多个模型融合提高模型的稳定性和准确性。
- Bagging 的基本工作流程:
- 样本生成:从训练数据集中进行随机有放回地抽样来生成多个同样大小的子数据集。这种抽样的方法称为自助抽样法(Bootstrap sampling)。
- 基学习器训练:对于每个子数据集,使用同一种算法独立地训练一个基模型。
- 预测聚合:对于新的、未见过的数据,输入每个基模型进行预测,然后,通过平均(回归问题)或投票(分类问题)结合基模型的预测结果。
- 随机森林(Random Forest)就是一种典型的基于 Bagging 的集成方法。
2、Boosting
-
Boosting 方法是一种结合多个弱学习器来创建一个强学习器的集成学习方法。
-
Boosting 的基本工作原理和流程如下:
-
权重初始化:为每个训练样本初始化一个权重,开始时所有样本的权重都是相等的。
-
按序训练基模型
:
- 使用当前的权重分布对基模型进行训练。
- 计算基模型的预测误差,根据误差对基模型计算一个权重。
- 调整样本权重,对于被错误分类的样本,增加其权重,对于被正确分类的样本,降低其权重。
-
预测聚合:对于新的样本,输入所有基模型,通过加权投票或加权平均融合所有基模型的预测结果,产生最终的预测结果。
-
-
常见的 Boosting 算法有 AdaBoost、Gradient Boosting Decision Tree 等。
3、Stacking
- Stacking 方法是先训练多个不同类型的基模型,然后使用一个“元模型”(meta-model)来组合这些基础模型的预测结果,以得到一个最终预测。与 Bagging 和 Boosting 最大的区别是,Stacking 使用一个元模型(也称为二级模型)来结合基模型的预测。
- Stacking 的工作流程是:
- 基模型训练:首先,使用训练数据训练多个不同的基模型。这些模型可以是决策树、支持向量机、神经网络等。
- 预测生成:使用基模型对验证集或留出集进行预测。这些预测被称为“元特征”或“第二级特征”。
- 元模型训练:使用元特征作为输入,训练一个元模型。元模型的任务是学习如何最佳地结合基模型的预测结果。
- 预测:对于新的、未见过的数据,首先使用基模型生成预测(元特征),然后使用元模型进行最终预测。
- 优点:
- Stacking 能够结合多个模型的优点,通常可以达到比单一模型更好的预测性能。
- Stacking 可以结合不同种类的模型,使得整体模型能够捕捉数据中的复杂模式。
- 缺点:
- Stacking 模型的复杂性较高,可能需要更多的计算资源和时间。
- 有过拟合的风险,特别是当基学习器数量很多或元学习器过于复杂时。
三、集成学习的优缺点
1、优点:
- 提高模型的准确性。
- 减少过拟合。
- 增加模型的稳定性。
只要单分类器的表现不太差,集成学习的结果总是要好于单分类器的。
2、缺点:
- 计算复杂性增加。
- 可解释性减少。
集成学习广泛应用于各种机器学习任务,包括分类、回归、推荐系统等。