跳到内容

另请参阅 PYDF 变更日志

变更日志

注意:这是 C++ 库的变更日志。Python 移植版有单独的变更日志,位于 yggdrasil_decision_forests/port/python/CHANGELOG.md

特性

  • 将 GBT 模型训练速度提高约 10%。
  • 支持在 Isolation Forests 中使用类别型和布尔型特征。
  • 将 LAMBDA_MART_NDCG5 重命名为 LAMBDA_MART_NDCG。旧名称已弃用,但仍可使用。
  • 允许配置 NDCG 损失的截断。
  • 添加对排序梯度提升树模型分布式训练的支持。
  • 添加使用 "avro:" 前缀支持 AVRO 数据文件。
  • 弃用 SparseObliqueSplit.binary_weights 超参数,转而使用 SparseObliqueSplit.weights

修复

  • 修复斜分割的结构变量重要性计算问题。

杂项

  • 损失函数选项现在定义在 model/gradient_boosted_trees/gradient_boosted_trees.proto 中(之前在 learner/gradient_boosted_trees/gradient_boosted_trees.proto 中)
  • 移除 C++14 支持。

1.10.0 - 2024-08-21

特性

  • 添加对 Isolation Forests 模型的支持。
  • CART 学习器中 num_candidate_attributes 的默认值从 0(Random Forest 风格采样)更改为 -1(不采样)。这是 CART 普遍接受的逻辑。
  • 添加了对 GCS 文件 I/O 的支持。

1.9.0 - 2024-03-12

特性

  • 在超参数调优器中添加 "parallel_trials" 参数,以控制并行运行的试验次数。
  • 添加对自定义损失函数的支持。

1.8.0 - 2023-11-17

特性

  • 支持 GBT 距离计算。
  • 在 GBT 训练时自动移除旧快照。

修复

  • 使用 Mean Squared Error 损失和 Mean Average Error 损失进行回归时,梯度被错误地截断,导致预测不正确。
  • 将依赖从 boost 更改为 boost_math 以加快构建速度。

1.7.0 - 2023-10-20

特性

  • 添加对 GBT 的 Mean Average Error (MAE) 损失函数的支持。
  • 添加示例之间的成对距离计算。
  • 默认情况下,使用工作缓存进行训练时,仅保留最后三个快照,以应对训练中断。

新接口

  • 请查看 port/python 中的新 Python 接口!它目前仍处于实验阶段,但您已经可以使用 pip install ydf 从 PyPi 安装它。

1.6.0 - 2023-09-28

重大变更

  • 分布式梯度提升树学习器的依赖已从 //third_party/yggdrasil_decision_forests/learner/distributed_gradient_boosted_trees 重命名为 //third_party/yggdrasil_decision_forests/learner/distributed_gradient_boosted_trees:dgbt。请注意,大多数情况下,建议使用 //third_party/yggdrasil_decision_forests/learner:all_learners 导入学习器。
  • 训练配置必须包含一个标签。缺失的标签不再被解释为标签是输入特征 ""。

特性

  • 添加对梯度提升树的单调约束支持。
  • 提高数据集读写速度。

修复

  • 在使用 32 位示例索引编译 YDF 时,对超过 2^31(即约 20 亿)个示例进行分布式训练时,提供正确的错误消息。
  • 修复使用 Visual Studio 2019 编译 Windows 的问题
  • 改进了无效训练配置的错误消息
  • 替换了过时的依赖

1.5.0 - 2023-07-03

特性

  • 将 experimental_analyze_model_and_dataset 重命名为 analyze_model_and_dataset
  • 添加新的 GBT 损失函数 POISSON,用于泊松对数似然。
  • Go API:可检查类别型字符串值。
  • 改进了单位权重数据集的训练速度。
  • 支持 MHLD 斜决策树。
  • 多线程计算 RMSE。
  • 添加了 Uint8 推理引擎。
  • 添加了多任务学习,其中作为“次要”训练的模型输出被用作作为“主要”训练的模型的输入。

修复

  • Go API:修复了 OutOfVocabulary 常量上的拼写错误。
  • 提升模型的错误消息。
  • 移除模型编译器中的所有者泄漏问题。
  • 修复 SelGB 采样的错误限制问题
  • 改进文档。

变更

1.4.0 - 2023-03-20

特性

  • 加快模型分析工具中 PDP 和 CEP 的计算速度。
  • 添加将模型编译为 .h 文件功能。
  • [JS 移植版] 在模型加载方法中添加 "prefix" 参数。
  • 将日志函数从 LOG 重命名为 YDF_LOG,以限制与 TF 或 Absl 发生冲突的风险。

修复

  • [JS 移植版] 修复内存泄漏。释放 emscripten 对象。

1.3.0 - 2023-01-24

特性

  • 设置通用超参数 "subsample" 足以启用随机子采样(无需同时设置 "sampling_method=RANDOM")。
  • 改进决策树结构的显示方式。
  • 超参数优化器字段 "predefined_search_space" 自动配置在自动超参数调优期间要探索的超参数集。
  • 将 MEAN_MIN_DEPTH 变量重要性替换为 INV_MEAN_MIN_DEPTH。

1.2.0 - 2022-11-18

特性

  • YDF 可以直接加载 TF-DF 模型(即,"assets" 子目录中包含 YDF 模型的 TF 模型)。
  • 在 GBT 模型分析中公开混淆矩阵。
  • 添加 "compute_variable_importances" 工具,用于计算已训练模型的变量重要性。
  • 添加 "experimental_analyze_model_and_dataset" 工具,用于理解/分析模型。

1.1.0 - 2022-10-21

特性

  • 早期停止不再在最初几次迭代中触发。可以使用 gradient_boosted_trees.proto 中的新参数 early_stopping_initial_iteration 控制早期停止的初始迭代次数。
  • 基准测试推理工具不再要求数据集包含标签列。
  • 用户可以在 JavaScript 移植版中指定 wasm 文件的位置。
  • 用户可以指示分词器完全不进行分词。

清理

  • 修复 GRPC 依赖到 1.50.0 版本。

文档

1.0.0 - 2022-09-07

特性

  • Go (GoLang) 推理 API (Beta):使用 Go 编写的简单引擎,用于对 YDF 和 TF-DF 模型进行推理。
  • 创建包含图表(例如 ROC, PR-ROC)的 html 评估报告。
  • 在 Go API 中添加对 Random Forest, CART, 回归 GBT 和排序 GBT 模型的支持。
  • 在部署 proto 中添加对 IO 线程数量的自定义。

0.2.5 - 2022-06-15

特性

  • 梯度提升树模型的斜分割器的多线程实现。
  • 支持 Javascript + WebAssembly 模型推理。
  • 支持纯 serving 模型,即仅包含 serving 数据的数据集。
  • 添加 "edit_model" CLI 工具。

修复

  • 移除提升建模中对低结果的偏见。

0.2.4 - 2022-05-17

特性

  • 丢弃得分低于父节点的 Hessian 分割。此更改对模型质量影响不大,但可以减小模型大小。
  • 添加内部标志 hessian_split_score_subtract_parent,用于在计算 Hessian 分割得分时减去父节点得分。
  • 添加超参数优化器作为元学习器之一。
  • Random Forest 和 CART 学习器支持 NUMERICAL_UPLIFT 任务。

0.2.3 - 2021-01-27

特性

  • 诚实 Random Forests(也适用于 Gradient Boosted Tree 和 CART)。
  • 可以使用不替换的示例采样来训练 Random Forests。
  • 在 Gradient Boosted Tree 学习器中添加对 Focal Loss 的支持。

修复

  • 提升任务中类别型分割的默认评估不正确。这使得具有缺失类别值的提升模型表现更差,并可能使提升模型的推理速度变慢。

0.2.2 - 2021-12-13

特性

  • CART 学习器在输出模型元数据中导出修剪的节点数量。注意:CART 学习器输出的是包含单棵树的 Random Forest 模型。
  • Random Forest 和 CART 学习器支持 CATEGORICAL_UPLIFT 任务。
  • 添加 SetLoggingLevel 函数,用于控制日志级别。

修复

  • 修复 CART 学习器中回归任务的树剪枝问题。

0.2.1 - 2021-11-05

特性

  • 在 examples/distributed_training.sh 中添加分布式训练示例
  • 在离散化数值分割器(本地和分布式)中使用中位数桶分割值策略。

修复

  • 在 :train 中注册 GRPC 分布式策略。

0.2.0 - 2021-10-29

特性

  • 梯度提升决策树的分布式训练。
  • 添加 maximum_model_size_in_memory_in_bytes 超参数,以限制模型在内存中的大小。

修复

  • 修复预排序数值特征的无效分割问题(现在使用中点)。

0.1.5 - 2021-08-11

修复

  • 修复验证集为空时 CART 剪枝处理不正确的问题。之前,整个树会被错误地修剪。现在,如果未指定验证集,则禁用剪枝。

0.1.4 - ????

特性

  • 在抽象学习器 API 中添加训练中断功能。
  • 减少预排序特征索引的内存使用。
  • 预排序特征索引的多线程计算。
  • 如果验证数据集比例为零,则禁用 GBT 的早期停止。
  • 预先计算并缓存结构变量重要性。

0.1.3 - 2021-05-19

特性

  • 注册新的推理引擎。

0.1.2 - 2021-05-18

特性

  • 推理引擎:QuickScorer Extended 和 Pred

0.1.1 - 2021-05-17

特性

  • 迁移到 TensorFlow 2.5.0。

0.1.0 - 2021-05-11

Yggdrasil Decision Forests 的初始发布。

特性

  • CLI:train show_model show_dataspec predict infer_dataspec evaluate convert_dataset benchmark_inference utils/synthetic_dataset)
  • 学习器:Gradient Boosted Trees(及衍生)、Random Forest(及衍生)、Cart。