- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究 catboost 算法,我很难看出使用对称树的意义。在这方面,我在他们的github中找到了:
An important part of the algorithm is that it uses symmetric trees and builds them level by level. Symmetric tree is a tree where nodes of each level use the same split. This allows to encode path to leaf with an idex. For example, there is a tree with depth 2. Split on the first level is f1<2, split on the second level is f2<4. Then the object with f1=5, f2=0 will have leaf with number 01b.
最佳答案
由于这是谷歌搜索的第一个结果,我将提供答案。
典型的决策树是一系列 if/else 决策。假设您可以在每个处理器周期做出 1 个这样的决定——这会很快,但 100% 是连续的。要做出决定,您需要 O(m)
决定,其中 m
是树的最大高度。
在 CatBoost 的对称树中,每个 split 都在同一个属性上。要确定向左还是向右,您只需要知道树的当前级别,它对应于一个特征及其值。该阈值对于该级别上的所有分组都是相同的。通过这种方式,您可以矢量化您的决策——创建一个阈值向量,一个您当前用于预测的值向量,并按元素进行比较。如果你有一个向量处理器,即它可以并行执行多个整数比较(这在现在很常见),你需要 1 个处理器周期来做出决定。
正如您所看到的,差异归结为向量化,能够在向量元素比较的 1 步中直接从根到叶,而不是 if/else 决策序列。
关于machine-learning - catboost 算法中对称树背后的直觉是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50087526/
发自 csexchange : 我见过的大多数模拟退火版本的实现类似于下面维基百科伪代码中概述的内容: Let s = s0 For k = 0 through kmax (exclusive):
我得到了这段代码用于分析: private String type[] = {"Hearts","Spades","Clubs","Diamonds"}; private String rank[]
我对机器学习算法和 Spark 非常陌生。我遵循Twitter 流语言分类器在这里找到: http://databricks.gitbooks.io/databricks-spark-referenc
直观的逻辑,具有 build 性,是函数式编程中类型系统的基础。经典逻辑不是 build 性的,尤其是排中律 A ∨ ¬A(或其等价物,例如 double negation elimination 或
我是一名优秀的程序员,十分优秀!