Bagging,Random Forests以及Boosting

2023-10-18 13:59

本文主要是介绍Bagging,Random Forests以及Boosting,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面讲到,决策树(决策树(Decision Tree))可以用来解决分类或回归问题,它们统称为分类回归树(Classification and Regression Tree,CART)。并且,分类回归树有一个显著的缺点,那就是对噪音十分敏感,稍微改变数据,树的形状很有可能发生较大的改变。

为了防止分类回归树陷入过拟合,我们有一系列改善措施来提高树的性能,常见的有Bagging和Random Forests以及Boosting算法。首先来了解一下什么是Bootstrap。

Bootstrap是一种数据抽样方法,最普通的单一树的生成过程是利用所有训练数据进行划分然后产生决策枝干,而Bootstrap的做法是在训练数据中去抽样数据重新获得训练数据集,即从原始训练数据集去可重复地抽样n个样本来作为新的训练数据集,从而训练得到一个决策树。

通过Bootstrap抽样方法产生B个新的训练集,从而可以运用不同的数据集训练得到B个不同的决策树,然后对于输入数据x,我们可以由这B个不同的决策树去投票来决定最终的分类结果。这种算法称为Bagging或Bootstrap aggregation,Bagging算法可以显著地提高单一决策树的性能,Bagging是很多树的投票结果,因此可以使得决策边界变得更加平滑了。例如下面一组Bagging的结果与单一决策树形状对比。


值得注意的是,在Bagging中,由于Bootstrap抽样会使得一些样本无法抽到,那么这些样本将作为测试样本得到测试误差,该误差又称为”out-of-bagging”误差。

随机森林(Random Forests,简称RF)算法是在Bagging算法的基础上再做修正的,RF的做法是在每一步划分时,假设一共有m个特征属性,只从中随机挑选log2(m)或sqrt(m)个特征来计算划分熵,而其他的步骤和Bagging是一样的。

Boosting算法是在Bagging的基础上引入权重因子,即对每个决策树加一个修正权重,最终的分类器是所有分类器的权重和。


Boosting算法具体流程如下:
1、首先,假设有N个观察样本(即测试样本,或out-of-bagging样本),初始化权重为w_i=1/N;
2、对于M个分类器,重复以下四步:
(1)训练一个树分类器C_m;
(2)计算该树分类器的权重误差
Err_m=SUM(w_i*I(y_i!=C_m(x_i)))/SUM(w_i);
(3)计算alpha_m=log[(1-Err_m)/Err_m];
(4)更新N个权重
w_i=w_i*exp[alpha_m*I(y_i!=C_m(x_i))]
 并且归一化所有w,得到新的w_i;
3、计算分类树的最终输出C(x)=sign[SUM(alpha_m*C_m(x))];
这里的SUM是指对下标进行求和,I是误差函数。


这篇关于Bagging,Random Forests以及Boosting的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Numpy random.random()函数补充

np.random.random() np.random.random()的作用是生成指定形状的均匀分布的值为[0,1)的随机数 参数为size,也就是用于指定的形状大小 import numpy as npprint(np.random.random(size=(2, 2)))# [[0.19671797 0.85492315]# [0.99609539 0.66437246]]

Midjourney 随机风格 (Style Random),开启奇幻视觉之旅

作者:老余捞鱼 原创不易,转载请标明出处及原作者。 写在前面的话:       Midjourney 最近推出了 "Style Random"(随机风格),这项功能可以让我们使用独特的随机 sref 代码创建图像,从而每次都能获得不同的美感。通过对这些功能的探索和尝试,我发现了一些很棒的风格,我很高兴能与大家分享,这样可以节省大家的时间,不用自己动手测试。在本文中,我将展示十个M

Bagging: 数量,而不是质量。

由 AI 生成:过度简化的树、引导聚合、集成方法、弱学习器、减少方差 集成方法 — 数量,而不是质量 一、说明         机器学习中的集成方法是指组合多个模型以提高预测性能的技术。集成方法背后的基本思想是聚合多个基础模型(通常称为弱学习器)的预测,以生成通常比任何单个模型更准确、更稳健的最终预测。一般而言,我们通常遵循质量胜于数量的原则。然而,在这种情况下,事实证

什么是机器学习中的 Bagging?带有示例的指南

文章目录 一、说明二、理解集成学习2.1 什么是 Bagging?2.2 Bagging 与 Boosting2.3 套袋的优点 三、Python 中的 Bagging:简短教程3.1 数据集3.2 训练机器学习模型3.3 模型评估 四、装袋分类器4.1 评估集成模型4.2 最佳实践和技巧 五、结论 ​ 一、说明    集成方法是机器学习中强大的技术,它可以结合多种模型来提高

【HDU】 4067 Random Maze 费用流

Random Maze Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1114    Accepted Submission(s): 387 Problem Description In the game “A C

【机器学习】集成学习的基本概念、Bagging和Boosting的区别以及集成学习方法在python中的运用(含python代码)

引言 集成学习是一种机器学习方法,它通过结合多个基本模型(通常称为“弱学习器”)来构建一个更加强大或更可靠的模型(“强学习器”) 文章目录 引言一、集成学习1.1 集成学习的核心思想1.2 常见的集成学习方法1.2.1 Bagging(装袋)1.2.2 Boosting(提升)1.2.3 Stacking(堆叠) 1.3 集成学习的优势1.4 集成学习的挑战1.5 总结 二、Bag

python random和numpy random

numpy是python的一个数值计算库,可是有许多语法和python不兼容。 比如python的random.randint(low,high)使用方法是返回[low,high]之间的整数,官方文档: random.randint(a, b) Return a random integer N such that a <= N <= b. 注意是两边都是闭区间,但在numpy中,rand

取Random范围内的随机数

Random rand = new Random();        int m = rand.nextInt(); //int范围类的随机数        int n = rand.nextInt(100); //0-100范围内的随机数      包含0,不包含100.

机器学习-有监督学习-集成学习方法(六):Bootstrap->Boosting(提升)方法->LightGBM(Light Gradient Boosting Machine)

机器学习-有监督学习-集成学习方法(六):Bootstrap->Boosting(提升)方法->LightGBM(Light Gradient Boosting Machine) LightGBM 中文文档 https://lightgbm.apachecn.org/ https://zhuanlan.zhihu.com/p/366952043

NumPy(二):创建数组【生成固定范围的数组:arange、linspace】【生成0和1的数组:zeros()等】【从现有数组生成:array、asarray】【生成随机数组:np.random】

生成0和1的数组 np.ones()np.ones_like()从现有数组中生成 np.array – 深拷贝np.asarray – 浅拷贝 生成固定范围数组 np.linspace() nun – 生成等间隔的多少个 np.arange() step – 每间隔多少生成数据 np.logspace() 生成以10的N次幂的数据 生成随机数组 正态分布 里面需要关注的参数:均值:u