XGB-19:Xgboost常见问题QA

常见问题解答

本文档包含关于XGBoost的常见问题。

如何调整参数

请参阅参数调整指南

模型描述

请参阅提升树介绍

大数据集

XGBoost被设计为内存高效。通常,只要数据适合本机内存,它就可以处理问题。这通常意味着数百万个实例。
如果内存不足,请查看使用分布式训练的教程页面,或者使用外部内存版本

处理分类特征

访问这个教程,了解分类数据处理和一些实际示例的演练。

为什么不在X(Spark, Hadoop)之上实现分布式XGBoost?

需要知道的第一件事是分布式并不一定能解决所有问题。相反,它会带来更多的问题,比如更多的通信开销和容错问题。最终的问题还是会回到如何推动每个计算节点的极限,并使用更少的资源完成任务(因此通信更少,失败的机会也更小)。

为了实现这些目标,决定重用单节点XGBoost的优化,并在其之上构建分布式版本。机器学习中对通信的需求相当简单,在意义上可以依赖一组有限的API(在案例中是rabit)。这样的设计允许重用大部分代码,同时可以移植到主要平台,如Hadoop/Yarn、MPI、SGE。最重要的是,它推动了可以使用的计算资源的极限。

如何将模型移植到系统?

XGBoost的模型和数据格式是可交换的,这意味着用一种语言训练的模型可以在另一种语言中加载。这意味着可以使用R训练模型,而使用Java或C++进行预测,后者在生产系统中更为常见。也可以使用分布式版本训练模型,并从Python加载它们进行交互式分析。有关更多信息,请参阅模型IO

支持LambdaMART吗?

是的,XGBoost实现了LambdaMART。查看参数中的目标部分。

如何处理缺失值

XGBoost默认支持缺失值。在树算法中,缺失值的分支方向是在训练过程中学习的gblinear提升器将缺失值视为零。

当指定了缺失参数时,输入预测器中等于缺失的值将被视为缺失并移除。默认情况下,它被设置为NaN

运行之间的结果略有不同

这可能会发生,由于浮点数求和顺序的非确定性和多线程。此外,分布式框架的数据分区变化也可能会出现问题。尽管通常整体的准确性会保持不变。

为什么使用稀疏和密集数据时看到不同的结果?

“稀疏”元素被视为“缺失”由树提升器处理,并由线性提升器作为零处理。但是,如果把稀疏矩阵转换回密集矩阵,稀疏矩阵可能会用0填充缺失的条目,这对于xgboost来说是一个有效的值。

参考

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值