2017-08-06 48 views
0

我想了解catboost过度检测器。在此描述:如何使用catboost overfitting检测器

https://tech.yandex.com/catboost/doc/dg/concepts/overfitting-detector-docpage/#overfitting-detector

另外一种梯度增强包,比如lightgbm和xgboost使用一个名为early_stopping_rounds参数,这是很容易理解(它停止训练,一旦验证错误并没有在early_stopping_round步骤减少) 。

但是,我很难理解catboost使用的p_value方法。任何人都可以解释这个过度检测探测器是如何工作的,以及何时停止培训?

回答

2

它没有在Yandex网站或github存储库中记录,但是如果仔细查看发布到github上的python代码(特别是here),您会看到过度配合检测器是通过设置“od_type”参数。回顾最近在github上提交的内容,catboost开发者最近还实现了一个类似于lightGBM和xgboost所使用的“early_stopping_rounds”参数的工具,名为“Iter”。 要在停止前最近一次最佳迭代之后设置轮次数,请在“od_wait”参数中提供一个数值。

例如:

fit_param <- list(
    iterations = 500, 
    thread_count = 10, 
    loss_function = "Logloss", 
    depth = 6, 
    learning_rate = 0.03, 
    od_type = "Iter", 
    od_wait = 100 
) 

我使用catboost库,其中R 3.4.1。我发现在fit_param列表中设置“od_type”和“od_wait”参数对我而言非常合适。

我意识到这并不是回答你关于如何使用由catboost开发人员实现的p_value方法的问题;不幸的是我无法帮到你。希望别人能够向我们解释这一点。

+0

非常感谢分享!我不知道od_type和od_wait参数。这真的很感谢! – ftiaronsem

+0

没问题! Yandex文档并不完美,所以我在周末开始浏览python代码,以查看可能丢失的内容。对我来说这也是一个非常开心的发现。 – babbeuf