IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习——集成学习算法(Adaboost、随机森林) -> 正文阅读

[人工智能]机器学习——集成学习算法(Adaboost、随机森林)

什么是集成学习

如现在你要买一台电脑,相信你大概率不会只听销售员的介绍,就下单的,你可能会询问一下身边的朋友,或是上网查阅有关电脑的品牌、配置、价格等问题。简单说,就是不会单一的做出决定,而是或经过都方面的意见与建议。
这便是集成算法的通俗理解,集成模型结合多个模型的决策,以提高整体性能。

在这里插入图片描述
对于训练集数据,我们通过训练多个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器。也就是说,集成学习有两个主要的问题需要解决:第一是如何得到若干个个体学习器;第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。

如何得到多个个体学习器

1、同质个体学习器:所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。
2、异质个体学习器:所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。

目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是 CART 决策树和神经网络

同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类:
1、第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是 boosting 系列算法。
2、第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是 bagging 和随机森林(Random Forest)系列算法。

集成学习常用算法

目前的集成学习方法大致可分为两大类,即个体学习器间存在强依赖关系、必须串行生成的序列化方法以及个体学习器间不存在强依赖关系、可同时生成的并行化方法;前者的代表是 Boosting ,后者的代表是 Bagging随机森林 (Random Forest)。(注意

Bagging

并行式集成学习方法中最著名的代表,它是基于自助采样法进行模型训练和模型评估的方法。基本思想为在分类问题中,将若干个弱分类器的分类结果进行投票选择,从而组成一个强分类器。
它的基本流程是:通过 n 次自助采样,采样出n个与原始样本集规模一样的训练集,然后基于n个训练集学习到n个个体学习器,再将这些基学习器进行结合,并用包外估计进行模型评估。所以可以从自助采样学习器结合包外估计这三个步骤来理解 Bagging 。

自助采样

通过一次自助采样,对于包含 m 个样本的原始数据集,我们可以得到包含 m 个样本的训练集,训练集与原始数据集大小一致。这样做有什么好处呢?
在集成学习中,如果希望个体学习器能够形成泛化性能较强的集成,那么一方面要求每个个体学习器自身的效果比较好,另一方面要求个体学习器之间尽可能具有较大的差异。而通过自助采样,一方面训练集的样本规模和原始数据集的大小一致,个体学习器能够进行比较充分的学习,性能比较好。另一方面多次自助采样后产生的多个训练集是不同的(尽管也有重叠的样本),因此从每个训练集中学习到的个体学习器之间有比较大的差异,我们可以把这种机制叫做样本扰动。基于这两点,Bagging 集成的泛化性能是比较强的。

学习器结合

对学习好的 T 个基学习器进行结合,其实就是对预测输出进行结合,在分类任务中,Bagging 使用简单投票法,在回归任务中使用简单平均法。如果在分类预测时出现两个类获得的票数相同,那么可以随机地二选一,或者进一步考察基学习器投票的置信度来确定。

包外估计

通过自助采样得到的训练集,对其去重后得到的样本量约为原始数据集的 63.2% ,那么剩下约 36.8% 的样本正好可以用来作为验证集,评估模型的泛化误差,这种评估方法就叫做包外估计。
具体怎么得到 Bagging 的泛化误差的包外估计呢?对于某一个样本 (xi, yi),它大约会被 63.2% 的基学习器进行训练,而大约 36.8% 的基学习器未使用它进行学习。于是就用这 36.8% 的基学习器对这个样本进行预测,并把预测结果结合起来,与真实的标记 yi 进行对比,如果预测错误,就把对比结果记为 1 ,预测正确,则记为 0 。对原始样本集 D 中的所有样本( m 个)都进行这种操作,并把对比结果累加起来(误分类样本个数),再除以样本总数,就得到了泛化误差的包外估计。

好,理解以上这三点,差不多也就理解了 Bagging 的思想。再补充以下几点:
一是由于 Bagging 属于并行集成,所以训练一个 Bagging 集成与直接使用基学习算法训练一个基学习器的复杂度同阶,这表明 Bagging 是一个非常高效的集成学习算法。

二是与标准的 AdaBoost 只适用于二分类任务不同,Bagging 可以不经调整就用于多分类和回归任务。

三是从偏差-方差分解的角度来看,与 GBDT 关注于降低偏差不同,Bagging 主要关注降低方差,因此在不剪枝决策树、神经网络等容易受到样本扰动的学习器上效果更明显。

随机森林

这以决策树为基学习器的 Bagging 集成算法,是Bagging 集成算法中性能最强的。要理解随机森林,就要从它的名称入手,拆成“随机”和“森林”两个词,分别来理解。

首先森林两个字是非常好理解的,随机森林的基学习器是决策树,成百上千棵决策树就构成了一个森林,这是一种形象的说法。学习到多棵决策树之后,再按照上面所写的 Bagging 中基学习器的结合方法,就可以得到分类或回归的最终预测结果

再来理解随机二字。随机森林中运用了两个“随机”,一是样本随机,也就是一般的 Bagging 集成中通过自助采样所得到的效果,也叫做样本扰动,这体现了随机森林继承性的一面。二是特征随机,也叫属性扰动,体现了随机森林创新的一面。假设训练数据集中的样本有 d 个属性(特征),构成一个属性集合,那么随机森林在构建一棵决策树的过程中,在每一个结点上选择属性进行分裂时,都先从属性集合中随机选择一个包含 k 个属性的属性子集( k<d ),再从这个子集中选择一个最优属性进行分裂。回想一下传统的决策树构建过程,在每一个结点上都是从完整的属性集合(包含 d 个属性)中,选择最佳的属性进行分裂。一般情况下,推荐 k 的值取。

所以随机森林中每棵树生成的规则是:

1、对于包含 m 个样本的原始数据集,通过自助采样得到同样包含 m 个样本的训练集;
2、每个样本有 d 个特征,那么选择一个小于 d 的整数 k ,随机地从 d 个特征中选择 k 个特征,然后决策树在每个结点上进行分裂时,从 k 个特征中选择最优的;
3、每棵树都生长到最大深度,不进行剪枝。

随机森林只是对 Bagging 做了一个小改动,与一般 Bagging 集成中基学习器的“多样性”仅来自于样本扰动不同,随机森林再加入了属性扰动的机制。

其实从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N 棵树会有 N 个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别,指定为最终的输出,这就是一种最简单的 Bagging 思想。集成学习通过建立几个模型的组合,来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。
随机森林是集成学习的一个子类,它依靠于决策树的投票选择,来决定最后的分类结果。随机森林基本流程如下:

1)从样本集中有放回随机采样选出 n 个样本;
2)从所有特征中随机选择 k 个特征,对选出的样本利用这些特征建立决策树(一般是CART,也可是别的或混合使用);
3)重复以上两步 m 次,即生成 m 棵决策树,形成随机森林;
4)对于新数据,经过每棵树决策,最后投票确认分到哪一类。

Adaboost

Adaboost 是属于机器学习里面的监督学习,是一个二分类模型。它是一种迭代算法,其核心思想是针对同一个训练集,训练不同的分类器(弱分类器) ,然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)
其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集,送给下层分类器进行训练,最后将每次训练得到的分类器融合起来,作为最后的决策分类器。使用 Adaboost 分类器可以排除一些不必要的训练数据特征,并将重心放在关键的训练数据上面。

Boosting

Boosting 基于这样一种思想:对于一个复杂任务来说,将多个专家的判断进行适当的综合所得出的判断,要比其中任何一个专家单独的判断好。
在 PAC 学习的框架中,一个概念,如果存在一个多项式的学习算法能够学习它,并且正确率很高,那么就称这个概念是强可学习的;一个概念,如果存在一个多项式的学习算法能够学习它,但是学习的正确率仅比随机猜测略好,那么就称这个概念是弱可学习的。
在学习中,如果已经发现了弱学习算法,那么能否将它提升为强学习算法。大家知道,发现弱学习算法通常要比发现强学习算法容易得多。那么如何具体实施提升,便成为开发提升方法时所要解决的问题。

与 bagging 不同,boosting 采用的是一个串行训练的方法。首先,它训练出一个弱分类器,然后在此基础上,再训练出一个稍好点的弱分类器,以此类推,不断的训练出多个弱分类器,最终再将这些分类器相结合,这就是 boosting 的基本思想。

Adaboost算法原理

对提升方法来说,有两个问题需要回答:一是在每一轮如何改变训练数据的权值或概率分布;二是如何将弱分类器组合成一个强分类器。
第 1 个问题,Adaboost 的做法是:提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值。这样一来,那些没有得到正确分类的数据,由于其权值的加大而受到后一轮的弱分类器的更大关注。
第 2 个问题,即弱分类器的组合,Adaboost采取加权多数表决的方法,加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。

注意

Bagging + 决策树 = 随机森林
AdaBoost + 决策树 = boosting

来源:头歌

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:24:41  更:2022-06-18 23:27:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:39:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码