Wil*_*ood 7 performance data-structures
我有一个二元决策树.它将输入作为一个浮点数组,每个分支节点在输入索引和值上分割,最终将我带到一个叶子.
我在这棵树上执行了大量的查找(根据性能分析,大约17%的执行时间(编辑:优化了其他区域,现在几乎达到40%)),我想知道我是否可以/应该使用不同的数据结构,以提高查找速度.
某些哈希表不能使用,因为输入不直接映射到叶节点,但我想知道是否有人建议我可以用来代替树的方法和数据结构(或者也是如此) as?)提高查找速度.
记忆是一个值得关注的问题,但不是速度问题.
代码目前用C#编写,但显然可以应用任何方法.
编辑:发布的代码太多了,但我会提供有关树的更多细节.
树是使用信息增益计算生成的,它并不总是50/50分割,分割值可以是任何浮点值.单个输入也可以多次拆分,从而提高该输入的分辨率.
我在这里发布了一个关于迭代器性能的问题:
但我想我可能需要查看数据结构本身以进一步提高性能.
我的目标是尽可能多的表现.我正在研究一种新的机器学习方法,树使用反馈循环自我增长.对于我正在研究的过程,我估计它将运行几个月,所以在这里节省了几个百分点.最终目标是在不使用太多内存的情况下提高速度.
假设决策有 50/50 的机会:
想象一下你有两个二元决定;可能的路径为 00、01、10、11
想象一下,你有一个包含四个结果的数组,而不是树;您可以将浮点数数组转换为二进制数,该二进制数将作为该数组的索引。