首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >低延迟生产环境中的梯度提升预测?

低延迟生产环境中的梯度提升预测?
EN

Stack Overflow用户
提问于 2012-07-02 22:33:17
回答 1查看 3K关注 0票数 7

有没有人能推荐一个在<10-15ms范围内使用梯度提升模型进行预测的策略(越快越好)?

我一直在使用Rgbm包,但第一次预测需要大约50ms(随后的矢量化预测平均为1ms,因此似乎存在开销,可能是在调用C++库时)。作为指导,将有大约10-50个输入和~50-500个树。任务是分类,我需要访问预测概率。

我知道有很多库,但我很少幸运地找到信息,即使是在它们的粗略预测时间。训练将离线进行,因此只有预测需要快速--而且,预测可能来自一段代码/库,该代码/库与执行训练的内容完全分离(只要有一种通用的表示树的格式)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-30 18:46:08

我是scikit-learn gradient boosting module的作者,这是一个用Python语言实现的梯度增强回归树。我花了一些精力来优化预测时间,因为该方法针对的是低延迟环境(特别是排名问题);预测例程是用C编写的,由于Python函数调用,仍然存在一些开销。话虽如此:具有大约50个特征和大约250棵树的单个数据点的预测时间应该是<< 1ms。

在我的用例中,预测时间通常由特征提取的成本决定。我强烈建议分析来指出开销的来源(如果您使用Python,我可以推荐line_profiler)。

如果开销的来源是预测而不是特征提取,你可能会检查是否有可能进行批量预测而不是预测单个数据点,从而限制由于Python函数调用而产生的开销(例如,在排名中,你通常需要对前K个文档进行评分,所以你可以先做特征提取,然后在K x n_features矩阵上运行预测。

如果这不起作用,你也应该尝试限制树的数量,因为预测的运行时成本基本上与树的数量成线性关系。有许多方法可以在不影响模型精度的情况下限制树的数量:

适当调整学习率;学习率越小,需要的树越多,因此使用带正则化的prediction.

  • Post-process weight.

  • Fully-corrective (Lasso)的速度越慢;参见Elements of Statistical Learning第16.3.1节-使用每棵树的预测作为新特征,并通过L1正则化线性模型运行表示-删除那些没有获得任何Warmuth2006权重更新的树;而不是只针对最近的树进行线搜索/权重更新,更新所有树(参见Warmuth2006和Johnson2012)。更好的收敛-更少的树。

如果上述方法都不起作用,那么您可以研究级联或提前退出策略(参见Chen2012)

参考文献:

作者声明: Warmuth2006 M. Warmuth,J. Liao和G.完全纠错的提升算法,最大化利润率。在2006年第23届机器学习国际会议论文集中。

Johnson2012 Rie Johnson,张通,使用正则化贪婪森林学习非线性函数,arxiv,2012。

Chen2012 Minmin Chen,徐志祥,Kilian Weinberger,Olivier Chapelle,Dor Kedem,用于最小化特征评估成本的分类器级联,JMLR W&CP 22: 218-226,2012。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11295755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档