XGBoost是一款编程人员都在使用的分布式梯度提升库。能够为数据处理提供不少帮助的软件XGBoost。您可以在软件中解决许多科学问题,您可以在设计数据处理软件和设计科学统计数据时添加XGBoost,使软件可帮助用户分析巨大数据,只要您的内存足够,您可以处理任何卷数据,您可以弥补数百万数据处理可以解决数十亿的问题,无论是数学还是科学问题,都可以通过这个软件配置提高计算力,并且可以将软件添加到各种环境操作中,可以添加到不同的计算平台运行,分布式运行,允许您在不同平台中处理数据,XGBoost模型和数据也可以是可移植的,这意味着您可以在使用Java或C ++运行预测时使用R培训模型,这在生产系统中更常见,如果您需要这个软件!
更新日志:
XGBoost更改日志
此文件记录在相反的时间顺序中的XGBoost库中的更改。
v1.4.1(2021.04.20)
这是一错误修复版本。
修复了某些大数据集的AUC的一些GPU实现。 (#6866)
v1.4.0(2021.04.12)
为R引入预先构建的二进制包,并支持GPU
从1.4.0版本,用户现在可以选择安装{XGBoost},而无需从源代码构建。这对于想要使用GPU算法(GPU_HIST)的用户来说特别有利,因为它们必须在必须使用CMake和NVCC之前从源代码构建{XGBoost}。现在安装{xgboost}就像GPU支持一样简单:R cmd安装./xgboost_r_gpu_linux.tar.gz。 (#6827)
查看https://xgboost.readthedocs.io/en/latest/build.html.
改进预测功能
XGBoost有许多预测类型,包括Shap Value计算和本地预测。在1.4版中,我们使用统一接口来为C API和Python API的基本预测功能进行大饰面。 (#6777,#6653,#6662,#6648,#6668,#6804)
从1.4,默认情况下,当通过输入数据支持时,Sklearn接口预测将使用本地预测。
用户可以使用与Dartbooster的本地预测,并使GPU加速Gbtree为它们。
现在,具有树模型的所有预测函数是线程。 Base_Margin支持可以改善局部预测。
公共接口中公开了一组新的C预测功能。
用户可见的更改是新添加的参数strict_shape。有关更多详细信息,请参阅https://xgboost.readthedocs.io/en/latest/prediction.html。
改进DASK界面
从1.4开始,DASK界面被认为是功能的,这意味着DASK现在支持单节点Python接口中找到的所有模型,包括但不限于随机林。此外,预测函数明显更快并支持表格值的计算。
DASK界面支持单节点SKLEarn接口中找到的大多数参数。 (#6471,#6591)
实施学习排名。在DASK界面上,我们使用对查询ID的新添加支持来启用组结构。 (#6576)
DASK界面具有Python类型的提示支持。 (#6519)
所有型号都可以安全腌制。 (#6651)
现在支持随机森林估计。 (#66.
02)
现在支持变形值计算。 (#6575,#6645,#6614)
评估结果在调度程序过程中打印。 (#6609)
DASKDMATRIX(和设备点DMATRIX)现在接受所有元信息。 (#6601)
预测优化。我们增强并加快了DASK界面的预测功能。有关其概述的进一步优化,请参阅文档中的最新DASK教程页面。 (#6650,#6645,#6648,#6668)
错误修复
如果使用的是使用最新的DASK并在此处存在于分布式.Multilock,XGBoost支持在同一群集中并行培训多个模型。 (#6743)
DASK.Client的错误修复启动异步任务,XGBoost可以在内部使用其他客户端对象。 (#6722)
其他改进文件,博客,教程和示威活动。 (#6389,#6366,#6699,#6532,#6501)
Python包
凭借DASK的变化和预测的整体改进,我们增强了一般的Python接口和IO来增强信息。从1.4开始,可以将增强功能名称和类型保存到JSON模型中。此外,作为某些型号的属性,Best_ist_Score是模型加载恢复。在Sklearn接口上,某些属性现在将实现为具有更好文档的Python对象属性。
重大变化:Renov数据预测功能中的所有参数更好地满足Sklearn估计界面。
重大变化:XGBoost用于DMATrix输入NP.NDARRAY在输入NP.NDARRAY中不会生成一些伪预资格。已删除该过程以避免与其他输入冲突。 (#6605)
现在通过培训支持,尽早继续停止。 (#6506)
现在,Dask和CUDF的可选进口太懒了。 (#6522)
如预测性改进摘要中所述,Sklearn接口用于预测的任何可能的位置。 (#6718)
诸如函数名称和功能类型等增强器信息现在保存到JSON模型文件。 (#6605)
现在,所有DMatrix接口(包括DeviceQuantileDMatrixDask接口中的所有接口)(如DASK更改摘要中所述)现在接受组和QID构造函数的所有元信息,以实现更好的一致性。 (#6601)
加载模型时恢复助推器属性,因此用户不必手动调用。 (#6593)
在Sklearn接口上,所有型号都接受Base_Margin评估数据集。 (#6591)
安装脚本的改进包括较小的SDIST大小和更快的安装速度(如果构建了C ++库)(#6611,#6694,#6565)。
Python包错误修复:
0的数量不验证该功能。 (#6472)
将度量配置移动到增强器中。 (#6504)
呼叫xgbmodel.fit()应该默认到清除助推器(#6562)
支持_estimator_type。 (#6582)
[Dask,Sklearn]纠正预测概率。 (#6566,#6817)
恢复未知的数据支持。 (#6595)
使用CV修复学习率计划计划。 (#6720)
在Sklearn文档中修复了小型排版(#6717)
[Python-ackage]修复类助推器:feature_types = none(#6705)
当找不到拆分时,特征重要性的除数是固定的0.(#6676)
JVM包
[jvm-packages]修复了甚至在没有自定义设置的问题的问题(#6738)
修正了潜在的任务尾手段的回调不会呼叫(#6612)
[JVM]添加了直接从字节阵列加载助推器的功能(#6655)
[JVM-Packages] JVM库加载器扩展(#6630)
R文件:制作DMATrix的结构。
修复xgb.train的R文档。 (#6764)
中华民国
我们重新实现XGBoost中的ROC-AUC指数。新实现支持多个分类,并提供更好地支持非二进制任务的学习。此外,它在分布式环境中具有更好的定义,并且可以为无效的数据集处理。 (#6749,#6747,#6797)
全局配置。
从1.4开始,XGBoost的Python,R和C接口支持新的全局配置模型,用户可以指定一些全局参数。目前,受支持的参数是冗长和USE_RMM。后者是实验的,有关详细信息,请参阅RMM插件演示和相关的自述文件。 (#6414,#6656)
其他新功能。
更好的句柄支持输入数据类型__Array_Interface__。对于某些数据类型,包括GPU输入和Scipy.Sparse.csr_matrix,xgboost使用__array_interface__来处理基本数据。从1.4,XGBoost可以接受任意阵列步骤(这意味着支持列主要步骤),而无需复制数据,从而最大限度地减少大量的内存消耗。 __cuda_array_Interface__现在也支持版本3.(#6776,#6765,#6459,#6675)
改进的参数验证,现在提供包含XGBoost空间的参数将触发错误。 (#6769)
对于Python和R数据包,〜支持包含主指示符的文件路径。
如Python更改摘要中所述,JSON模型现在可以保存培训的助推器的功能信息。 JSON模式将相应更新。 (#6605)
分类数据支持的开发仍在继续。添加了加权数据支持和DART增强支持。 (#6508,#6693)
如DASK更改摘要中所述,排名现在支持QID查询组的参数。 (#6576)
dmatrix.lice现在可以消耗numpy数组。 (#6368)
其他重大变革
除了特征名称生成外,还有两个重大变化:
删除内存快照的二进制格式。 (#6513,#6640)
更改二进制文件:Logitraw目标的默认评估指示符到logloss(#6647)
CPU优化
除了对预测功能的一般变化之外,它还优化了CPU的实现。 (#6683,#6550,#6696,#6700)
HOT提高了采样初始化的性能。 (#6410)
核心图书馆的重要修复
这些修补程序不存在于特定语言绑定中:
固定伽玛回归。这包括检查无效的输入值,固定伽玛偏差度量,并为Gamma的负惯用公制标准提供更好的浮点保护。 (#6778,#6537,#6761)
GPU_HIST在早期版本中,随机森林可能产生低精度。 (#6755)
当数据大小超过32位整数时,GPU绘图中的固定错误。 (#6826)
内存消耗修复主要适配器(#6779)
使用RMM时,请勿估计草图的批量大小。 (#6807)(#6830)
使用缺失的值来修复。 (#6787)
在UpdatePosition中归因于UpdatePosition中的双缓冲区来修复GPU_HIST(#6757)中的完善返回
将正确的split_type传递给GPU预测器(#6491)
修复DMatrix函数名称/类型IO。 (#6507)
sparsepag专门使用视图来避免某些数据访问。 (#6590)
检查无效数据。 (#6742)
修复重定位包括在cmakelist(#6734)(#6737)
使用要素类型修复DMatrix切片。 (#6689)
其他弃通知:
此版本将是支持CUDA 10.0的最新版本。 (#6642)
从下一个版本开始,由于使用Manylinux2014标签,Python软件包将需要PIP 19.3+。此外,不支持CentOS 6,Rhel 6和其他旧版本。
已知的问题:
由MacOS构建的JVM包不支持独特的多线程多线程。要使用JVM软件包启用多线程,麦斯科斯芯片将需要从源代码构建JVM软件包。请参阅https://xgboost.readthedocs.io/en-cn/latest/j
vm / index.html #splion-from源
文件
添加了Tree_Method参数的专用页面。 (#6564,#6633)
[DOC]将FLAML添加到XGBoost的快速调整工具(#6770)
将文档添加到测试目录中。 [跳过ci](#6760)
修复configpy的文档字符串以使用正确的字符串版本加载(#6458)
更新Demo以进行预测。 (#6789)
[文档]描述AUCPR用于二进制类别/排名(#5899)
更新C API评论(#6457)
修复文档。 [跳过ci](#6669)
维护:测试,持续集成
输入test_boost_from_predim的CPU。 (#6818)
[ci]上传xgboost4j.dll到s3(#6781)
更新DMLC核心子模块(#6745)
[CI]使用manylinux2010_x86_64容器供应商libgomp(#6485)
添加公寓锻造徽章(#6502)
修复合并冲突。 (#6512)
[ci] split main.yml,添加mypy。 (#6515)
[中断]升级CUDF和RMM每晚0.18; RMM插件需要RMM 0.18 +(#6510)
“featue_map”修改为“feature_map”(#6540)
添加用于生成分发Tarball的脚本。 (#6544)
将凭据添加到.gitignore(#6559)
删除测试中的警告。 (#6554)
更新DMLC心子模块并符合新API(#6431)
禁止较早的客户承担健康检查。 (#6589)
修复Pylint。 (#6714)
[ci] clear r pack焦炭(#6746)
排除对GitHub操作执行的DMLC测试。 (#6625)
使用权限来测试回归指示器。 (#6729)
添加帮助脚本和文档以发布PIP包。 (#6613)
支持Pylint 2.7.0(#6726)
删除GitHub操作中的R缓存。 (#6695)
[CI]不要混淆为ARM和X86_64平台构建的隐藏的可执行文件(#6646)
[CI]向Jenkins管道添加ARM64测试(#6643)
暂时禁用S390x和ARM64在Travis上测试。 (#6641)
将SDIST测试移动到动作。 (#6635)
[Dusk]返工基本保证金测试。 (#6627)
维护:重建代码以提高可读性和可维护性
改善OpenMP异常处理(#6680)
改进字符串视图以减少字符串分配。 (#6644)
简化跨度检查。 (#6685)
公共调度程序用于阵列接口。 (#6672)
此文件记录在相反的时间顺序中的XGBoost库中的更改。
## v1.30(2020.12.08)
### xgboost4j-spark:异常应该被典雅取消,而不是杀死火花context(#6019)。
*默认况下,xgboost4j-spark中的异常可能导致整个火花Context关闭,并且您需要重新启动Spark集群。这种行为通常会带来巨大的不便。
*从1.3.0版本中,XGBoost添加了一个新的参数`killsparkcontextonworkerfailure来选择性地防止杀灭火花context。如果设置了此参数,则异常将被取消典雅的培训作业,而不是终止SparkContext。
### gputehap:treeshap算法gpu加速(#6038,#6064,#6099,#6163,#6332)
* [Shaps://github.com/slundberg/shap)是解释机器学习模型预测的博弈论方法。它计算每个示例的特征重要性分数,从而确定每个功能如何影响特定预测。 TreeShap是一种优化的Shap算法,专为决策树集成而设计。
*从1.3.0版本中,您现在可以使用GPU与CUDA功能加速Treeshap算法。查看[演示笔记本](https://github.com/dmlc/xgboost/blob/master/demo/gpu_acceleration/shap.ipynb)。
* Treeshap算法的CUDA托管在[Rapidsai / gputehap](https://github.com/rapidsai/gputerehap)中托管。 XGBoost将其导入Git子模块。
###新型pthon回调api(#6199,#6270,#6320,#6348,#6376,#6399,#6441)
* XGBoost Python软件包现在提供重新设计的回调API。使用新的回调API,您可以设计idomic Python的各种培训扩展。此外,新的回调API允许您停止使用此NASK API(`xgboost.dask。)。查看[教程](https://xgboost.readthedocs.io/en/release_1.3.0/python/callbacks.html)和[tttps://github.com/dmlc/xgboost/blob/master / demo / guide-python / caverbacks.py)。
###使用`devicequantiledmatrix` /`daskdevicequantiledmatrix`启用大数据(#6201,#6229,#6234)。
*`device QuantileDmatrix`避免额外的培训数据副本,保存内存,节省大数据,保存更大的空格。不幸的是,具有超过2 ^ 31个元素的大数据正在触发幼崽和推力的整数溢出错误。跟踪问题:#6228。
*此版本包含各种解决方法,以允许大数据使用`devicequantiledmatrix`:
- 循环在`copy_if`(#6201)
- 骑自行车的``thrust :: dream'(#6229)
- 内部实施扫描算法以处理更大的偏移(#6234)
###支持切片树模型(#6302)
*使用早期停止后通常更容易出错,因此要访问模型的最佳迭代,并且需要手动传递到预测()函数的ntree_limit参数。
###改进了与DASK的集成
*支持反向代理环境,如Google Kubernetes引擎(#6343,#6475)
* XGBoost培训将不再使用所有可用的工人。相反,它只使用包含输入数据(#6343)的工作程序。
* DASK培训API,新的回调API很好。
* Daskxgbclassifier和Daskxgbregressor的预测()和拟合()函数现在被基本边距接受(#6155)。
*支持DASK API(#6130,#6132,#6333)中的更多多样化数据。
*允许在`predict()`以“kwargs`”的形式提供额外关键字参数(#6117)
*修复了DASK界面中的拼写错误:`sample_weights`-> sample_wight`(#6240)
*由于DASK可以生成空间分区(#6379),因此在AFT生存期内允许空数据矩阵
*通过所有工人的重叠预测加速预测速度(#6412)
###对对实支持支持支持支持(#6137,#6165,#6166,#6165,#6166,#6166,#6166,#6166,#6166,#6166,#6166,#6166,#6166,#6166,#6166,#6166,#6166,#6166,#6219)
*目前,XGBoost要求用户对分类变量进行热量编码。这将对性能产生不利影响,因为您创建了许多虚拟变量导致更高的内存消耗,并且可能需要适合更深的树木以实现等效的模型精度。
* XGBoost版本1.3.0包含直接处理节点中的类别变量的实验支持。每个测试节点的条件是“match_set中的feature_value \”,其中右侧的“match_set”包含在一个或多个匹配类别中。 match_set中的匹配类别表示遍历正确的子节点的条件。目前,XGBoost只会生成只有匹配类别的分类拆分(“一vs-rest split”)。在未来的版本中,我们计划消除此限制,并在“match_set”中分配多个匹配类别。
*类别拆分需要使用JSON模型序列化。传统的二进制序列化方法不能用于保存(持久性)模型,分类拆分。
*笔记。此功能目前处于高度的测试阶段。需要你使用风险来使用它。查看[#5949]的限制(http://github.com/dmlc/xgboost/pull/5949)。
###实用插件(#5873,#6131,#6150,#6150,#6182)
* Rapids Memory Manager库([Rapidsai / RMM / Rapidsai / RMM)为NVIDIA GPU提供了一系列高效内存分配器。通过启用RMM集成插件,XGBoost现在可以与RMM提供的内存分发器一起使用。使用此插件,XGBoost现在可以共享通用GPU内存池,其中包含使用RMM(例如,Rapids Data Science Pack)的其他应用程序。
*#6297解决方案后,该插件将很快被视为非实验插件。
### ONEAPI编程模型的实验插件(#5825)
* ONEAPI是用于英特尔开发的编程接口,为各种类型的硬件提供编程模型(例如,CPU,GPU,FGPA和其他硬件加速)。
* XGBoost现在包括用于使用ONEAPI的实验插件来预测功能和目标功能。插件主机位于“plugin / uppater_oneapi”目录中。
*路线图:#5442
### xboost模型现在触发JSON序列化(#6027)
* JSON字符串表示和相关配置现在将包含XGBoost模型。
### API新功能
* [r]使用ggplot2添加shap摘要(#5882)
* Modin DataFrame现在可以用作输入(#6055)
* [jvm-packages]添加'getnumfeature`方法(#6075)
*添加mape指示器(#6119)
*实施GPU预测叶。 (#6187)
*在“XGBClassifier”(#6269)中启用CUDF / CUPY输入
*文档树的特征权重方法。 (#6312)
*添加一个`fail_on_invalid_gpu_id`参数,这将导致xgboost在查看gpu_id`无值(#6342)时终止
###销毁:分类变更的默认评估指示符到“logloss` /`mlogloss`(#6183)
*默认度量是准确的,当我们真正优化“二元的物流:Logistic`目标”时,使用精度度量的早期停止在统计中不一致。
*为了保持统计一致性,分类的默认指示符已更改为“logloss”。用户可以通过显式指定“eval_metric”来选择旧行为。
###毁:现在我已经删除了skmaker`(#5971)
*“Skmaker`更新尚未记录或测试。
###中断:JSON模型格式不再存储叶数(#6094)。
*叶数字段已被丢弃,并且不使用XGBoost代码库中的任何位置
###中断:XGBoost现在需要MacOS 10.14(Mojave)及更高版本。
* Homebrew被遗弃对MacOS 10.13(High Sierra)的支持,因此我们无法从MacOS 10.13(`Libomp`)上的Homebrew安装OpenMP运行时。请使用MacOS 10.14(Mojave)或更高版本。
###放弃通知
* xgbclassifier中的LabelEncod现在丢弃,并将在下一个辅助版本(#6269)中删除。您必须支持多种类型的输入,例如CUDF数据帧或CUPY数组。
*不建议在Python接口中使用一些位置参数(#6365)。对于某些功能参数,用户将使用副警告使用位置参数。新代码应尽可能多地使用关键字参数。我们还没有决定使用关键字参数。
###错误修复
*在Big-Endian arch上,字节顺序在二进制序列化程序中交换,以启用由小型机器加载的模型(#5813)。
* [JVM-Packages]使用包含Double.Nan修复确定性分区的数据集(#5996)
*将GPU历史的树深度限制为31以防止整数溢出(#6045)
* [jvm-packages]设置与c ++代码中的默认值对齐的`maxbins`到256(#6066)
* [R]固定凯切检查(#6077)
*为`scipy.sparse.coo_matrix`添加支持(#6162)
*在草图中处理重复值。 (#6178)
*捕获C API中的所有标准异常。 (#6220)
*修复线性GPU输入(#6255)
*正确的局部预测间隔。 (#6259)
* [r]允许`xgb.plot.importance()`呼叫填充网格(#6294)
*环绕着DASK库。 (#6309)
*外部内存的确定性数据分区(#6317)
*避免重置每个配置的种子。 (#6349)
*修复图形可视化中的标记错误(#6369)
* [JVM-Packages]修复了由于竞争条件(#6373)暂停潜在的单元测试套件的问题(#6373)
* [r]从`r check -as-crap`(#6374)的正确警告
* [r]修正了崩溃用于使用nold r(#6378)
* [R]不要将连续标签转换为因素(#6380)
* [r]删除使用`的使用()`(#6387)
*将来自xgbclassifier.set_param / xgbregressor.set_param的参数传送到底层的助推器手柄。 (#6416)
* [r]修复r包安装在cmake上(#6423)
*在CUPY阵列中强制执行优先顺序(#6459)
*修复了在传递给Scikit-Learn API的参数中过滤调用对象的问题。 (#6466)
###维护:测试,连续集成,建筑系统
* [CI]在GitHub动作中改善了JVM测试(#5930)
*重建绘图测试以使其独立运行(#6040)
* [CI]根据后续推送取消(#6011)
*修理Dask PyTest灯光(#6024)
* [ci]将intinters迁移到github操作(#6035)
* [CI]从GitHub操作中删除Win2016 JVM测试(#6042)
*使用`build_static_lib`选项修复cmake build(#6090)
*请勿在CMAKE中导入(#6093)
*解决MacOS AppleClang 11(#6103)的编译器错误
* [ci]通过在正确的目录中运行ctest来修复它(#6104)
* [R]指定警告以使模型兼容性测试(#6114)
* [jvm-packages]添加xgboost4j-gpu / xgboost4j-spark-gpu模块,使其易于发布(#6136)
* [CI]时间GPU测试。 (#6141)
* [r]删除configure.ac(#6152)中的警告
* [CI]升级CUDF和RMM每晚0.16;升级到Ubuntu 18.04(#6157)
* [ci]测试c api演示(#6159)
*生成设备调试信息的选项。 (#6168)
*更新'gitialoreore`(#6175,#6193,#6346)
*隐藏dmlc-core的c ++符号(#6188#6188)
* [CI]在特拉维斯 - CI(#6200)添加ARM64作业
* [CI]修复了CUDA 11的码头建立(#6202)
* [ci]移动非OpenMP GTEST到GitHub操作(#6210)
* [jvm-packages]固定xgboost4j-gpu,xgboost4j-spark-gpu build(#6216)
*为分类数据支持添加更多测试(#6219)
* [DASK]测试数据初始化。 (#6226)
*从4.11的4.11碰撞4.11(#6230)
*在/ jvm-packages / xgboost4j-gpu,从4.11到4.13.1的JUnit(#6233)
* [CI]减少RMM的测试负载(#6249)
* [CI]为AARCH64平台构建一个Python轮(#6253)
* [CI]詹金斯对CPU测试的时间。 (#6257)
* [CI]手臂上跳过DASK测试。 (#6267)
*修复了测试中的错误单词(#6271)`is_arm()。
* [ci]替换`egrep`(#6287)
*支持统一的构建。 (#6295)
* [CI]测试表测试
标记为xfail(#6299)
* [CI]为每个CUDA版本使用单独的Docker缓存(#6305)
*添加了`uder_nccl_lib_path`选项,启用了构建期间的`nccl_library(#6310)
*修复不稳定的数据初始化测试。 (#6318)
*为GitHub操作添加徽章(#6321)
*可选的`find_package的消毒剂。 (#6329)
*始终在Python测试中使用PyTest(#6337)
*固定警告消息中的空间(#6340)
*更新'custom_metric_obj.rst`(#6367)
* [ci]使用的`--as-cran`标志上的github动作(#6371)
* [ci删除r检查jenkins(#6372)
*将GPU外部内存测试标记为XFail。 (#6381)
* [ci]添加nold r测试(#6382)
*修复MPI版本。 (#6403)
* [ci]升级到麦斯科斯莫斯映像(#6406)
*修复杂交页DMATrix测试。 (#6417)
* [CI]升级CUDF和RMM每晚017(#6434)
* [ci]修复中心6码头图像(#6467)
* [ci] manylinux python轮[lib]供应商libgomp(#6461)
* [ci] libgomp供应商补丁(#6482)
###维护:清洁和合并兔子亚基(#6023,#6095,#6096,#6105,#6262,#6275,#6290)
*现在将rabit子确保作为XGBoost代码库的一部分维护。
* rabit测试现在是XGBoost测试套件的一部分。
* rabit现在可以在Windows平台上建立。
*我们使用clang-tidy将所有代码重新格式化为C ++代码。
* XGBoost的公共标题不再依赖rabit标题。
*删除兔子未使用的CMAKE目标。
*从rabit删除并删除单点模型恢复,这大大简化了rabit代码。在过去几年中,单点模型恢复功能尚未充分维护。
*我们将兔子的一部分删除为xgboost。
###维护:重建代码以提高可读性和可维护性
*统一的CPU历史素描(#5880)
* [R]修复1:长度(x)和其他小物体(#5992)
*统一评估功能。 (#6037)
*使二进制箱搜索重用。 (#6058)
*统一设置索引数据。 (#6062)
* [r]删除`stringi`依赖性(#6109)
*合并摘录切成了定量释放者。 (#6125)
*缩小C ++编译器警告(#6197,#6198,#6213,#6286,#6325)
*清理Python代码。 (#6223)
*小清理到评估员。 (#6400)
###可用性改进,文档
* [jvm-packages]添加样本以处理除0以外的缺失值(#5677)
*将DMatrix使用示例添加到C API演示(#5854)
*列出“DaskDeviceQuantiledMatrix`”文档中。 (#5975)
*更新Python自定义目标演示。 (#5981)
*更新JSON模型架构以记录更多目标函数。 (#5982)
* [Python]在不使用“缺失”字段时修复警告。 (#5969)
*修复跟踪器日志记录中的拼写错误(#5994)
*将警告移动为空数据集,以显示所有目标和度量标准的警告(#5998)
*更正每晚安装的说明。 (#6004)
* [文档]将DTREEVIZ添加到与第三方软件集成的示例性示例(#6013)
* [jvm-packages] [doc]更新JVM包的安装文档(#6051)
*修复`xgboost.callback.early_stop`文档字符串法术错误(#6071)
*将缓冲区后缀添加到外部内存演示中使用的文件。 (#6088)
* [doc]记录参数`kill_spark_context_on_worker_failure`(#6097)
*修复自定义目标的链接(#6100)
*更新DASK文档。 (#6108)
*验证体重是积极的。 (#6115)
*记录更新的CMake版本要求。 (#6123)
*将演示文稿添加到“daskdevicequantiledmatrix”。 (#6156)
*常见问题解答的外观修复(#6161)
*更正错误消息。 (#6176)
* [doc]使用xgboost(#6177)添加数据科学竞赛中获奖解决方案列表
*修复演示中的评论以使用正确的参考(#6190)
XGBoost(#6192)更新获奖解决方案列表
*统一构建状态徽标风格(#6203)
* [文档]添加有关GPU编译器的信息(#6204)
*更新屡获殊荣的解决方案列表(#6222,#6254)
*将链接添加到xgboost的Twitter句柄(#6244)
*修复XGBClassifier方法中的子部分字符串(#6247)
*添加赞助商链接到Funding.yml(#6252)
*将CLI演示数据分组到子目录中。 (#6258)
*减少“GBTree”的警告信息。 (#6273)
*在C / C ++应用程序中使用C API创建教程(#6285)
*更新CMake建立插件指令(#6289)
* [doc]制作dask发行举例副本副本(#6345)
* [Python]添加选项以从系统路径使用`libxgboost.so。 (#6362)
*修复DOC中的一些语法错误(#6393)
*修复CLI文档的链接(#6396)
*改进了Dask API的文件(#6413)
*用误导修改异常信息:没有这样的参数allow_non_zero_missing(#6418)
*修复了CLI排名演示。 (#6439)
*修复断开连接的链接。 (#6455)
软件功能:
XGBoost是一个优化的分布式渐变增强库,旨在高效,灵活和便携。它在梯度升压框架下实现了一种机器学习算法。 XGBoost提供了并行树增强功能(也称为GBDT,GBM),可以快速准确地解决许多数据科学问题。相同的代码在主分布式环境(Hadoop,S,MPI)上运行,并且可以在示例之外解决数百个项目。
现在,我们提供一个简单的界面,通过指定一系列增强功能来切片切片树模型。树集合可以通过切片接口分成多个子集。
此外,回调到早期停止现在支持“save_beest`”选项。启用后,XGBoost将在最佳增强的回合中保存(持久性)模型,并丢弃最佳圆形。
功能(列)加权后续采样(#5962)
现在可以通过添加正确的采样来对特征(列)进行采样,这更有可能在样本中选择更高的权重。加权二级采样允许您通过在树拆分中选择一组功能来编码域知识。另外,通过将零右分配给特定特征,可以防止它在任何拆分中使用。
新版本
性能改进
多核CPU的各种性能改进
- 优化DMATrix的施工时间的3.7倍。
-cpu预测性能可以增加3.6倍。
- 优化CPU草图以减少所有稀疏数据
- 分配MRS的线程以构建ZHIST将速度提高1.7次。
- 禁用用于创建DMatrix的超线程(#6386)。这可以通过两次增加DMATrix创建速度。
- 在预测中简单地修复静态表皮
统一的线程配置以轻松使用所有CPU内核
[JVM-Packages]清除确定性分区的计算方法
通过实现侵入指针(#6129)加速JSON序列化。这会使性能提高1.5〜2次。
官方特色:
功能交互约束
决策树是一个强大的工具,用于发现变量之间的交互(功能)。由于基于父节点的条件确定子节点的条件,因此在遍历路径中显示在一起的变量将彼此交互。例如,下图中突出显示的红色路径包含三个变量:\(x_1 \),\(x_7 \)和\(x_ {10} \),从而突出显示预测(在突出的叶节点中)是\(x_1 \),\(x_7 \),\(x_ {10} \)。
当树的深度大于1时,许多变量将在最小化训练损失的基础上交互,并且决策树可以捕获错误的关系(噪声),而不是总结不同数据集的合法关系。功能交互约束可以确定允许哪些变量交互,这不是交互式的。
潜在的福利包括:
通过专注于有效的相互作用,可以通过以特定区域或用于交互的算法排序的算法来获得更好的预测性能。
预测噪音较小;更好的摘要
用户可以更好地控制模型的适用范围。例如,由于规则,用户也可能想要排除一些交互即使交互良好。
一个简单的例子
特征交互约束根据允许交互的可变组表示。例如,约束指示变量[0,1] \(x_0 \)和\(x_1 \)彼此相互作用,但没有其他变量。类似地,[2,3,4] \(x_2 \),\(x_3 \),\(x_4 \)彼此互动以交互,但没有其他变量。例如,一组函数交互被表示为嵌套列表,例如,每个函数是允许彼此交互的一组函数索引。 [[0,1],[2,3,4]]
在下图中,左决策树违反了第一个约束(,corre
CT决策树与第一和第二约束(,)都符合。 [0,1] [0,1] [2,3,4]
实施功能交互XGBoost
在XGBoost中强制执行功能交互约束非常简单。在这里,我们将展示使用Python的示例,但是相同的基本思想可以扩展到其他平台。
假设以下代码适合您的模型,但没有元素交互约束:
然后,使用元素交互式约束安装以仅适合一个参数:
树木施工算法的选择。要使用交互式约束,您必须在下面设置Tree_Method参数:精确,steg,大约或gpu_hist。支持GPU_HIST和大约仅添加为1.0.0。
高级主题
交互式约束背后的直觉非常简单。用户具有关于不同特征之间的关系的先验知识,并在模型构造期间将其进行编码为约束。但指定的约束周围有一些微妙的东西。拍摄约束作为示例,第二个功能出现在两个不同的交互集中,并且这样的联邦功能允许和交互,是的。在下图中,根部分割在特征。因为它应该能够与之交互,所以所有4个功能都是合法划分的,而不考虑指定的约束。 [[1,2],[2,3,4]] [1,2] [2,3,4] 2 {1,3,4} 2
这导致了功能交互式约束的一些有趣含义。采取另一个例子。假设我们的训练数据中只有三种可用功能,以表明仔细阅读器可能会找到上述约束。由于在根节点中选择了哪个函数,因此所有制造商必须包括每个函数作为法律拆分候选,以避免违反交互式约束。 [[0,1],[0,1,2],[1,2]] [0,1,2]
在最后一个示例中,我们使用并选择根节点的分辨率。构建树的第二层是唯一的合法普遍候选对象,因为它属于相同的约束集,所以它本身就是唯一的候选对象。根据下面的示例树的生长路径,第二层的节点分为特征。然而,由于事实属于第二个约束,在第三层中,我们需要包括所有元素来符合其上升。 [[0,1],[1,3,4] 01011 [1,3,4]