编译的scikit学习决策树用于更快的评估
sklearn-compiledtrees的Python项目详细描述
安装
在麻省理工学院的许可下发布。
pip install sklearn-compiledtrees
基本原理
在某些用例中,对给定模型的预测处于热路径中,因此 加快决策树评价是非常有用的。
加快决策树评价的有效途径是 生成表示树的计算的代码,将其编译为 优化目标代码,并通过dlopen/dlsym动态加载该文件 或同等的。
见 https://courses.cs.washington.edu/courses/cse501/10au/compile-machlearn.pdf 进行详细讨论,以及 http://tullo.ch/articles/decision-tree-evaluation/更多 教学解释和更多的基准在C++中。
这个包为简单的 单一输出回归树或集合的情况。
它已经在OSX和Linux上测试过了。我们目前没有 支持windows平台进行编译后的评估,尽管这应该 不是一个很大的工作量。
用法
importcompiledtreesimportsklearn.ensembleX_train,y_train,X_test,y_test=...clf=ensemble.GradientBoostingRegressor()clf.fit(X_train,y_train)compiled_predictor=compiledtrees.CompiledRegressionPredictor(clf)predictions=compiled_predictor.predict(X_test)
基准
对于随机森林,我们在评估中看到5到8倍的加速。对于渐变 增强的合奏,在评估中的加速是1.5倍到3倍。 这是因为梯度增强树已经有了 优化预测实现。
有一个附加的基准脚本允许我们检查 在一系列集成配置和 数据集。
在所附的图中,GB是梯度增强的,RF是随机的 林、D1等对应于设置max-depth=1和B10 对应于设置max_leaf_nodes=10。
图表
for dataset in friedman1 friedman2 friedman3 uniform hastie;do python ../benchmarks/bench_compiled_tree.py \ --iterations=10\ --num_examples=1000\ --num_features=50\ --dataset=$dataset\ --max_estimators=300\ --num_estimator_values=6done