数据挖掘
在数据挖掘中,单一一种模型的预测效果容易出现欠拟合或过拟合的现象,所以一般来说,我们都会将多个不同的模型(或同类模型的不同实例)组合起来,共同完成预测或分类任务,从而提升整体的准确率、稳定性和泛化能力,这种技术叫做集成方法,一般分为:
-
并行集成(如 Bagging):多个模型独立训练,最后结果投票或平均。
-
串行集成(如 Boosting):每个模型依赖前一个模型的结果,逐步纠正错误。
Bagging
-
原理:通过自主采样法(Bootstrap),从原始数据集中有放回地随机采样,生成多个不同的数据子集。在每个子集上训练一个独立的基学习器(如决策树),最后通过投票(分类)或平均(回归)的方式融合各模型的预测结果
-
优点:降低方差(通过多模型平均,减少单一模型的过拟合风险);并行训练(各模型互不影响,可并行加速)
-
缺点:不能显著降低偏差(如果基学习器本身偏差很大,Bagging效果有限);对弱模型要求较高(基学习器需有一定表现,对错误率有要求)
-
典型算法:随机森林
随机森林
-
原理:集成大量决策树,每棵树都在不同的自助采样子集上训练,并且在每个节点分裂时,随机选择部分特征进行分裂(增加多样性),最终通过投票(分类)或平均(回归)融合所有树的结果
-
优点:抗过拟合能力强(多样性高,泛化能力好);对特征选择不敏感(自动评估特征重要性);易于并行训练(各树独立训练)
-
缺点:模型较大,推理速度慢();对极端噪声数据敏感(如果数据质量很差,效果有限)
-
应用:分类,回归,特征选择,异常检测等
Boosting
-
原理:通过串行训练(每一轮训练都关注前一轮模型预测错误的样本,提升这些样本的权重),从而让后续模型更关注难以预测的样本,最终将所有模型加权融合,形成强学习器
-
优点:降低偏差(通过不断纠正错误,提升整体模型的准确率);适合弱模型(即使基学习器很弱,Boosting也能提升性能);
-
缺点:容易过拟合(如果模型太复杂或迭代次数太多,可能过拟合);训练串行,速度较慢(每一轮依赖前一轮结果,难以并行)
-
典型算法:AdaBoost
AdaBoost
- 原理:通过组合多个弱分类器,最终形成一个强分类器。流程是:
-
初始化样本权重:一开始,每个训练样本的权重是一样的(比如都设为1/N,N是样本总数)。
-
训练第一个弱分类器:用当前的样本权重训练一个弱分类器,弱分类器不是针对某个样本,而是用所有样本训练出来的一个模型。
-
计算弱分类器的错误率:用弱分类器对所有样本进行预测,统计哪些样本被分错了,错误率是"被分错的样本权重之和",因为要让难分的样本权重变大,让下一个分类器更关注这些样本。
-
计算弱分类器的权重:错误率越低,弱分类器的权重越高(它更可靠),这个权重会在最终组合时决定每个弱分类器的"话语权"。
-
更新训练样本权重:被分错的样本权重会增加(让下一个弱分类器更关注这些难分的样本),被分对的样本权重会减少。
-
重复2-5:用新的样本权重训练下一个弱分类器,一般会训练几十到几百个弱分类器。
-
最终组合所有弱分类器:用每个弱分类器的权重加权投票,得到最终的强分类器。
-
优点:提升弱分类器性能(能将多个弱分类器组合成一个强分类器,显著提升准确率);无需复杂参数调优(对弱分类器要求低,常用决策树桩即可);鲁棒性强(对部分噪声和异常数据有一定容忍度);繁华能力好(在许多实际任务中表现优异,避免过拟合);
-
缺点:对噪声敏感(如果数据中有大量异常点,AdaBoost会不断提升这些点的权重,导致过拟合);对弱分类器依赖较大(弱分类器必须比随机猜测略好,否则整体效果不佳);训练时间较长(需要多轮迭代训练,计算量较大);不适合高维稀疏数据(在文本分类等高维场景下,效果不如其他集成方法(如随机森林))
-
应用:二类分,图像识别,医学诊断,金融封控,文本分类