社区所有版块导航
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学习  »  机器学习算法

干货|机器学习算法之集成学习初探

小白学视觉 • 3 年前 • 174 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

一、引子


集成学习作为如今大数据比赛中最为常用的学习算法,可以说是所有有进行数据挖掘工作的意向的pong友们都应该比较关注的。实际上,我们若单独称其为一种“模型”类别是实有不妥的,因为这种学习方式本质上,是通过集成单个模型来实现的多模型学习,因此,它更应该被称为是一种学习的“思路”而不是一种“模型”。

下面,我们就开始正式介绍我们的新朋友吧。

二、个体与集成

集成学习(ensemble learning)通过构建并结合多个学习学习器来完成学习任务,有时也被称为多分类器系统(multi-classifier system)、基于委员会的学习(committee-based learning)


我们可以先用一幅图来探讨一下集成学习的一般结构。

图中我们可以看出,集成学习先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来。通常来说,很多现有的学习算法都足矣从训练数据中产生一个个体学习器,C4.5决策树,BP神经网络等等。

一般来说,我们会将这种由个体学习器集成的算法分为两类,一类是同质(homogeneous)的,即集成中仅包含同种类型的额个体学习器,像“决策树集成”中就仅包含决策树,“神经网络集成”中就全是神经网络。同质集成中的个体学习器又称为基学习器(base learner),相应的学习算法也被称为基学习算法(base learning algorithm)。

第二类就是异质(heterogenous)的,相对同质,异质集成中的个体学习其就是由不同的学习算法生成的,这是,个体学习器就被称为组件学习器(component learner)

三、性能评估

考虑一个简单的例子,在二分类任务中,假定三个分类器在三个测试样本上的表现入下图所示,其中√代表分类器分类的结果与实际情况符合,即分类器分类正确,×则代表分类器分类错误,集成学习的结果则由投票法(voting)决出(即“少数服从多数”):

可以看出,在a图中每个分类器只有66.6%的精度的时候,集成学习达到了100%的精度;在b图中,三个分类器相同导致集成性能没有提高;c图中由于每个分类器的精度只有33.3%导致集成学习的效果变得更糟。

由此我们可以看出来,集成学习中对个体学习器的要求应该是“好而不同”,即既满足准确性,又满足多样性(diversity),也即是说,学习器既不能太坏,而且学习器与学习器之间也要有差异。

例子虽然具体但未必具有普适性,我们可以做一个稍微简单的证明:

考虑二分类问题y{1,+1}和真实函数f,假定基分类器的错误率为ε,即对每个基分类器hi

假设集成通过简单投票法结合T个基分类器,若有超过半数的基分类器正确,则集成分类正确:

假设基分类器的错误率相互独立(注意到这是一个相当强的假设),则由Hoeffding不等式可知,集成的错误率为:

Hoeffding不等式(霍弗丁不等式)是由Wassily Hoeffding在1963年提出并证明的不等式,它的意义是提供一个上限,用于限定随机变量偏离其期望值的概率。

我们这里不探讨Hoeffding不等式的来龙去脉,就简单的介绍一下,上面那个表达式是怎么由Hoeffding不等式推出来的:


我们假设,抛一枚硬币其正面朝上的概率为:

那么对δ>0,k=(pδ)n,有Hoeffding不等式:

我们的目标是推导出如下式子:

那么,我们知道P(hi(x)f(x))=ϵH(n)表示硬币在n次抛掷中朝上的概率,因此P(H(n)k)就是这个事件的分布函数。由H (x)的表达式我们有:

记得我们假设每个基分类器的错误率为ϵ并且相互独立,这么一来,超过50%的分类器分错一个事件的概率为:

T是分类器总数。由此我们可以得到

再由Hoeffding不等式得到:

从而推导得出:

式子得证。


这个式子的意义在于说明,随着集成中个体分类器数目T的增大,集成的错误率将指数级下降从而最终趋于0(这里有一个前置条件是个体分类器的错误率不能大于50%)。

但有一个问题在于,我们曾假设各个分类器之间的错误率是相互独立的,而在实际任务中个体学习器都是被视为解决同一个问题而训练出来的,这也就意味着它们之间是不可能相互独立的。换句话说,个体学习器的“准确性”和“多样性”本身也是存在冲突的。因此,在一般情况下,个体学习器的准确性如果很高,那么想要增加个体学习器的多样性就必然需要在其准确性上做出一定的牺牲,反之亦然。因此,如何产生“好而不同”的个体学习器,便成为了集成学习研究的核心。


四、总览


根据个体学习器的生成方式,周志华教授将目前集成学习方法分为了两大类,一类是个体学习器之间存在强依赖关系、必须串行生成的序列化方法,这类方法的代表为提升(Boosting)方法;另一类是个体学习器间不存在强依赖关系,可同时生成的并行化方法,这类方法的代表为Bagging随机森林(Random Forest)。

这一篇简短的介绍就先到这里,作为集成学习初探,我们就先简单的介绍一下集成学习的概念,以及集成学习探索的方向,而之后我们关于集成学习的内容,就是对于这两大类以及其中比较具有代表性的集成学习模型的介绍,这其中包括在目前大数据处理中都非常常用的几个经典模型。

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇







    
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/135757
 
174 次点击