fobj
https://www.cnblogs.com/chenxiangzhen/p/10962983.html
https://cloud.tencent.com/developer/article/1357671
https://zhuanlan.zhihu.com/p/75380044
我们知道了该如何在XGBoost/LightGBM中实现自定义objective:那就是objective是否处处存在1-2阶梯度不重要,是不是严格按照梯度公式实现也不重要。
而是要选择一个合适1-2阶“梯度”函数,使得按照XGBoost/LightGBM自己的打分公式计算完后的结果性质接近于原目标的结果(分裂的特征次序和位置)。
当然这是比较难实现的,我们也可以弃疗之,总之都只是一个弱模型,我们也没必要都做的那么精确不是?
不过这里倒是给了我们一些启示:
如果你的objective不是MSE,那么是否应该在计算分裂点的时候,对数据中的长尾数据做一些处理以减小他们对分裂位置的影响?
我们是否应该寻找另一个objective的近似方式,使得在这之上的常用objective表示更接近于精确结果。很明显,[1]中的2阶泰勒展开及其选择的位置并不是一个足够好的方式。
标准实现的GBDT对于label的量纲应该不敏感(排除正则的因素),但在上述objective近似的时候,就无法做这种假设了,试试不同的单位可能会有意外收益。
网友评论