AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一

这篇具有很好参考价值的文章主要介绍了AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️
🐴作者:秋无之地

🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。

🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、留言💬、关注🤝,关注必回关

上一篇文章已经跟大家介绍过《PageRank(下):数据分析 | 数据挖掘 | 十大算法之一》,相信大家对PageRank(下)都有一个基本的认识。下面我讲一下,AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一

一、AdaBoost背景

在数据挖掘中,分类算法可以说是核心算法,其中 AdaBoost 算法与随机森林算法一样都属于分类算法中的集成算法。

集成的含义就是集思广益,博取众长,当我们做决定的时候,我们先听取多个专家的意见,再做决定。集成算法通常有两种方式,分别是投票选举(bagging)和再学习(boosting)。投票选举的场景类似把专家召集到一个会议桌前,当做一个决定的时候,让 K 个专家(K 个模型)分别进行分类,然后选择出现次数最多的那个类作为最终的分类结果。再学习相当于把 K 个专家(K 个分类器)进行加权融合,形成一个新的超级专家(强分类器),让这个超级专家做判断。

所以你能看出来,投票选举和再学习还是有区别的。Boosting 的含义是提升,它的作用是每一次训练的时候都对上一次的训练进行改进提升,在训练的过程中这 K 个“专家”之间是有依赖性的,当引入第 K 个“专家”(第 K 个分类器)的时候,实际上是对前 K-1 个专家的优化。而 bagging 在做投票选举的时候可以并行计算,也就是 K 个“专家”在做判断的时候是相互独立的,不存在依赖性。

二、AdaBoost 的工作原理

了解了集成算法的两种模式之后,我们来看下今天要讲的 AdaBoost 算法。

AdaBoost 的英文全称是 Adaptive Boosting,中文含义是自适应提升算法。它由 Freund 等人于 1995 年提出,是对 Boosting 算法的一种实现。

什么是 Boosting 算法呢?Boosting 算法是集成算法中的一种,同时也是一类算法的总称。这类算法通过训练多个弱分类器,将它们组合成一个强分类器,也就是我们俗话说的“三个臭皮匠,顶个诸葛亮”。为什么要这么做呢?因为臭皮匠好训练,诸葛亮却不好求。因此要打造一个诸葛亮,最好的方式就是训练多个臭皮匠,然后让这些臭皮匠组合起来,这样往往可以得到很好的效果。这就是 Boosting 算法的原理。

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

我可以用上面的图来表示最终得到的强分类器,你能看出它是通过一系列的弱分类器根据不同的权重组合而成的。

假设弱分类器为 Gi​(x),它在强分类器中的权重 αi​,那么就可以得出强分类器 f(x):

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

有了这个公式,为了求解强分类器,你会关注两个问题:

  1. 如何得到弱分类器,也就是在每次迭代训练的过程中,如何得到最优弱分类器?
  2. 每个弱分类器在强分类器中的权重是如何计算的?

我们先来看下第二个问题。实际上在一个由 K 个弱分类器中组成的强分类器中,如果弱分类器的分类效果好,那么权重应该比较大,如果弱分类器的分类效果一般,权重应该降低。所以我们需要基于这个弱分类器对样本的分类错误率来决定它的权重,用公式表示就是:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

其中 ei​ 代表第 i 个分类器的分类错误率。

然后我们再来看下第一个问题,如何在每次训练迭代的过程中选择最优的弱分类器?

实际上,AdaBoost 算法是通过改变样本的数据分布来实现的。AdaBoost 会判断每次训练的样本是否正确分类,对于正确分类的样本,降低它的权重,对于被错误分类的样本,增加它的权重。再基于上一次得到的分类准确率,来确定这次训练样本中每个样本的权重。然后将修改过权重的新数据集传递给下一层的分类器进行训练。这样做的好处就是,通过每一轮训练样本的动态权重,可以让训练的焦点集中到难分类的样本上,最终得到的弱分类器的组合更容易得到更高的分类准确率。

我们可以用 Dk+1​ 代表第 k+1 轮训练中,样本的权重集合,其中 Wk+1,1​ 代表第 k+1 轮中第一个样本的权重,以此类推 Wk+1,N​ 代表第 k+1 轮中第 N 个样本的权重,因此用公式表示为:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

第 k+1 轮中的样本权重,是根据该样本在第 k 轮的权重以及第 k 个分类器的准确率而定,具体的公式为:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

三、AdaBoost 算法示例

了解 AdaBoost 的工作原理之后,我们看一个例子,假设我有 10 个训练样本,如下所示:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

现在我希望通过 AdaBoost 构建一个强分类器。

该怎么做呢?按照上面的 AdaBoost 工作原理,我们来模拟一下。

首先在第一轮训练中,我们得到 10 个样本的权重为 1/10,即初始的 10 个样本权重一致,D1=(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1)。

假设我有 3 个基础分类器:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

我们可以知道分类器 f1 的错误率为 0.3,也就是 x 取值 6、7、8 时分类错误;分类器 f2 的错误率为 0.4,即 x 取值 0、1、2、9 时分类错误;分类器 f3 的错误率为 0.3,即 x 取值为 3、4、5 时分类错误。

这 3 个分类器中,f1、f3 分类器的错误率最低,因此我们选择 f1 或 f3 作为最优分类器,假设我们选 f1 分类器作为最优分类器,即第一轮训练得到:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

根据分类器权重公式得到:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

然后我们对下一轮的样本更新求权重值,代入 Wk+1,i​ 和 Dk+1​ 的公式,可以得到新的权重矩阵:D2=(0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.0715, 0.1666, 0.1666, 0.1666, 0.0715)。

在第二轮训练中,我们继续统计三个分类器的准确率,可以得到分类器 f1 的错误率为 0.1666*3,也就是 x 取值为 6、7、8 时分类错误。分类器 f2 的错误率为 0.0715*4,即 x 取值为 0、1、2、9 时分类错误。分类器 f3 的错误率为 0.0715*3,即 x 取值 3、4、5 时分类错误。

在这 3 个分类器中,f3 分类器的错误率最低,因此我们选择 f3 作为第二轮训练的最优分类器,即:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

根据分类器权重公式得到:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

同样,我们对下一轮的样本更新求权重值,代入 Wk+1,i​ 和 Dk+1​ 的公式,可以得到 D3=(0.0455,0.0455,0.0455,0.1667, 0.1667,0.01667,0.1060, 0.1060, 0.1060, 0.0455)。

在第三轮训练中,我们继续统计三个分类器的准确率,可以得到分类器 f1 的错误率为 0.1060*3,也就是 x 取值 6、7、8 时分类错误。分类器 f2 的错误率为 0.0455*4,即 x 取值为 0、1、2、9 时分类错误。分类器 f3 的错误率为 0.1667*3,即 x 取值 3、4、5 时分类错误。

在这 3 个分类器中,f2 分类器的错误率最低,因此我们选择 f2 作为第三轮训练的最优分类器,即:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

我们根据分类器权重公式得到:

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

假设我们只进行 3 轮的训练,选择 3 个弱分类器,组合成一个强分类器,那么最终的强分类器 G(x) = 0.4236G1(x) + 0.6496G2(x)+0.7514G3(x)。

实际上 AdaBoost 算法是一个框架,你可以指定任意的分类器,通常我们可以采用 CART 分类器作为弱分类器。通过上面这个示例的运算,你体会一下 AdaBoost 的计算流程即可。

四、总结

今天我给你讲了 AdaBoost 算法的原理,你可以把它理解为一种集成算法,通过训练不同的弱分类器,将这些弱分类器集成起来形成一个强分类器。在每一轮的训练中都会加入一个新的弱分类器,直到达到足够低的错误率或者达到指定的最大迭代次数为止。实际上每一次迭代都会引入一个新的弱分类器(这个分类器是每一次迭代中计算出来的,是新的分类器,不是事先准备好的)。

在弱分类器的集合中,你不必担心弱分类器太弱了。实际上它只需要比随机猜测的效果略好一些即可。如果随机猜测的准确率是 50% 的话,那么每个弱分类器的准确率只要大于 50% 就可用。AdaBoost 的强大在于迭代训练的机制,这样通过 K 个“臭皮匠”的组合也可以得到一个“诸葛亮”(强分类器)。

当然在每一轮的训练中,我们都需要从众多“臭皮匠”中选择一个拔尖的,也就是这一轮训练评比中的最优“臭皮匠”,对应的就是错误率最低的分类器。当然每一轮的样本的权重都会发生变化,这样做的目的是为了让之前错误分类的样本得到更多概率的重复训练机会。

同样的原理在我们的学习生活中也经常出现,比如善于利用错题本来提升学习效率和学习成绩。

AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一,数据分析,数据挖掘,数据分析,算法

版权声明

本文章版权归作者所有,未经作者允许禁止任何转载、采集,作者保留一切追究的权利。文章来源地址https://www.toymoban.com/news/detail-727496.html

到了这里,关于AdaBoost(上):数据分析 | 数据挖掘 | 十大算法之一的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据分析技能点-数据挖掘及入门

    在数字化的世界里,数据像是一种新的货币。它不仅推动了科技创新,还在塑造着我们的生活、工作和思维方式。但数据本身并不是目的,真正的价值在于如何从海量的数据中提炼有用的信息和知识。这正是数据挖掘发挥作用的地方。 数据挖掘是从大量的、不完整的、噪声的

    2024年02月07日
    浏览(39)
  • Python数据分析与数据挖掘:解析数据的力量

    随着大数据时代的到来,数据分析和数据挖掘已经成为许多行业中不可或缺的一部分。在这个信息爆炸的时代,如何从大量的数据中提取有价值的信息,成为了企业和个人追求的目标。而Python作为一种强大的编程语言,提供了丰富的库和工具,使得数据分析和数据挖掘变得更

    2024年02月11日
    浏览(43)
  • [数据挖掘] 数据分析的八种方法

    不 同类型的数据分析包括描述性、诊断性、探索性、推理性、预测性、因果性、机械性和规范性。以下是您需要了解的有关每个的信息。本文对于前人归纳的8种进行叙述。

    2024年02月13日
    浏览(47)
  • 数据挖掘(6)聚类分析

    无指导的,数据集中类别未知 类的特征: 类不是事先给定的,而是根据数据的 相似性、距离 划分的 聚类的数目和结构都没有事先假定。 挖掘有价值的客户: 找到客户的黄金客户 ATM的安装位置 原则: 组内数据有较高相似度、不同组数据不相似 相似性的度量(统计学角度): Q型

    2024年02月07日
    浏览(39)
  • 【数据挖掘与人工智能可视化分析】可视化分析:如何通过可视化技术进行数据挖掘和发现

    作者:禅与计算机程序设计艺术 数据挖掘(Data Mining)和人工智能(Artificial Intelligence,AI)已经成为当今社会热点话题。这两者之间的结合也带来了很多挑战。作为数据科学家、机器学习工程师、深度学习研究员等,掌握了数据的获取、清洗、处理、建模、应用这些技术的前提下,

    2024年02月07日
    浏览(54)
  • 【数据挖掘】使用 Python 分析公共数据【01/10】

            本文讨论了如何使用 Python 使用 Pandas 库分析官方 COVID-19 病例数据。您将看到如何从实际数据集中收集见解,发现乍一看可能不那么明显的信息。特别是,本文中提供的示例说明了如何获取有关疾病在不同国家/地区传播速度的信息。         要继续操作,您需

    2024年02月12日
    浏览(36)
  • 数据挖掘与数据分析之统计知识篇

    统计学上, 自由度 是指当以样本的 统计量 估计 总体 的参数时, 样本中独立或能自由变化的数据个数叫自由度 。一般来说,自由度等于独立变量减掉其衍生量数。举例来说,变异数的定义是样本减平均值(一个由样本决定的衍生量),因此对N个随机样本而言,其自由度为N

    2024年02月11日
    浏览(39)
  • Python数据分析-数据挖掘(准备数据——数据建模——模型评估——模型应用)

    20 理解业务和数据:我们需要做好什么计划?_哔哩哔哩_bilibili 目录   一、理解业务和数据:我们需要做好什么计划? 1.1两个思想问题 1.2为什么数据挖掘不是万能的 1.3业务背景与目标 1.4把握数据  1.5总结 二、 准备数据:如何处理出完整、干净的数据? 2.1找到数据 2.2数据探索

    2024年02月05日
    浏览(49)
  • 【Python】数据分析+数据挖掘——探索Pandas中的数据筛选

    当涉及数据处理和分析时,Pandas是Python编程语言中最强大、灵活且广泛使用的工具之一。Pandas提供了丰富的功能和方法,使得数据的选择、筛选和处理变得简单而高效。在本博客中,我们将重点介绍Pandas中数据筛选的关键知识点,包括条件索引、逻辑操作符、 query() 方法以及

    2024年02月15日
    浏览(38)
  • 电商API接口与数据分析、数据挖掘的结合

    电商API接口 与数据分析的结合为电子商务领域带来了革命性的变化。这种结合不仅提高了数据的可用性和价值,还为商家提供了深入的市场洞察和决策支持。 以下是电商API接口与数据分析结合的几个关键点: 实时数据获取 :API接口使得电商平台能够实时获取商品数据,这对

    2024年03月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包