AdaBoost:一个经典的自适应增强集成算法

Adaboost算法原理与实例 本文详细讲解了adboost算法的基本原理,并通过实例讲解了算法过程。 阅读详情
点击上方“AI派”,选择“设为星标”
最新分享,第一时间送达! 640?wx_fmt=gif

本文是《机器学习宝典》第 18 篇,读完本文你能够掌握集成学习中的 AdaBoost。

在前一篇文章中介绍了 Bagging 中的一个经典算法:随机森林 。这篇我们来介绍 Boosting 系列的算法。AdaBoost 算是 Boosting 中最经典的一个算法了,所以这篇我们就介绍下它。

AdaBoost(adaptive boosting)中文名叫自适应增强,它是一种能够自动根据前一个基模型对样本预测的误差率来调整样本权重,然后基于调整权重后的样本继续学习新的基模型,如此反复,直到基模型的个数达到设定的个数停止,最后将所有训练的基模型通过组合策略进行集成,得到最终的模型。在 AdaBoost 中,基模型可以是很多种,比如决策树、神经网络等。在这个过程中,包含了两个可以提升效果的原因:

  1. 提高了那些被前一次基模型错误分类或回归预测误差较大的样本的权重,而降低那些被正确分类或回归预测误差较小样本的权重。这样一来,那些被分错或预测误差较大的数据,在下一次就会得到更大的关注。

  2. 在组合基模型时,增加分类误差率小或回归预测误差较小的基模型权重,使其在组合时的贡献更高,降低分类误差率大或回归预测误差较大的基模型权重,使其在组合时的贡献更低。

在 AdaBoost 学习的过程中,需要解决的问题有以下 4 个:

  1. 如何计算模型的预测的误差率

  2. 如何确定基模型的权重

  3. 如何更新样本的权重

  4. 如何将多个基模型组合在一起

假设我们的训练集为 640?wx_fmt=png,其中 640?wx_fmt=png,总共训练的基模型的个数为 T,第 t 个基模型的在训练集中的每个样本权重为 640?wx_fmt=png。

AdaBoost 分类问题算法流程

我们以二分类为例,来说明下一般情况下二分类问题下的 AdaBoost 的算法流程:

1.初始化数据集中的权重分布为:640?wx_fmt=png,其中640?wx_fmt=png

2.令 t = 1,2,…,T,循环:

a. 使用带有权重分布 640?wx_fmt=png 的训练集学习一个基模型640?wx_fmt=png
 b. 计算基模型 640?wx_fmt=png 的误差率 640?wx_fmt=png,其中640?wx_fmt=png 为指示函数
 c. 计算基模型 640?wx_fmt=png 的在最终的集成模型中的权重640?wx_fmt=png
 d. 更新下一次的样本权重分布 640?wx_fmt=png,其中
640?wx_fmt=png
 其中,640?wx_fmt=png,是一个规范化因子,以确保 640?wx_fmt=png 是一个分布。

3.组合各个基模型生成最终模型640?wx_fmt=png

结合上面的算法流程来看下二分类下的 AdaBoost 是如何解决前面的 4 个问题的。

首先,模型的预测误差 640?wx_fmt=png 可以通过计算带权重的样本分错的比例来作为样本的预测误差。

其次,基模型的权重 640?wx_fmt=png 从计算公式中可以看到 640?wx_fmt=png 随着该基模型的预测误差 640?wx_fmt=png 的减小而增大,也就是说基模型的预测误差越小,最后对于最终集成模型的权重越大。也可以这么理解,由于 640?wx_fmt=png 是错误率,可以知道 640?wx_fmt=png 为准确率,那么 640?wx_fmt=png 表示相对准确率,显然相对准确率越高,基模型的权重系数越大。由于一般模型的准确率都在 0.5 及以上,即 640?wx_fmt=png ,那么640?wx_fmt=png,则 640?wx_fmt=png 。

再来看下如何更新下一次的样本权重,上面的关于 640?wx_fmt=png 的式子等价于:

640?wx_fmt=png

从上面式子可以看出,相比于正确分类的样本,错误分类的样本的权重被放大了640?wx_fmt=png 倍(这里其实解释为什么640?wx_fmt=png要用 log 表示以及系数为 640?wx_fmt=png 的原因)。

最后看下如何将多个基模型组合在一起,可以看到,最终的模型 640?wx_fmt=png 是将各个基模型的权重640?wx_fmt=png与该基模型的预测结果 640?wx_fmt=png 相乘后求和。

AdaBoost 的损失函数

前面我们介绍了 AdaBoost 在分类问题中的一个算法流程以及它的每个基模型权重、样本权重的公式,但是并没有解释它们的原因,其实它们可以通过 AdaBoost 的损失函数推导而来。

在 AdaBoost 中,可以将每一次生成一个基模型的过程认为是一轮,在第 t 轮时,通过带样本权重的数据集 640?wx_fmt=png 得到一个基模型 640?wx_fmt=png 和其对应的权重 640?wx_fmt=png,这时得到的集成的模型为 640?wx_fmt=png,对应的的损失函数是一个指数函数:
640?wx_fmt=png
其中 m 表示样本总个数,t 表示当前训练的轮数(基模型的个数)。

通过 AdaBoost 最终模型的表达式 640?wx_fmt=png 可以看出,其实它是将每一轮的基模型加权求和,所以可以得到:
640?wx_fmt=png
所以损失函数可以变为:
640?wx_fmt=png
有了损失函数,最小化损失函数即可得到 640?wx_fmt=png 和 640?wx_fmt=png ,即:
640?wx_fmt=png
从上面的式子可以知道损失函数中包含了 640?wx_fmt=png 和 640?wx_fmt=png 总共 2t 个参数,针对这种情况, 我们可以先固定  640?wx_fmt=png和 640?wx_fmt=png 这些参数,求解出 640?wx_fmt=png 和 640?wx_fmt=png,然后逐一求解其他参数。

由于 640?wx_fmt=png 不依赖于 640?wx_fmt=png 和 640?wx_fmt=png ,所以是个与最小化无关的固定值,我们记为 640?wx_fmt=png。即 640?wx_fmt=png,进而可以将损失函数变为:

640?wx_fmt=png

考虑到 640?wx_fmt=png,640?wx_fmt=png,可以进一步将 640?wx_fmt=png 进行变换:

640?wx_fmt=png

所以在求解 640?wx_fmt=png 时,可以最小化下面的式子得到:

640?wx_fmt=png
接下来求解 640?wx_fmt=png ,可以令 640?wx_fmt=png 对 640?wx_fmt=png 偏导为 0,可以得到:
640?wx_fmt=png

进而可得:
640?wx_fmt=png

640?wx_fmt=png

其中,640?wx_fmt=png 是带权重的错误分类的样本权重之和:
640?wx_fmt=png
这时候可以知道 640?wx_fmt=png 是怎么来的了。

结合 640?wx_fmt=png 以及 640?wx_fmt=png 可以得到:

640?wx_fmt=png

对比前面介绍的 640?wx_fmt=png:
640?wx_fmt=png
可以看到,只是相差了一个规范化因子,但本质上是一样的。

AdaBoost 正则化

为了防止Adaboost过拟合,我们通常也会加入正则化项,这个正则化项我们通常称为学习率(learning rate)。我们可以定义为 640?wx_fmt=png,加上了正则化项之后,则
640?wx_fmt=png
640?wx_fmt=png 的取值范围为 640?wx_fmt=png。对于同样的训练集学习效果,较小的 640?wx_fmt=png 意味着我们需要更多的迭代次数。通常我们用学习率和迭代最大次数一起来决定算法的拟合效果。

AdaBoost 回归算法

前面介绍的都是关于 AdaBoost 解决分类问题的情况,如果要使用 AdaBoost 解决回归问题的话,基本思路与回归问题一致,不过在回归任务中用到的损失函数与分类任务有所区别。我们设训练集 640?wx_fmt=png 中最大的误差为:640?wx_fmt=png。

  1. 如果是线性误差,则误差率640?wx_fmt=png

  2. 如果是平方误差,则误差率640?wx_fmt=png

  3. 如果是指数误差,则误差率640?wx_fmt=png

参考:

1. 集成学习之Adaboost算法原理小结

(https://www.cnblogs.com/pinard/p/6133937.html)

2. AdaBoost算法

(https://zhuanlan.zhihu.com/p/39972832)

3. 集成模型之Adaboost算法(三)

(https://zhuanlan.zhihu.com/p/38507561)

4. Adaboost 算法的原理与推导

(https://blog.youkuaiyun.com/v_july_v/article/details/40718799)

??扫码查看《机器学习宝典》历史内容

640?wx_fmt=png


(完)





640

人人都是数据分析师,人人都能玩转Pandas | Numpy 精品系列教程汇总 | 我是如何入门机器学习的呢 | 谷歌机器学习43条黄金法则


640

640?wx_fmt=png


长按,识别二维码,加关注


深度探索:机器学习AdaBoost算法原理及其应用 AdaBoost算法作为集成学习的经典代表之一,以其简洁的原理、优秀的性能和广泛的应用,在机器学习领域占据重要地位。尽管面临过拟合风险、对异常值敏感等问题,但通过合理设置参数、结合正则化手段以及与其他算法的融合,可以在实际应用中得到有效控制。未来,研究者将继续探索AdaBoost算法的改进与扩展,如适应性调整弱学习器权重、引入深度学习架构等,以适应更复杂的数据分布和任务需求。同时,结合新兴的自动化机器学习(AutoML)技术,有望进一步简化AdaBoost的使用,提升其在实际场景中的应用潜力。 阅读详情

相关推荐

数据挖掘十大经典算法学习之Adaboost自适应增强学习算法

定义 The strong and weak learnability are equivalent. --Kearns and Valiant(1989) 强分类器和弱分类器是相同的,多个弱分类器组合可以达到强分类器的效果。通过迭代生成一列分类器,每个分类器都依赖于之前的一个,之前分类器错分的样本被赋予更高的权重。 训练数据集D为 {(x1,y1,w1),( x2,y2,w2),…,(

vshadow的专栏 8172

adaboost算法

基本概念Adaboost算法,将多个弱分类器,组合成强分类器。 AdaBoost,是英文”Adaptive Boosting“(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。 它的自适应在于:前一个弱分类器分错的样本的权值(样本对应的权值)会得到加强,权值更新后的样本再次被用来训练下一个新的弱分类器。在每轮训练中,用总体(样本总体)训练新的弱分类器

林多 1万+

AdaBoost算法详细介绍

一、Boosting算法Boosting集成分类器包含多个非常简单的成员分类器,这些成员分类器的性能仅好于随机猜想,常被称为弱学习机。典型的弱学习机的例子就是单层决策树。Boosting算法主要针对难以区分的样本,弱学习机通过在分类错误的样本上进行学习来提高继承分类器的分类性能。Boosting与Bagging不同,在Boosting的初始化阶段采用的是无返回抽样从训练样本中随机抽取一个子集,而B...

修炼之路 2万+

AdaBoost算法详解

Adaboost算法是一种常用的集成学习算法,解决的是二分类问题,它可以将多个弱分类器(比如决策树)组合成一个强分类器。其基本思想是通过对数据集进行加权和重复训练来提高分类器的准确性。

bb8886的博客 3730

携程旅行网景区,评论数据爬虫项目数据库保存附源码

这是一个专门用于爬取某旅行网景区评论数据的Python爬虫项目。项目采用模块化设计,支持MySQL数据库存储,具备完整的异常处理机制和反爬虫策略。

ymqzhy的博客 2568

ESP32开发环境避坑指南:用Thonny烧录MicroPython固件时常见的5个错误及解决方法

本文针对ESP32开发新手,详细解析了使用Thonny IDE烧录MicroPython固件时最常见的5个错误及其解决方案。内容涵盖驱动安装、端口识别、固件烧录失败、版本兼容性、连接不稳定以及文件系统操作异常等核心痛点,并提供硬件层面的深度排查指南,帮助开发者高效搭建稳定的ESP32开发环境。

weixin_29189003的博客 407

集成学习算法:AdaBoost原理详解以及基于adaboost的图像二分类代码实现

AdaBoost,是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。AdaBoost(Adaptive Boosting)是一种集成学习算法集成学习算法其实不能理解为一种具体算法(像knn、kmeans这样十分具体的算法),它其实是一种算法策略、算法框架。它的核心是在于,将多个弱学习器(模型)结合(集成),从而得到一个更强大的模型。提高整体的性能和稳定性。💡说的好像很轻松,“结合”,那么具体如何结合呢?

Yaoyao2024的博客 1万+

从零构建Elasticsearch MCP代理:自然语言查询背后的技术揭秘

本文深入解析如何从零构建Elasticsearch MCP代理,实现自然语言查询的技术架构与实战应用。通过MCP协议与Elasticsearch的结合,系统能够将自然语言转换为精确的DSL查询,提升非技术用户的数据查询效率。文章详细介绍了核心架构、DSL生成引擎、端到端系统搭建及生产环境最佳实践,为开发者提供全面的技术指南。

lll78的博客 877

数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码)

相关文章: 数据挖掘领域十大经典算法之—C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之—K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之—SVM算法(超详细附代码) 数据挖掘领域十大经典算法之—Apriori算法 数据挖掘领域十大经典算法之—EM算法 数据挖掘领域十大经典算法之—PageRank算法 数据挖掘领域十大经典算法之—...

fuqiuai的博客 11万+

电脑主板开机12步流程全解析:从按下电源键到BIOS启动的完整过程

本文深入解析了电脑主板从按下电源键到BIOS启动的完整12步流程,详细阐述了待机电路、主供电上电、CPU供电建立、时钟信号分发及复位链等关键硬件协同工作原理。通过剖析电脑主板的电路结构与芯片协作时序,帮助读者构建系统性的硬件故障诊断思维,精准定位开机故障。

weixin_29290963的博客 265

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

jks212454的博客 420

【机器学习入门】集成学习之AdaBoost算法

群体的智慧常常优于单个个体的决策。正所谓,“三个臭皮匠顶个诸葛亮”,集成学习的思路正是如此。单个模型的预测误差可能比较大,但将若干个比较弱的模型组织再一起,则可以减少误差,产生较强的预测模型。以上就是今天的学习内容,本文仅仅简单介绍了集成学习的思想,详细了解了AdaBoost算法的设计过程。

m0_53294028的博客 968

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

王老师青少年编程 714

集成学习——AdaBoost(自适应增强)

文章目录集成学习——Adaboost0. 原理1. 导包2. 原始数据3. 数据预处理4. 参照模型(决策树)5. 使用Adaboost 提升评分 集成学习——Adaboost 0. 原理 朴素的思想:将学习的重点放在出错的地方。 学习步骤:首先准备一份训练集X,对训练集进行有放回的随机抽样,用于训练。Adaboost会按顺序构建一系列弱分类器:首先抽取一份训练数据,用作分类,构建第一个弱分类器,...

蒋含竹的博客 796

3.38 工业缺陷检测实战:物体表面缺陷检测,从图像处理到深度学习

本文介绍了工业缺陷检测的完整流程,从传统图像处理到深度学习方法。首先定义了缺陷检测任务的目标和应用场景,然后详细讲解了传统图像处理方法(边缘检测、阈值分割等)和深度学习方法(分类、检测、分割模型)。文章最后总结了核心要点,提出了思考题和实践建议,建议从简单方法开始逐步优化。下一篇将介绍工业视觉基础技术——相机标定与角点检测。

yonggeit的博客 2886

开发simulink 以及stm32半物理仿真碰到的问题,以及处理方法,Error:External Mode Open Protocol Connect command failed(实测有用)

串口实现的,但是在测试的时候发现,这个串口可以正常发送和接收数据,但是一旦把这个串口只让其进行版物理仿真就报错。直接刷写程序是可以的,最后查到问题了。我要实现半物理仿真,就是通过matlab实现可以直接控制stm32板子,实际上是通过xcp on。然后点击simulink上的观测按钮就可以直接和stm32平台进行通讯了。3,还是使用串口3,但是重新需要设置一下com口,因为重新插拔了一下,按照这个设置方法就可以。2,重新加载ioc文件。

pvmsmfchcs的博客 1500

Adaboost 算法的原理与推导

Adaboost 算法的原理与推导 0 引言 一直想写Adaboost来着,但迟迟未能动笔。其算法思想虽然简单:听取多人意见,最后综合决策,但一般书上对其算法的流程描述实在是过于晦涩。昨日11月1日下午,在我组织的机器学习班第8次课上讲决策树与Adaboost,其中,Adaboost讲得酣畅淋漓,讲完后,我知道,可以写本篇博客了。 无心啰嗦,本...

结构之法 算法之道 16万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

提升树AdaBoost算法【自适应增强算法(集成学习算法)】-笔记

回忆多元线性回归算法:多元线性回归的构造实质上是将输入特征X进行加权运算,即y=a0+a1x1+a2x2+a3x3+…+apxp = a0+sum(ai*xi) (其中、i=1~p) AdaBoost算法【自适应增强算法】 提升树算法与线性回归模型的思想类似,所不同的是该算法实现了多颗基础决策树f(x)的加权运算,最经典的是AdaBoost算法(是一个迭代算法),即:F(x)=sum(a[m...

人生是一场修行 1815

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Adaboost 算法的公式推导与讲解

目录 前言 一、Adaboost 算法 1.1Adaboost步骤 1.2公式推导与分析 步骤1. 首先,初始化训练数据的权值分布。 步骤2.开始迭代 d. 更新训练数据集的权值分布 步骤3. 组合各个弱分类器,得到最终分类器。​ 1.3误差界 二、加法模型与向前分步算法 2.1 加法模型 前言 渣学硕一枚,对Adaboost 算法的公式的每一步进行推导与讲解。如果有错误的地方还请各位同学指正。本文推导步骤主要来源于(https://blog...

weixin_43929239的博客 2058

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

AdaBoost集成学习:从原理到实战,详解自适应增强算法

集成学习是机器学习中一种重要的技术范式,旨在通过组合多个基学习器来提升模型的泛化能力。其核心原理在于利用多个模型的集体决策,有效平衡偏差与方差,从而克服单一模型容易过拟合或欠拟合的问题。从技术价值看,集成学习显著提升了模型的鲁棒性和预测精度,使其在分类、回归等任务中表现卓越。应用场景广泛,包括图像识别、金融风控、医疗诊断等领域。本文聚焦于Boosting流派的代表算法AdaBoost,深入解析其自适应权重调整机制和串行训练策略,并结合决策树桩与图像二分类任务,演示如何从零实现这一经典算法。

weixin_29194817的博客 289

AdaBoost:让弱学习器变强的魔法算法

摘要:AdaBoost是一种自适应增强的集成学习算法,通过组合多个弱分类器(如决策树桩)构建强分类器。其核心机制是迭代训练:初始化样本权重后,每轮训练调整权重,使后续分类器更关注错误样本,最终加权投票输出结果。该算法具有自适应性好、泛化能力强、实现简单等优点,广泛应用于人脸检测、信用评估等领域。Python示例显示其在鸢尾花分类中准确率达90%以上。虽然被后续Boosting算法超越,但AdaBoost的"弱模型协同增效"思想仍深刻影响机器学习发展。

Wei_sx的博客 872

一文搞懂AdaBoost算法:从原理到实战

AdaBoost作为一种经典的集成学习算法,通过组合多个弱分类器和自适应调整样本权重,能够构建出强大的预测模型。​​自适应学习​​:自动关注难样本,不断改进模型​​灵活兼容​​:可与多种基分类器结合使用​​高准确率​​:在许多任务上优于单一模型希望这篇文章能帮助你全面理解AdaBoost算法!

qiutesting的博客 2001

机器学习之自适应增强(Adaboost)

1.Adaboost简介 Adaptive boosting(自适应增强)是一种迭代算法,其核心思想是针对同一个训练集训练不同的弱分类器,然后把这些弱分类器集合起来,构成一个强分类器,Adaboost可处理分类和回归问题。了解Adaboost算法之前,我们先学习下Boost(增强)和Adaptive(自适应)的概念。 1.1集成学习之Boosting 集成学习不是单独的机器学习方法,而是...

谓之小一 1万+

14、集成学习——Adaboost算法

本文介绍了Adaboost算法,包括了分类算法流程、回归算法流程、sklearn中的Adaboost函数等

m0_56642803的博客 1193

机器学习算法系列(十九)-自适应增强算法(Adaptive Boosting Algorithm / AdaBoost Algorithm)——上篇

机器学习算法系列(十九)-自适应增强算法(Adaptive Boosting Algorithm / AdaBoost Algorithm)——上篇

Saisimon`s blog 5530

传统机器学习(六)集成算法(2)—Adaboost算法原理

集成算法(2)—Adaboost算法原理

qq_44665283的博客 3561
上一篇: 精心推荐几个AI和Python领域的优质公众号
下一篇: 想知道Facebook怎样做推荐?FB开源深度学习推荐模型
Wang_AI
博客等级 码龄12年 991粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值