1

我正在从(http://www-stat.stanford.edu/~jhf/ftp/trebst.pdf实施 MART)算法 5 实现 MART,我的算法“适用”于更少的数据(3000 个训练数据文件,22 个特征)和J=5,10,20(叶节点数)和 T = 10, 20。它给了我很好的结果(训练的 R-Precision 为 0.30 到 0.5)但是当我尝试在一些大型训练数据上运行时(70K记录)它给了我运行时下溢错误 - 我认为它应该是 - 只是不知道如何解决这个问题?

下溢错误出现在这里,计算成本梯度(或伪响应): 在此处输入图像描述

这里 y_i 是 {1,-1} 标签,所以如果我尝试: 2/exp(5000) 它的分母溢出!

只是想知道我是否可以“标准化”这个或“阈值”这个,但是我使用这个伪响应来计算“标签”(那个 pdf 中的伽玛),然后是那些伽玛来计算模型分数。

4

2 回答 2

0

@rrenaud 很接近,我所做的是:如果 exp_arg > 16 或 exp_arg < -16 使我的 exp_arg = 16(或 -16)并且它有效!(也适用于 1.2GB 数据和 700 个功能!)

于 2013-05-02T16:17:18.543 回答
0

您可以用 if 包装该表达式。

exp_arg = 2 * y_i * F_m_minus_1
if (exp_arg > 700) {
  // assume exp() overflow, result of exp() ~= inf, 2 / inf = 0
  y_tilda_i = 0
else // standard calculation

我没有特别实现梯度提升,但我需要在一些神经网络计算中实现这个技巧。

于 2013-04-17T14:52:35.787 回答