Boosting和Bagging: 如何开发一个鲁棒的机器学习算法

2024-06-21 09:38

本文主要是介绍Boosting和Bagging: 如何开发一个鲁棒的机器学习算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”

作者:Ben Rogojan

编译:ronghuaiyang

导读

机器学习和数据科学需要的不仅仅是将数据放入python库中并利用得到的结果。数据科学家需要真正理解数据和数据背后的过程,才能实现一个成功的系统。这篇文章从Bootstraping开始介绍,让你听懂什么是Boosting,什么是Bagging。

机器学习和数据科学需要的不仅仅是将数据放入python库中并利用得到的结果。

数据科学家需要真正理解数据和数据背后的过程,才能实现一个成功的系统。

实现这个的一个关键方法是知道模型何时可以从使用bootstrapping中受益。这些就是所谓的集成模型。集成模型的例子有AdaBoost和随机梯度提升。

为什么使用集成模型?

它们可以帮助提高算法的准确性或提高模型的鲁棒性。这方面的两个例子是Boosting和Bagging。对于数据科学家和机器学习工程师来说,Boosting和Bagging是必须知道的主题。特别是如果你打算参加数据科学/机器学习面试

本质上,集成学习遵循集成这个词。不同的是,不是让几个人用不同的八度来创造一个优美的和声(每个声音填补另一个的空白)。集成学习使用同一算法的数百到数千个模型,这些模型一起工作以找到正确的分类。

另一种考虑集成学习的方法是盲人与大象的寓言。每个盲人都发现了大象的一个特征,他们都认为这是不同的东西。然而,如果他们聚在一起讨论这个问题,他们也许能够弄明白他们在看什么。

使用诸如Boosting和Bagging这样的技术可以提高统计模型的鲁棒性并减少方差。

现在的问题是,这些不同的“B”开头的词,都有什么区别呢?

Bootstrapping

首先我们来讨论一下bootstrapping的重要概念。这一点有时会被忽略,因为许多数据科学家会直接去解释“Boosting”和“Bagging”。这两者都需要bootstrapping。

640?wx_fmt=png

Figure 1 Bootstrapping

在机器学习中,bootstrap方法是指随机抽样和替换。这种样本称为重采样。这使得模型或算法能够更好地理解重采样中存在的各种偏差、方差和特征。从数据中提取一个样本允许重新采样包含不同的特征,而这些特征可能是作为一个整体包含的。如图1所示,其中每个样本总体都有不同的部分,而且没有一个是相同的。这将影响数据集的总体均值、标准差和其他描述性指标。反过来,它可以开发更健壮的模型。

Bootstrapping对于小型数据集来说也非常有用,这些数据集可能有过拟合的趋势。事实上,我们向一家公司推荐了这个,因为他们的数据集离“大数据”还很远。在这种情况下,Bootstrapping 是一种解决方案,因为利用Bootstrapping 的算法可以更加健壮,并根据所选择的方法(Boosting或Bagging)处理新的数据集。

使用bootstrap方法的原因是它可以测试解的稳定性。通过使用多个样本数据集,然后测试多个模型,可以提高鲁棒性。也许一个样本数据集的均值比另一个样本数据集的均值大,或者有不同的标准差。这可能会破坏过拟合并且没有使用有不同变化的数据集进行测试过的模型。

bootstrapping 变得非常普遍的原因之一是计算能力的增强。这使得使用不同的重采样可以进行比以前多很多倍的排列。Bootstrapping在Bagging和boost中都有使用,下面将对此进行讨论。

Bagging

Bagging实际上是指(Bootstrap Aggregators)。大多数使用bagging算法引用的论文或帖子都会引用Leo Breiman[1996年]的一篇论文“bagging Predictors”。

Leo将Bagging描述为:

Bagging predictors是一种生成一个预测器的多个版本并使用这些版本来获得一个聚合预测器的方法

Bagging所做的是帮助减少方差,这些模型可能非常准确,但只基于它们所训练的数据。这也被称为过拟合。

过拟合是指一个函数太适合数据。这通常是因为实际的方程太复杂,无法考虑每个数据点和离群值。

640?wx_fmt=png

Figure 2 Overfitting

另一个容易过拟合算法的例子是决策树。使用决策树开发的模型需要非常简单的启发式。决策树由一组if-else语句组成,这些语句按照特定的顺序执行。因此,如果将数据集更改为新的数据集,那么与前一个数据集相比,底层特征的分布可能会有一些偏差或差异。这是因为数据不适合模型。

Bagging通过采样和替换数据来在数据中创建自己的方差,从而绕过这个问题。Bagging同时测试多个假设(模型)。反过来,这通过使用多个很可能由具有各种属性(中值、平均值等)的数据组成的样本来减少噪声。

一旦每个模型都有了假设。模型使用投票进行分类平均进行回归。这就是“Bootstrap Aggregating”中的“Aggregating”发挥作用的地方。每个假设的权重都是一样的。当我们稍后讨论boost时,这是这两种方法不同的地方之一。

640?wx_fmt=png

Figure 3 Bagging

本质上,所有这些模型同时运行,并对哪个假设最准确进行投票。

这有助于减少方差,即减少过拟合。

Boosting

Boosting 是指一组利用加权平均使弱学习器变成强学习器的算法。与bagging不同,bagging让每个模型独立运行,然后在最后聚合输出,而不优先于任何模型。Boosting 全靠“团队合作”。每个运行的模型都规定了下一个模型将关注的特性。

Boosting也需要bootstrapping。然而,这里还有另一个区别。与bagging不同,增加每个数据样本的权重。这意味着一些样本将比其他样本运行得更频繁。

为什么要对数据样本进行加权呢?

640?wx_fmt=png

Figure 4 Boosting

当boost运行每个模型时,它会跟踪哪些数据样本是最成功的,哪些不是。输出分类错误最多的数据集被赋予更重的权重。这些数据被认为更复杂,需要更多的迭代来正确地训练模型。

在实际分类阶段,boosting处理模型的方式也有所不同。在boosting中,模型的错误率被跟踪,因为更好的模型被赋予更好的权重。

这样,当“投票”发生时,就像bagging一样,结果更好的模型对最终的输出有更的强拉动力。

总结

Boosting 和bagging 都是减少方差的好方法。集成方法通常比单个模型效果好。这就是为什么许多Kaggle赢家使用集成方法的原因。这里没有讨论的是stacking。但是,这需要它自己的post。

然而,他们不会解决所有的问题,他们自己也有自己的问题。有很多不同的原因。bagging 在模型过拟合时对减小方差有很大的作用。然而,在这两种方法中,Boosting 更有可能是更好的选择。Boosting 也更有可能导致performance问题。这对于减少不匹配模型中的偏差也很有帮助。

这就是经验和专家的用武之地!可以很容易地跳到第一个有效的模型上。然而,重要的是分析算法及其选择的所有特性。例如,如果决策树设置了特定的叶节点,那么问题来了:为什么要这么设置呢?如果不能用其他数据点可视化的方法来支持这个观点,那么可能就不应该这样去实现。

这不仅仅是在各种数据集上尝试AdaBoost或随机森林。根据算法得到的结果,以及有什么支持,驱动最终的算法。

640?wx_fmt=png— END—

英文原文:https://hackernoon.com/how-to-develop-a-robust-algorithm-c38e08f32201

640?wx_fmt=jpeg

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧640?wx_fmt=gif

这篇关于Boosting和Bagging: 如何开发一个鲁棒的机器学习算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080860

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖