介绍
xgboost是gb算法的高效实现,xgboost中的基学习器除了可以是cart(gbtree)也可以是线性分类器(gblinear)。
与gbdt不同之处
xgboost在目标函数中显示的加上了正则化项,基学习为cart时,正则化项与树的叶子节点的数量t和叶子节点的值有关。
gb中使用loss function对f(x)的一阶导数计算出伪残差用于学习生成fm(x),xgboost不仅使用到了一阶导数,还使用二阶导数。gb中使用loss function对f(x)的一阶导数计算出伪残差用于学习生成fm(x),xgboost不仅使用到了一阶导数,还使用二阶导数
上面提到cart回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关 上面提到cart回归树中寻找最佳分割点的衡量标准是最小化均方差,xgboost寻找分割点的标准是最大化,lamda,gama与正则化项相关
支持并行化,这是xgboost的闪光点,虽然树与树之间是串行关系,但是同层级节点可并行。具体的对于某个节点,节点内选择最佳分裂点,候选分裂点计算增益用多线程并行。训练速度快。
xgboost算法的步骤和gb基本相同,都是首先初始化为一个常数,gb是根据一阶导数ri,xgboost是根据一阶导数gi和二阶导数hi,迭代生成基学习器,相加更新学习器。
优化内容
xgboost与gdbt除了上述三点的不同,xgboost在实现时还做了许多优化:
在寻找最佳分割点时,考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中根据上面求分割点的公式计算找出最佳的分割点。
xgboost考虑了训练数据为稀疏值的情况,可以为缺失值或者指定的值指定分支的默认方向,这能大大提升算法的效率,paper提到50倍。
特征列排序后以块的形式存储在内存中,在迭代中可以重复使用;虽然boosting算法迭代必须串行,但是在处理每个特征列时可以做到并行。
按照特征列方式存储能优化寻找最佳的分割点,但是当以行计算梯度数据时会导致内存的不连续访问,严重时会导致cache miss,降低算法效率。paper中提到,可先将数据收集到线程内部的buffer,然后再计算,提高算法的效率。
xgboost 还考虑了当数据量比较大,内存不够时怎么有效的使用磁盘,主要是结合多线程、数据压缩、分片的方法,尽可能的提高算法的效率。
IDEA REST Client使用教程
笙泉M0系列MCU应用于电池管理系统(BMS)
比特币日证明了阿根廷对加密货币依然热爱
MTK 6765 八核安卓核心板主板定制方案!
如何用光做产品的个性化表达
面试中出现有关Xgboost总结
FPGA应用技巧和诀窍:模拟DDS(调频调相)
灵瑞科技发布RFID高频ISO15693协议大功率18000-3M3协议读写模块
MySQL数据库是如何应对故障恢复与数据恢复回滚的问题呢?
ofdm技术发展现状
英特尔欲转型AI迎战英伟达,建立英特尔帝国
ZG PDU电源分配解决方案 实现12V/24V电源输出分配管理
什么是VQF格式
电抗器的如何取电感值?独立滤波变换器电路设计
诺基亚VR相机设备OZO:由8个同步快门传感器和8个麦克风组成
大气过电压的含义_大气过电压分为哪几种
研究员借AI技术发现早期胃癌
电子芯闻早报:抢占制高点,布局第三代半导体
奥地利微电子以模拟技术为数字电子产品增光添彩
物奇首颗车规级Al语音芯片出货突破30万片