XGBoost的以mae作为优化目标探究
来源:互联网 发布:手机区域截图软件 编辑:程序博客网 时间:2024/05/21 08:58
1 mae/mad和mse介绍
Mse:mean-square error。
可导,常常作为loss function。
Mae:mean absolute error
不可导。
2 如何在XGBoost中近似mae
我们都知道XGBoost支持我们自定义目标函数,但是其在实现中对目标函数做了二阶泰勒展开,所以我们需要提供目标函数的一阶和二阶导数。但是MAE并不是连续可导的(在0处不可导),无法直接作为XGBoost的目标函数。所以目前比较好的方法是找到一个函数来近似它。
2.1 Huber loss
在统计学当中,huber loss是鲁棒回归(robust regression)的损失函数,相比于平方损失更不容易受异常点的影响。有一些分类任务有时也会使用。 —Wikipedia
这个函数对
在XGBoost的python可以如下实现:
def huber_approx_obj(preds, dtrain): d = dtrain.get_labels() - preds #remove .get_labels() for sklearn h = 1 #h is delta scale = 1 + (d / h) ** 2 scale_sqrt = np.sqrt(scale) grad = d / scale_sqrt hess = 1 / scale / scale_sqrt return grad, hess
2.2 Fair loss
在XGBoost的python实现如下:
def fair_obj(preds, dtrain): """y = c * abs(x) - c * np.log(abs(abs(x) + c))""" x = dtrain.get_labels() - preds c = 1 den = abs(x) + c grad = c*x / den hess = c*c / den ** 2 return grad, hess
2.3 Log-Cosh loss
在XGBoost中的python实现如下:
def log_cosh_obj(preds, dtrain): x = dtrain.get_labels() - preds grad = np.tanh(x) hess = 1 / np.cosh(x)**2 return grad, hess
2.4 对比
动态图对比了
3 理论分析
@ To do
4 References
1.Xgboost-How to use “mae” as objective function?
阅读全文
0 0
- XGBoost的以mae作为优化目标探究
- 以resnet作为前置网络的ssd目标提取检测
- 以resnet作为前置网络的ssd目标提取检测
- 以resnet作为前置网络的ssd目标提取检测
- 以resnet作为前置网络的ssd目标提取检测
- 谨以这篇文章作为我编程道路的目标,规范和准则!
- xgboost优化
- 作为项目经理的几个目标
- 阿里作为接下来的目标
- Javascript的循环优化探究
- makefile文件的编写,目标文件作为目标是否多余?
- C++以对象作为返回值时编译器的优化,以及临时变量的析构时机
- 社交工程师的日常工作:以人为目标
- 以时间作为导出文件的文件名
- 以时间作为导出文件的文件名
- 以数组作为存储结构的栈
- 【读书笔记】以函数作为算法的实参
- 以视频作为网页背景的jQuery插件
- java
- gulp.spritesmith使用总结
- Android应用界面组件(中)
- Boostrap 笔记
- SpringMVC的常见的使用方法
- XGBoost的以mae作为优化目标探究
- nginx中配置https的服务页面中引用http资源问题
- Android应用界面组件(下)
- Python基础-报错处理try和raise机制
- Advanced Programming in UNIX Environment Episode 19
- 初步运用多进程,利用正则表达式,爬取猫眼电影top100排行榜,储存到本地
- super-linear 和 sub-linear
- PAT乙级 1079. 延迟的回文数 (20)
- iframe 前端 图片预览等