我有一个二叉决策树。它将输入作为浮点数组,每个分支节点根据输入索引和值拆分,最终将我带到叶子。
我正在这棵树上执行大量查找(根据性能分析,大约占执行时间的 17%(编辑:优化了其他区域,现在几乎是 40%)),我想知道我是否可以/应该使用不同的数据结构以提高查找速度。
不能使用某种哈希表,因为输入不直接映射到叶节点,但我想知道是否有人对我可以用来代替树的方法和数据结构有任何建议(或者也as?) 以提高查找速度。
内存是一个问题,但比速度更重要。
代码目前是用 C# 编写的,但显然可以应用任何方法。
编辑:要发布的代码太多了,但我会提供有关树的更多详细信息。
树是使用信息增益计算生成的,它并不总是 50/50 分割,分割值可以是任何浮点值。单个输入也可以多次拆分,以增加该输入的分辨率。
我在这里发布了一个关于迭代器性能的问题:
但我认为我可能需要查看数据结构本身以进一步提高性能。
我的目标是尽可能提高性能。我正在研究一种新的机器学习方法,树使用反馈循环自行生长。对于我正在处理的过程,我估计它会运行几个月,所以这里节省了几个%,而且是巨大的。最终目标是在不使用太多内存的情况下提高速度。