optimization - 快速评估决策森林
问题描述
我有一些需要尽快评估的决策树(1000-3000)。它们都访问同一组双精度值。根本没有分类值(所以所有值都只是数字)。
最快的方法是什么?目前,我在运行时生成了一些 C 代码,并使用针对本地架构的最重优化对其进行编译。生成的代码如下所示(类似,但更大):
static inline double eval_tree0() {
if (*(const double *)0x12345 < 1.2345) {
if (*(const double *)0x4563456 < 2.2243) {
return 1.2111;
}
else {
return 5.2111;
}
}
else {
return 1.234;
}
}
double eval() {
return eval_tree0() + eval_tree1() + ...;
}
有没有更高效的东西?我正在考虑使用 AVX 一次评估多个树,但这似乎很棘手,我不确定性能是否更好。
有谁知道为给定输入(批量大小为 1)评估一堆决策树的最快可能性是什么?甚至可能与 AVX 相关?
谢谢
解决方案
推荐阅读
- python - 当 URL 中没有斜杠时,带有 VueJS 单页的 Django 路由会出现意外行为
- javascript - 如何从导航栏悬停 HTML CSS 中调暗正文?
- arrays - 如何加入每 8 项数组并创建 1 项?
- sql-server - 在 SQL Server 中加载大文本文件
- android - 带有自定义高亮图形的 BottomNavigationBar
- postgresql - PostgreSQL:如何从 XML 中提取值属性
- optimization - Gurobi:显然可行的模型会引发不可行的模型错误?
- reactjs - 如何避免功能状态组件中的分配?
- javascript - ionic 4 angular 8 中未定义全局、缓冲区和进程
- python - 哪种数据结构和/或算法适合这个问题?