小巧玲珑:机器学习届快刀XGBoost的介绍和使用

2023-11-02

欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~

作者:张萌

序言

XGBoost效率很高,在Kaggle等诸多比赛中使用广泛,并且取得了不少好成绩。为了让公司的算法工程师,可以更加方便的使用XGBoost,我们将XGBoost更好地与公司已有的存储资源和计算平台进行集成,将数据预处理、模型训练、模型预测、模型评估及可视化、模型收藏及分享等功能,在Tesla平台中形成闭环,同时,数据的流转实现了与TDW完全打通,让整个机器学习的流程一体化。

XGBoost介绍

XGBoost的全称为eXtreme Gradient Boosting,是GBDT的一种高效实现,XGBoost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear)。

什么是GBDT?

  • GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力(generalization)较强的算法。GBDT的核心在于,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。与随机森林不同,随机森林采用多数投票输出结果;而GBDT则是将所有结果累加起来,或者加权累加起来。

XGBoost对GBDT的改进

1 . 避免过拟合

目标函数之外加上了正则化项整体求最优解,用以权衡目标函数的下降和模型的复杂程度,避免过拟合。基学习为CART时,正则化项与树的叶子节点的数量T和叶子节点的值有关。

2 . 二阶的泰勒展开,精度更高

不同于传统的GBDT只利用了一阶的导数信息的方式,XGBoost对损失函数做了二阶的泰勒展开,精度更高。

第t次的损失函数:

对上式做二阶泰勒展开( g为一阶导数,h为二阶导数):

3 . 树节点分裂优化

选择候选分割点针对GBDT进行了多个优化。正常的树节点分裂时公式如下:

XGBoost树节点分裂时,虽然也是通过计算分裂后的某种值减去分裂前的某种值,从而得到增益。但是相比GBDT,它做了如下改进:

  • 通过添加阈值gamma进行了剪枝来限制树的生成
  • 通过添加系数lambda对叶子节点的值做了平滑,防止过拟合。
  • 在寻找最佳分割点时,考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,XGBoost实现了一种近似的算法,即:根据百分位法列举几个可能成为分割点的候选者,然后从候选者中根据上面求分割点的公式计算找出最佳的分割点。
  • 特征列排序后以块的形式存储在内存中,在迭代中可以重复使用;虽然boosting算法迭代必须串行,但是在处理每个特征列时可以做到并行。

整体上,通过上述的3个优化,加上其易用性,不太需要编程,XGBoost目前是GBDT体系中最受欢迎的工具。但是值得留意的是,当数据量很大,尤其是维度很高的情况下,XGBoost的性能会下降较快,这时推进大家可以试试腾讯自己的Angel,其GBDT比XGBoost性能更好噢

TDW体系中的XGBoost介绍

XGBoost在TDW体系中以两种形式存在

  • 提供出了拖拽式的组件,来简化用户使用成本
  • 提供出了maven依赖,来让用户享受Spark Pipeline的流畅

1. Tesla平台上的3个组件:

  • XGBoost-spark-ppc组件(基于社区版0.7,以Spark作业形式运行在PowerPC机型的集群上)
  • XGBoost-spark-x86组件(基于社区版0.7,以Spark作业形式运行在x86机型的集群上)
  • XGBoost-yarn组件(基于社区版0.4,以Yarn作业形式运行在x86机型的集群上)

目前来看,XGBoost的ppc版本,性能比x86的好,建议大家优先选择。

2. 公司Maven库中的3个依赖:

  • XGBoost4j-ppc(封装社区版0.7的API,在PowerPC机型上进行的编译)
  • XGBoost4j-x86(封装社区版0.7的API,在x86机型上进行的编译)
  • XGBoost4j-toolkit(封装HDFS IO、TDW IO、Model IO等功能)

Tesla中的XGBoost-on-spark组件介绍

Tesla中XGBoost-on-spark组件根据集群的机型区分成:XGBoost-spark-ppc组件和XGBoost-spark-x86组件。将以前的XGBoost-yarn组件进行了升级,体现在了:

数据源之间的打通、作业调试更友好、IO方式更丰富、数据处理的上下游延伸更广、model支持在线服务等方面。

  1. 数据源之间的打通

    • 消除了不同HDFS集群上的权限问题
    • 与TDW打通,数据流转更顺畅,开发成本更低
      • 用户可以不再编写程序生成LibSVM格式的数据文件,而是通过Hive或者Spark SQL生成TDW特征表,通过选择TDW特征表的某些列(selected_cols=1-2,4,8-10),由XGBoost-on-spark组件后台生成libsvm类型的输入
      • 可以针对TDW分区表,借助Tesla作业定时调度机制,可以进行XGBoost作业的例行化调度运行
  2. 作业调试更友好

    • 以Spark作业的形式,而非直接的Yarn作业的形式运行,用户对作业的运行情况更清楚
      • 可以查看作业的进度
      • 可以查看各节点上的日志信息
  3. IO方式更丰富

    • 输入的数据集来源,可以为之前的HDFS上LibSVM格式的文件形式。也可以为一张TDW表,用户通过选择TDW表中的某些列,由XGBoost-on-spark组件在后台生成LibSVM格式的输入。
    • 训练阶段增加了特征重要度(weight、gain、cover)的输出、以及3种类型model的输出:文本格式(用户可以直接查看)、LocalFile的二进制格式(用户可以下载到本地,利用python加载后在线预测)、HadoopFile的二进制格式(用户可以在Tesla环境中,利用Spark加载后离线批量预测)
    • 模型输出的3种格式举例


4 . 数据处理的上下游延伸更广

与Tesla平台深度整合

  • 可以拖拽Tesla的组件:数据切分、模型评估,实现数据处理的上下游功能
  • 可以利用Tesla的功能:参数替换、并发设置,进行批量调参

5 . model支持在线服务

  • 可以利用Tesla的模型服务,进行模型导出、模型部署、在线预测

总结

XGBoost是机器学习的利器,虽然小巧,但是功能强大,以其被实战检验过的高效,吸引了很多使用者。我们针对用户痛点进行了诸多改进,实现了用户在Tesla平台中更加方便的使用,大大减少了用户的开发成本,同时,我们也开放出了XGBoost API,让逻辑复杂的业务可以在自身系统中嵌入xgBoost,更加直接的对接TDW系统。后续有进一步的需求,欢迎联系Tesla团队,我们将提供更好的机器学习和数据服务。

相关阅读

基于腾讯开源 Angel 的 LDA* 入选国际顶级学术会议 VLDB
机器学习实战
大规模机器学习框架的四重境界(下)


此文已由作者授权腾讯云技术社区发布,转载请注明文章出处
原文链接:https://cloud.tencent.com/community/article/794649

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小巧玲珑:机器学习届快刀XGBoost的介绍和使用 的相关文章

  • AliOS-Things引入

    目录 一 简介 1 1 硬件抽象层 1 2 AliOS Things内核 rhino 编辑 1 3 AliOS Things组件 二 如何进行AliOS Things开发 三 安装环境 安装python pip git 修改pip镜像源 安
  • Python——实验四

    Python 实验四 一 数字出现次数排序 问题描述 给定n个整数 请统计出每个整数出现的次数 按出现次数从多到少的顺序输出 输入形式 第一行包含一个整数n 表示给定数字的个数 第二行包含n个整数 相邻的整数之间用一个空格分隔 表示所给定的

随机推荐

  • Python爬虫三:正则表达式的使用大全

    1 正则表达式的简介 1 1概念 正则表达式是对字符串操作的一种逻辑公式 就是用事先定义好的一些特定字符 及这些特定字符的组合 组成一个 规则字符串 这个 规则字符串 用来表达对字符串的一种过滤逻辑简而言之就是数据筛选过滤 1 2应用场景
  • python实现Flask GET Demo

    python代码 from flask import Flask request jsonify app Flask name 用 data路径路由 app route data def get data 以下一行是从URL中获取参数的ge
  • abb机器人指令手册_ABB机器人自定义错误处理

    更多内容请点击上方 ABB机器人实战技巧 关注 也可点击公众号下方 往期经典 浏览更多内容 转载请先后台留言 大家一起支持原创 推动机器人使用和发展 本公众号对各类ABB机器人应用 仿真 毕业设计提供技术支持 详细后台留言 本公众号诚挚希望
  • 【SQL】Spark HiveSQL常见报错

    无权限更新 Authorization failed No privilege Update found for outputs 库或表对象不存在 com microsoft sqlserver jdbc SQLServerExceptio
  • HDF5 CMake 生成 C\C++ 可用的 lib 文件和 dll 文件

    一 原料 HDF5 源码 下载地址 https www hdfgroup org downloads hdf5 source code 下载对应系统的版本 我的是 Windows 10 选择红框标示的版本 CMake 下载地址 https
  • Python Pandas对空值的处理

    1 dropna 删除所有值为空的行 s3 dropna axis index how all inplace False how字段可选有any和all any表示只要有空值出现就删除 all表示全部为空值才删除 inplace字段表示是
  • html实现侧边滑动效果,基于slideout.js实现移动端侧边栏滑动特效

    HTML5现在本领太大了 PC端已经无法满足它的胃口了 它将强势攻入移动端 所以移动端中各种特效也得基于HTML5实现 看看我们将要介绍的slideout js 能帮我们实现怎么样的侧边栏滑动特效呢 先看下运行效果 一 准备资料 只需要准备
  • 概率论 思维导图复习提纲

    2020 4 27更新 原xmind及pdf文件已上传至百度网盘 链接 https pan baidu com s 1q1U4cNkphVbfP8rZByLgrw 提取码 xte7 2020 4 4 更新 如果需要原xmind文件或pdf文
  • 图解红黑树-一文带你搞定旋转、插入、删除

    图解红黑树 一文带你搞定旋转 插入 删除 文章目录 图解红黑树 一文带你搞定旋转 插入 删除 toc 1 定义 2 性质 3 平衡操作 0 总结 1 插入 1 0 插入的节点为红色节点 1 1 被插入的节点是根节点 1 2 被插入的节点的父
  • Sublime Text 2.0.1 2217 版本破解注册方法(32位)

    准备工具 十六进制编辑器 这里以WinHex为例 1 安装最新的Sublime Text 2 0 1 2217版本http www sublimetext com 2 32位 2 备份sublime text exe 然后用 WinHex十
  • IntelliJ IDEA使用教程:一个沉浸式的 IDE 工具

    IntelliJ IDEA 一个沉浸式的 IDE 工具 本文基础 IntelliJ IDEA 旗舰版或者说是 JetBrains 家所有 IDE 的旗舰版 核心概念 讲 IntelliJ IDEA 的好 带更多人入坑 说几句老实话 劝别人换
  • RS485 硬件自收发切换的实现

    RS485抗噪音抗干扰能力强 传输距离远 支持多点通信 是工控行业首选串行接口 485规定的电气特性为2线 半双工多点通信 采用两线差分信号传输数据 具有抗共模干扰的能力 由于是半双工模式 因此通讯时需要切换收发状态 目前常用的485收发切
  • Ubuntu如何重启网络

    更多课程点击此处 快速链接 专栏目录 环境搭建安装问题笔记目录 付费专栏 付费课程 购买须知 个人博客笔记导读目录 全部 网络的IP地址没了 我们只要重启网络即可 sudo systemctl restart NetworkManager
  • “vue-amap“: “^0.5.10“, 高德地图 vue版本 H5地图 实现根据地名搜索坐标,经纬度

    本文介绍高德地图在vue框架中的使用方法 H5地图通用 首先引入 vue amap 0 5 10 npm install vue amap 然后在main js里写入如下代码 import VueAMap from vue amap Vue
  • javaweb 配置系统错误页面404或500 等其他错误代码

    web xml
  • Linux网络的DHCP、FTP原理及配置

    DHCP原理与配置 DHCP服务 使用DHCP动态配置主机地址 DHCP服务 可分配的地址信息主要包括 配置DHCP服务器 FTP 用来传输文件的协议 端口号 FTP数据连接模式 实现FTP功能 实验 DHCP服务 使用DHCP动态配置主机
  • 视图在SQL中的应用

    我们之前对 SQL 中的数据表查询进行了讲解 今天我们来看下如何对视图进行查询 视图 也就是我们今天要讲的虚拟表 本身是不具有数据的 它是 SQL 中的一个重要概念 从下面这张图中 你能看到 虚拟表的创建连接了一个或多个数据表 不同的查询应
  • 锚点机制在目标检测领域的发展综述

    摘要 目标检测是计算机视觉领域的基本任务 近年来 基于深度学习的目标检测研究发展十分迅速 锚点 anchor 机制广泛应用于主流目标检测器中 多尺度的锚点是检测器解决尺度问题的有效方法 但锚点策略也存在尺寸固定 模型鲁棒性差等问题 根据优化
  • fifo介绍及fifo IP核使用(工程文件获取请参考文末)

    一 fifo简介 1 fifo first in first out的缩写 先进先出数据缓存器 与普通存储器的区别 对外接口没有地址线 由此所带来的优点是 不用处理地址信号 时序较简单 缺点是 不能像普通存储器那样自由读写某个地址的数据 只
  • 小巧玲珑:机器学习届快刀XGBoost的介绍和使用

    欢迎大家前往腾讯云技术社区 获取更多腾讯海量技术实践干货哦 作者 张萌 序言 XGBoost效率很高 在Kaggle等诸多比赛中使用广泛 并且取得了不少好成绩 为了让公司的算法工程师 可以更加方便的使用XGBoost 我们将XGBoost更