catboost算法中对称树背后的直觉是啥?
Posted
技术标签:
【中文标题】catboost算法中对称树背后的直觉是啥?【英文标题】:What is the intuition behind symmetric trees in catboost algorithm?catboost算法中对称树背后的直觉是什么? 【发布时间】:2018-10-09 18:46:30 【问题描述】:我一直在使用 catboost 算法,我很难理解使用对称树的意义。关于这点,我在他们的github上找到了:
该算法的一个重要部分是它使用对称树并逐级构建它们。 对称树是一棵树,其中每个级别的节点使用相同的拆分。这允许使用 idex 对叶子的路径进行编码。 例如,有一棵深度为 2 的树。第一层的拆分是 f1
他们说这有助于减少过度拟合并进行更快的推理,但从直觉上来说,这就像你需要两倍的深度来探索相同数量的分割。
那么,谁能解释一下使用这种树的真正优势是什么?
非常感谢。
【问题讨论】:
【参考方案1】:由于这是谷歌搜索的第一个结果,我将提供答案。
典型的决策树是一系列 if/else 决策。假设您可以在每个处理器周期做出 1 个这样的决定——这将很快,但 100% 是连续的。要做出决定,您需要O(m)
决定,其中m
是树的最大高度。
在 CatBoost 的对称树中,每个拆分都在同一个属性上。要确定你是向左还是向右,你只需要知道树的当前级别,它对应于一个特征及其值。该阈值对于该级别上的所有拆分都是相同的。通过这种方式,您可以矢量化您的决策 - 创建一个阈值向量,一个您当前用于预测的值向量,并逐个元素进行比较。如果你有一个向量处理器,即它可以并行执行多个整数比较(这在现在很常见),你需要 1 个处理器周期来做出决定。
如您所见,差异归结为 矢量化,能够在矢量元素比较的 1 步中直接从根到叶,而不是 if/ 的序列其他决定。
【讨论】:
以上是关于catboost算法中对称树背后的直觉是啥?的主要内容,如果未能解决你的问题,请参考以下文章