Python 中的提升算法

机器学习笔记20——集成/提升(Boosting)系列算法之提升树(BDT) 算法原理以及python实现 提升树1、概述2、提升树模型3、提升树算法3.1 分类问题的提升树算法3.2 回归问题的提升树算法 1、概述 \quad \quad提升树,又称提升决策树 (BDT,Boosting Decision Tree)。 2、提升树模型 \quad \quad以决策树为基函数的提升方法称为提升(决策)树(BDT)。 对分类问题决策树是二叉分类树; 对回归问题决策树是二叉回归树   提升决策树模型可以表示为决策树的加法模型: fM(x)=∑m=1MT(x;Θm)(1.1)f_M(x)=\sum_{m=1}^M 阅读详情

什么是提升

我们将使用称为 *Boosting* 的算法结束树章节。除了随机森林,*Boosting* 是另一种增强经典决策和回归树模型预测能力的强大方法。Boosting 算法本身严格来说既不能学习也不能预测任何东西,因为它是建立在其他(弱)算法之上的。Boosting 算法被称为“元算法”。Boosting 方法(以及 bootstrapping 方法)原则上可以应用于任何分类或回归算法,但结果证明树模型特别适合。事实证明,提升树的准确性与随机森林相当,甚至常常优于后者(参见例如 Caruana 和 Niculescu-Mizil (2008)(*监督学习算法的实证比较*))。哈斯蒂等人。(2009) 将提升决策树称为“世界上最好的现成分类器”(Hastie 等人,2006 p.340)。Boosting 背后的奥秘在原则上与随机森林模型相同 * - 一组比随机猜测稍好一些的弱学习器可以组合起来做出比一个强学习器更好的预测 - *。但是,这些弱学习器的创建过程是不同的。Boosting 背后的奥秘在原则上与随机森林模型相同 * - 一组比随机猜测稍好一些的弱学习器可以组合起来做出比一个强学习器更好的预测 - *。但是,这些弱学习器的创建过程是不同的。Boosting 背后的奥秘在原则上与随机森林模型相同 * - 一组比随机猜测稍好一些的弱学习器可以组合起来做出比一个强学习器更好的预测 - *。但是,这些弱学习器的创建过程是不同的。

回顾一下,在创建我们的随机森林模型期间,我们使用了 Bagging 的概念。在 Bagging 期间,我们种植了许多 *M* 棵树,其中每棵树都建立在原始数据集的随机样本(允许重新采样)上,其中随机样本的长度与原始数据集的长度相同,但仅包含总数的一个随机抽取的子集特征空间。在我们创建了这些模型之后,我们让他们以多数票来做出我们的最终决定。精髓是每个树模型的创建都独立于其他树模型的结果。也就是说,树模型的“形状”仅受基础数据的“形状”影响,而基础数据的“形状”仅受偶然性(*采样和重采样*)的影响。n吨H* 树依赖于先前创建的返回结果 (n吨H-1) 树模型。

因此,与我们并行创建树模型集合的随机森林方法不同,我们现在按顺序创建集合,其中实际树的设置受到所有先前树模型的输出的影响,通过改变权重的数据集,树模型是建立在。关键是,通过实现这些权重,我们引入了某种学习,其中 *n吨H* 提升模型中的树部分取决于预测 *n吨H-1* 模型已作出。因此,我们在引导过程中或多或少地用“引导”创建替换了单个数据集的“随机引导”创建。最著名的提升算法称为 *AdaBoost*(自适应提升),由 Freund 和 Schapire (1996) 开发。以下讨论基于 AdaBoost Boosting 算法。下图提供了对 boosting 算法的直观了解。

说明了boosing算法。 不同的基本算法均建立在加权数据集上,其中数据集中单个实例的权重取决于先前基本分类器为这些实例所做的结果。 如果他们对实例进行了错误分类,则该实例的权重将在下一个模型中增加,而如果分类正确,则权重不变。 最终决策是通过基本分类器的加权投票实现的,其中权重取决于模型的错误分类率。 如果一个模型的分类准确率很高,它会得到很高的权重,而如果分类准确率很差,它就会得到低权重。

这里不同的基分类器每个都建立在加权数据集上,其中数据集中单个实例的权重取决于先前基分类器为这些实例所做的结果。如果他们对实例进行了错误分类,则该实例的权重将在下一个模型中增加,而如果分类正确,则权重保持不变。最终决策是通过基本分类器的加权投票来实现的,其中权重取决于模型的错误分类率。如果一个模型的分类准确率很高,它就会得到很高的权重,而如果分类准确率很差,它就会得到低权重。

提升伪代码

将所有权重初始化为 瓦=1n 在哪里 n 是数据集中的实例数

  • 尽管 吨 < 吨 (吨==要培养的模型数量)做:
  • 创建模型并得到假设 H吨(Xn) 对于所有数据点 Xn 在数据集中
  • 计算误差 ε 对所有数据点求和的训练集 Xn 在训练集中:

ε吨  =   ∑n=1N瓦n(吨)*一世(是n≠H吨(Xn))∑n=1N瓦n(吨)

在哪里 一世(C○nd) 返回 1 如果 一世(C○nd) == 真,否则为 0

  • 计算 α 和:

α吨  =  日志⁡(1-ε吨ε吨)

  • 更新权重 N 接下来的训练实例(吨+1) 模型:

瓦n(吨+1)  =  瓦n(吨)*电子Xp(α吨*一世(是n≠H吨(Xn)))

  • 之后 吨 迭代,计算最终输出:

F(X)  =  秒一世Gn(∑吨吨α吨*H吨(X))

使用 Python 从头开始​​提升

在之前关于分类树、回归树 和随机森林模型的章节中,我们一直拖着整个“从头开始的树代码”。我想我们现在已经理解了如何在 Python 中从头开始构建树模型(用于回归或分类)的概念,如果没有,只需转到前面的一章并使用代码!由于 Boosting 概念的威力和神秘性更多地在于弱学习器的组合,因为在创建这些弱学习器时,我们将使用sklearn 的 DecisionTreeClassifier 来创建单个弱学习器,但将从头开始编写实际的 boosting 过程。

为了使 sklearn DecisionTreeClassifier 成为*弱*分类器,我们将设置 *max_depth* 参数 == 1 以创建称为 *decision Stump* 的东西,它在原则上(如上所述)没有别的东西作为只有一层的决策树,即也就是说,根节点直接以叶节点结束,因此数据集只分裂一次。与往常一样,我们将使用香农熵作为分割标准。

正如您可能看到的,即使我们在这里不使用我们的自编码决策树算法,我们在实际的树构建算法中唯一必须改变的是我们引入了一个最大深度参数,该参数在第一次分裂后停止生长树 -代码中的这种细微变化实际上不值得拖到这里 - 作为数据集,我们使用UCI 蘑菇数据集, 就像我们在之前的随机森林章节中所做的那样。

让我们首先创建一个决策树桩并测量该决策树桩的准确性,以了解该模型的预测“好”或更“坏”。

"""
创建一个决策树桩
"""

import  numpy  as  np 
import  matplotlib.pyplot  as  plt 
import  pandas  as  pd 
from  matplotlib  import  style 
style 。使用( 'fivethirtyeight' ) 
from  sklearn.tree  import  DecisionTreeClassifier 
from  sklearn.preprocessing  import  LabelEncoder 
from  sklearn.model_selection  import  cross_validate 
import 
机器学习笔记22——集成/提升(Boosting)系列算法之GBDT 算法原理以及python实现 GBDT算法引言1、概述GBDT 算法 引言 \quad \quad在集成学习原理一文中,简单的介绍了根据个体学习器学习方式不同划分的两大类集成学习方法;在Boosting方法中介绍了其核心思想;在Adaboost算法一文中,介绍了Boosting家族的一个重要算法Adaboost,????回顾一下 集成方法: 集成算法,是一种提高弱分类算法准确度的方法,将多个弱分类算法(也叫做基学习器)以一定的集成方式集合在一起,然后再将弱分类器的结果以一定的融合策略融合成一个结果,作为最终的结果输出。 boosting 阅读详情

相关推荐

梯度提升回归算法原理及Python实践

梯度提升回归算法(Gradient Boosting Regression, GBR)是一种集成学习算法,主要用于解决回归问题。其原理基于迭代地优化弱预测模型,通过结合多个弱学习器的预测结果来构建一个强预测模型。

u013571432的博客 1741

提升方法AdaBoost算法完整python代码

提升方法AdaBoost算法提升方法简述俗话说,“三个臭皮匠顶个诸葛亮”,对于一个复杂的问题,一个专家的判断往往没有多个专家的综合判断来得好。通常情况下,学习一个弱学习算法比学习一个强学习算法容易得多,而提升方法研究的就是如何将多个弱学习器转化为强学习器的算法。 强学习算法:如果一个多项式的学习算法可以学习它,而且正确率很高,那就是强可学习的。 弱学习算法:如果一个多项式的学习算法可以

机器变得更残忍的博客 1万+

百倍加速:Python量化策略的算法性能提升指南

性能问题 Python在2016年里可以说是风靡国内量化投资圈,目前整个生态链已经初具规模: 交易:vn.py、easytrader、at_py 数据:tushare 回测:rqalpha 在线平台:UQER、RiceQuant、JoinQuant 随着用户越来越多,Python语言的性能问题也就逐渐成为整个社区关注的重点,经常遇到新手问:Python写的量化交易程序是不是很慢啊? 在他们心中,Python估计是这个样子: (即使作为破旧自行车,我也深表怀疑这辆能不能骑好吧) 网上关于如

码农黑羽的博客 630

快速上手Python开源算法库,提升你的编程技能!

The Algorithms - Python是一个开源项目,专注于用Python实现各类算法,旨在帮助开发者学习算法原理。项目强调代码可读性而非性能优化,适合教育用途。内容涵盖从基础到复杂的算法实现,配套详细文档和社区支持。用户可通过GitHub获取代码,在Gitpod在线编辑,并参与贡献。项目适用于自学、教学、面试准备等场景,提供算法目录方便查阅。同类推荐还包括Algorithm Visualizer等算法学习资源。

weixin_44626085的博客 769

百倍加速!Python量化策略的算法性能提升指南

Python在2016年里可以说是风靡国内量化投资圈,目前整个生态链已经初具规模:随着用户越来越多,Python语言的性能问题也就逐渐成为整个社区关注的重点,经常遇到新手问:Python写的量化交易程序是不是很慢啊?在他们心中,Python估计是这个样子:(即使作为破旧自行车,我也深表怀疑这辆能不能骑好吧)网上关于如何提升Python程序性能的文章不少,但大多不成体系只是非常简单的例子,总有点隔靴搔痒的感觉,和现实中应用的距离比较远。作者一看,填补市场空白(装逼)的机会来了!!在这篇文章里,将会通过实际的例

m0_72091242的博客 391

蓝桥杯国赛Python真题解析:从算法到工程思维的实战提升

算法竞赛不仅是语法和模板的比拼,更是问题建模与工程思维的综合检验。其核心原理在于将复杂实际问题抽象为可计算的模型,并运用高效的数据结构与算法进行求解。这种能力对于提升编程实战水平和解决真实场景问题具有重要价值,广泛应用于数据处理、系统模拟、资源调度等领域。以蓝桥杯国赛Python真题为例,题目设计深度融合了算法应用与工程实践,要求选手在动态规划、搜索等经典算法基础上,结合Python内置库进行高效求解。通过分析2019年真题的命题趋势,可以清晰看到对问题建模能力和Pythonic代码风格的侧重,这正是从“刷

weixin_34378767的博客 426

百倍加速!Python量化策略的算法性能提升指南_技术性策略python(1)

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习print u’单次耗时:%s秒’ %time_per_testprint u’单个数据点耗时:%s微秒’ %(time_per_point*1000000)

2401_84139924的博客 967

Python竞赛中的时间优化艺术:从蓝桥杯真题看算法效率提升

本文探讨了Python在蓝桥杯等编程竞赛中的时间优化技巧,通过算法选择、数据结构优化和Python专属技巧提升代码效率。文章结合真题案例,展示了如何从暴力解法优化到高效实现,帮助参赛者在研究生组等高级别竞赛中取得更好成绩。

weixin_29029995的博客 537

主流技术Java、Python怎么学?如何提升你的编程基本功?(MySQL、Linux、算法的核心知识讲解,瓶颈期的你如何做提升?)

前言 关于Java、Python这两个目前“斗”的最狠的编程语言,我相信很多人都并不陌生,每一个拿出来将都是长篇大论,所以我就长话短说,希望帮助你在未来的编程生涯中,对于主语言的选择有一些帮助。 注意:此部分内容我不会对任何一种编程语言进行褒贬,只做客观的事实陈述。 至于MySQL、Linux、算法,结合的经验来看,无论你未来从事什么开发,我建议你都去学一学,无论是求职还是整体编程技能的提升,都有莫大的帮助。在本文的后半段,我也会为你讲解这些技术栈。 1、以下内容主要来自我的编程经验体会,部分来源于

wenyusuran的专栏 1896

Python中的随机梯度下降分类器(SGDClassifier)及其应用

随机梯度下降分类器(Stochastic Gradient Descent Classifier,简称SGDClassifier)是一种广泛应用于分类问题的机器学习算法,它在优化模型参数时使用了随机梯度下降的思想,相比于传统的梯度下降算法,SGDClassifier对大规模数据集的计算效率更高。同时,在处理非线性问题时,我们可以通过使用高阶特征转换等方法来扩展模型的表达能力。总之,SGDClassifier作为一种高效、灵活的分类算法,在许多实际问题中都有良好的表现,值得进一步研究和应用。

与其临渊羡鱼,不如退而结网 1401

Python中的梯度提升算法实例

总结起来,Python中的梯度提升算法是一种强大的集成学习方法,可以用于回归、分类和其他机器学习任务。这使得我们能够从大量的特征中提取有价值的信息,并构建出准确预测的模型。在Python中,我们可以使用许多机器学习库来实现梯度提升算法,例如Scikit-learn。接下来,我们将使用一个实际的示例来演示如何使用梯度提升算法进行回归预测。假设我们有一个包含房屋特征和对应价格的数据集,我们的目标是根据这些特征来预测房屋的价格。通过调整模型的参数和使用其他特征工程技术,我们可以进一步改进模型的性能。

. 259

Python: 实现梯度提升回归算法

梯度提升回归(Gradient Boosting Regression)是一种常用的机器学习算法,可以用于回归问题。在该算法中,首先使用一个基本的模型进行训练,然后对其误差进行拟合,不断迭代提高模型的精度。本文将介绍如何使用Python实现梯度提升回归算法,并附上完整源码。通过以上代码,我们就可以实现梯度提升回归算法,并对数据集进行预测。当然,算法的效果也很大程度上依赖于数据集本身,因此在实际应用中需要进行适当调整和优化。Python: 实现梯度提升回归算法。

HackVibe的博客 345

用Python实现梯度提升树算法

GBDT模型的核心参数包括树的数量(n_estimators)、树的最大深度(max_depth)、学习率(learning_rate)等。这里我们设置了较小的树的数量和树的深度,以及较大的学习率。在实际应用中,我们还可以通过调整参数,改变数据集和特征,以及使用其他技巧来提高模型的精度和泛化能力。我们可以用Python代码来实现GBDT算法,主要步骤包括:数据的预处理、模型的初始化、模型的训练和模型的预测。首先,我们需要准备数据集。最后,我们可以使用训练好的模型对测试数据进行预测,并计算模型的准确率。

与其临渊羡鱼,不如退而结网 519

Python数据结构与算法:提升你的编程能力

Python数据结构和算法涵盖广泛的主题,这些主题涉及到Python程序员需要掌握的许多技能,包括掌握基本数据结构,如列表、字典、元组等;Python是一种高级编程语言,由于其易读性和易编写性,成为了最受欢迎和使用的编程语言之一,用于各种不同的应用程序和领域,包括Web应用程序、数据科学、机器学习和人工智能。Python中最常见的数据结构之一是列表,这是一种有序的集合,可以包含不同类型的数据。该函数在列表中逐个元素地搜索并返回目标元素的索引,如果未找到元素,则返回-1。这将打印列表中的下一个元素。

吃不胖. 110

使用Python实现并行计算算法:效率提升的利器

本项目旨在通过Python实现一个并行计算算法,展示如何利用Python的多线程和多进程模块进行并行计算,从而提高计算效率。具体步骤包括:环境配置与依赖安装使用多线程进行并行计算使用多进程进行并行计算任务划分与结果合并性能测试与比较通过本文的介绍,我们展示了如何使用Python实现并行计算算法。利用Python的threading和multiprocessing模块,可以在不同场景下显著提升计算效率。希望本文能为读者提供有价值的参考,帮助实现并行计算算法的开发和应用。

Echo_Wish 957

MATLAB算法实战应用案例精讲-【数模应用】梯度提升决策树(GDBT)(附python代码)

GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。近些年更因为被用于搜索排序的机器学习模型而引起大家关注。.........

qq_36130719的博客 2077

使用 Python+PaddleOCR 实现图文识别:从入门到精通

在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等。PaddleOCR 是百度开源的一款强大的 OCR 工具包,它集成了多种先进的算法和模型,能够高效准确地进行图文识别。本文将详细介绍如何使用 PaddleOCR 和 Python 实现图文识别,并给出具体的代码和步骤。

爱搬砖的程序猿 5474

蓝牙开发实战:如何用Wireshark抓取HCI协议包(附完整分析步骤)

本文详细介绍了如何使用Wireshark抓取和分析蓝牙HCI协议包,包括环境搭建、过滤器配置技巧、数据包深度解析及高级调试方法。通过实战案例,帮助开发者快速定位蓝牙连接问题,提升调试效率。

cuda7parallel的博客 1148

fastadmin云快充充电桩系统部署文档uniapp

多商户 嘎嘎快充V1.0部署文档 一、服务器环境: 服务器配置4核心8GB内存5M带宽以上配置 VX next1402 只支持linux环境 nginx1.22 php7.2 开启redis、fileinfo扩展,关闭禁用workerman gatewayworkerman需要的函数,如pcntl相关的函数 mysql5.7 supervisor redis 注意: 1.站点必须配置https、websocket配置wss 2.注意开放直连服务端口:2024,并添加到安全组 二、必

itholiday2014的博客 1629

【Azure 架构师学习笔记】- Azure Private Endpoint

公有云的其中一个特点是默认允许公网访问, 这就对企业环境带来风险,也是很多年前企业对公有云抵触的其中一个原因,现在这类问题已经很少,因为有了很多技术来确保云上的资源被安全地访问。其中Private endpoint(PE)就起到了很重要的作用。云上的某个资源如VM会创建在特定的网络(VNet/Subnet)上, 而其他如Storage Account , Azure SQL等PaaS服务则没有。如果你需要用VM 来访问这些PaaS资源,VM 就会通过资源的公网IP 来访问。

MVP黄钊吉(發糞塗牆) 1787

幸狐RV1106开发板运行Yolo8示例

rknn_model_zoo 是瑞芯微官方提供的 RKNPU 支持的各种主流算法的部署示例,目前对 Luckfox Pico 所使用的 RV1103/RV1106 有限支持,最新的示例支持 mobilenet 模型部署和 yolo 模型部署,本章以部署 yolov8修改版本为例介绍 rknn_model_zoo 示例的使用。:可选项,用于指定 RKNN 模型的保存路径,默认保存在 ONNX 模型同一目录下,名称为 ‘yolov8.rknn’例如“rv1106”。

qq_42730522的博客 3223

告别机床‘卡顿’!用C语言在STM32上实现连续小线段速度前瞻(附开源代码)

本文详细介绍了如何在STM32上使用C语言实现工业级连续小线段速度前瞻控制器,解决机床运动控制中的卡顿问题。通过轻量级算法框架设计和混合精度计算策略,显著提升加工效率和表面质量。文章包含开源代码和实战案例,帮助开发者快速掌握速度前瞻规划算法在嵌入式系统中的应用。

weixin_42571738的博客 185

07 Zabbix 微信告警

Zabbix 微信告警 1.注册企业微信 企业微信注册地址:https://work.weixin.qq.com 2.进入企业微信后台管理 2.1 添加微信成员 2.2创建应用 2.3 获取四项数据 (1)AgentID (2) Secret (3) 企业ID (4)部门ID 3.Zabbix Server配置 3.1确认脚本目录 # grep alertscripts /etc/zabbix/zabbix_server....

Jian Sun_的博客 1297

万字长文:YOLOv5+RK3588 NPU多线程加速全攻略——从理论到部署的终极优化

RK3588 NPU多线程加速优化教程摘要 本教程深入讲解了如何利用线程池技术优化RK3588 NPU上的YOLO目标检测模型推理性能。RK3588内置3个NPU核心,理论算力达6TOPS,为多线程优化提供了硬件基础。教程详细解析了线程池的核心组件(任务队列、工作线程、同步机制)和实现架构,包括类设计、初始化流程、工作线程逻辑(任务获取、NPU推理、结果存储三个阶段)以及任务提交/获取机制。通过预分配模型实例、线程绑定、流量控制等优化手段,实现了从单线程28FPS到多线程120FPS的显著性能提升,为边缘A

LXY_LOVE36的博客 1101

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: Python 中的文本分类
下一篇: Python 中的主成分分析 (PCA)
程序员孔乙己
博客等级 码龄5年 1190粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值