随机森林回归使用自定义目标/损失函数(Python / Sklearn)

时间:2018-03-26 14:00:54

标签: python-3.x scikit-learn random-forest statsmodels poisson

我想建立一个随机森林回归器来模拟计数数据(泊松分布)。默认' mse'损失函数不适合这个问题。有没有办法定义自定义丢失函数并将其传递给Python中的随机森林回归函数(Sklearn等)?

在任何软件包中是否有适合Python数据计数的实现?

3 个答案:

答案 0 :(得分:1)

在sklearn中,目前不支持此功能。请参阅相应问题herethis中关于另一个类的讨论,在那里他们更详细地讨论了原因(主要是调用Python函数的大量计算开销)。

所以它可以在问题中讨论,通过分叉sklearn,在Cython中实现成本函数,然后将其添加到可用的'标准'列表中。

答案 1 :(得分:0)

如果问题是计数c_i来自不同的曝光时间t_i,则确实不能满足计数,但仍可以使用MSE损失函数满足比率r_i = c_i / t_i,但是应该使用权重与暴露成正比,w_i = t_i。

对于真正的随机森林泊松回归,我已经看到在R中,有 rpart 库用于构建单个CART树,该树具有泊松回归选项。我希望将这种算法导入scikit-learn。

答案 2 :(得分:0)

在R中,编写自定义目标函数非常简单。

R中的

randomForestSRC 程序包可用于编写您自己的自定义拆分规则。但是,自定义拆分规则必须用纯C语言编写。

您要做的就是编写自己的自定义拆分规则,注册拆分规则,编译并安装软件包。

必须在randomForestSRC源代码中名为splitCustom.c的文件中定义自定义拆分规则。

您可以找到更多信息 here

定义分割规则的文件是 this