社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【机器学习】常见的三种集成学习框架

机器学习初学者 • 2 月前 • 119 次点击  

1.1 集成学习概述

在机器学习的监督学习算法中,使用集成学习往往能提高分类效果。集成学习的思想就是把多个弱分类器组合一个更好更全面的强分类器,还可以在一定程度上减少过拟合,即:集成学习如果其中某一个弱分类器预测错误,其他的弱分类器也可以将错误纠正回来,这样最终提高分类效果,也就是说,集成学习的效果通常比传统的机器学习模型要好。

Hansen和Salamon通过研究,发现多个分类器组合的结果比单个分类器的结果要高;Schapire用实验证明,弱分类器通过集成,能提升变为强分类器。

那么,为什么集成学习会好于单个学习器呢?主要原因如下:

(1) 训练样本可能无法选择出最好的单个学习器,由于没法选择出最好的学习器,所以干脆结合起来一起用;

(2) 假设能找到最好的学习器,但由于算法运算的限制无法找到最优解,只能找到次优解,采用集成学习可以弥补算法的不足;

(3) 可能算法无法得到最优解,而集成学习能够得到近似解。比如说最优解是一条对角线,而单个决策树得到的结果只能是平行于坐标轴的,但是集成学习可以去拟合这条对角线。

常见的集成学习框架有三种:Bagging,Boosting 和 Stacking。三种集成学习框架在基学习器的产生和综合结果的方式上会有些区别,我们先做下简单的介绍。

1.1.1 Bagging

Bagging(装袋法)全称叫 Bootstrap aggregating,通过从数据集随机抽取数据来训练多个独立的功能较弱的分类器,最终分类结果是由各弱分类器以一定的方式投票决定的,各弱分类器在投票时是平等的,即通过组合多个弱分类器来构成一个功能强大的分类器,由于各分类器是独立的,弱分类器的训练数据也是相互独立的,所以,对各弱分类器的训练可以通过并行方式完成,Bagging方法的工作流程如图1-1所示。随机森林(Random Forest,RF)就是一种Bagging模型。


图1-1 Bagging工作流程

1.1.2 Boosting

Boosting(提升法)训练过程为阶梯状,基模型的训练是有顺序的,每个基模型都会在前一个基模型学习的基础上进行学习,最终综合所有基模型的预测值产生最终的预测结果,用的比较多的综合方式为加权法。

简单地说,Boosting由多个弱分类器组成,最后的分类结果是由各弱分类器按不同的权重以一定的方式投票决定的,各弱分类器在投票时的权重根据其分类性能的好坏各不相同,性能好,其权重就大,性能差,其权重就小,弱分类器每次训练时的数据集是相同的,但是每次训练时,数据集中每个样本的权重是不同的,每次训练之前,根据分类器上次对其分类的结果对其进行权重的调整,如果上次分类器对该样本分类正确,即降低其权重,如果分类错误,则增加其权重。因为训练集中各实例权重值需要由前一轮弱分类器的分类结果来决定,所以对弱分类器的训练只能通过串行方式进行,Boosting方法的工作流程如图10-2所示。通过这种方式,把弱分类器逐渐训练成强分类器。


图1-2 Boosting工作流程

1.1.3 Stacking

Stacking 是先用全部数据训练好基模型,然后每个基模型都对每个训练样本进行的预测,其预测值将作为训练样本的特征值,最终会得到新的训练样本,然后基于新的训练样本进行训练得到模型,然后得到最终预测结果。Stacking方法的工作流程如图10-3所示。


图1-3 Stacking工作流程

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/195868