没有if的世界
在之前的一篇文章中:
XGBoost:如何使用深度学习替代梯度提升和决策树 – 第1部分
在本文中,您将学习如何使用可微分编程方法重写决策树,正如NODE论文所建议的那样……
towardsdatascience.com
您已经了解了如何使用可微分编程方法重写决策树,正如NODE论文所建议的那样。该论文的思想是通过神经网络来替代XGBoost。
更具体地说,在解释为什么构建决策树的过程不可微分之后,它介绍了用于规范化与决策节点相关的两个主要元素的必要数学工具:
- 特征选择
- 分支检测
NODE论文表明,可以使用entmax函数来处理这两个问题。
总结一下,我们展示了如何创建一个二叉树,而不使用比较运算符。
上一篇文章以有关训练规范化决策树的问题结束。现在是回答这些问题的时候了。
如果您对梯度提升方法有更深入的了解,请查看我的书:
实用梯度提升:深入Python中的梯度提升
本书介绍了梯度提升方法,面向的读者包括学生、学者、工程师和希望……
amzn.to
平滑的决策节点
首先,基于我们在之前的文章中介绍的内容,让我们创建一个新的Python类:SmoothBinaryNode
。
这个类编码了平滑二叉节点的行为。它的代码中有两个关键部分:
- 特征的选择,由函数
_choices
处理 - 对这些特征进行评估,与给定的阈值相关,并确定要遵循的路径:
left
或right
。所有这些都由left
和right
方法管理。