xgboost中如何使用mae作为目标函数来优化

最近同事讨论到mae无法作为objective function的事情,因为mae无法求导。用mse作为objective,使用mae作为eval是通常的做法,但是优化不太好。就在网上找了些资料,看是否有好的objective来代替mae的,整理如下:

kaggle上的讨论 https://www.kaggle.com/c/allstate-claims-severity/discussion/24520

overflow https://stackoverflow.com/questions/45006341/xgboost-how-to-use-mae-as-objective-function

xgboost自定义objective与eval http://blog.csdn.net/lujiandong1/article/details/52791117

时间: 2024-10-21 20:24:41

xgboost中如何使用mae作为目标函数来优化的相关文章

iOS对项目中所有加阴影的代码进行优化

1. 对项目中所有加阴影的代码进行优化 目前项目中尤其是表格单元格中使用如下加阴影代码严重影响性能(5.2.5航班查询结果页卡顿的原因)     self.cellBG.layer.shadowColor = [[UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:1] CGColor];     self.cellBG.layer.shadowOffset = CGSizeMake(1, 1);     self.cellBG.layer.sha

减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)

原文:减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术) 在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”,那么,这一篇博文将讲解  “ 将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片”. 一.为何选择将图片转成二进制并生成Base64编码,可以在网页中通过url查看

xgboost中如何自定义metric(python中)

正好在参加携程的比赛,用的xgboost的算法,但携程比赛的测评函数比较奇怪,不是传统的那些,而是取precision≥0.97的情况下,recall的最大值.那无疑这个测评函数是要自己写的(官方没给),可是我怎么把它放进xgboost里呢?这样我设置silent=1时,我每一步都能看到train和eval上的结果. 起初以为在param里定义了就行,但屡屡报错,后来终于找到了方法. 首先是metric的写法(直接拿携程比赛那个来说吧): def maxRecall(preds,dtrain):

xgboost中XGBClassifier()参数详解

http://www.cnblogs.com/wanglei5205/p/8579244.html 常规参数 booster gbtree 树模型做为基分类器(默认) gbliner 线性模型做为基分类器 silent silent=0时,不输出中间过程(默认) silent=1时,输出中间过程 nthread nthread=-1时,使用全部CPU进行并行运算(默认) nthread=1时,使用1个CPU进行运算. scale_pos_weight 正样本的权重,在二分类任务中,当正负样本比例

java中的字符串简介,字符串的优化以及如何高效率的使用字符串

简介 String最为java中最重要的数据类型.字符串是软件开发中最重要的对象之一,通常,字符串对象在内存中总是占据着最大的空间块.所以,高效处理字符串,将提高系统的整个性能. 在java语言中,String对象可以认为是char数组的衍生和进一步的封装.它的主要组成部分是:char数组.偏移量和string的长度.char数组表示string的内容,它是string对象所表示字符串的超集.String的真实内容还需要偏移量和长度在这个char数组中进一步定位和截取.(查看java源代码可以看

Java中的JIT机制对运行速度的优化

JIT的起源 在先前的博客,Javac编译过程,简略讲述了Java compiler(javac),可以看出javac和C的compiler不一样, 并不是直接将 Java 的源代码 编译成成处理器的指令. 相反地,它产生的是统一规格.与机器 binary 格式无关的 bytecode. 在执行期,JVM 会逐条解释执行 bytecode, 这是为甚么 Java 在跨平台上会这么成功的主要原因, 你可以在某个平台上写完.build 一份,然后在其他的平台上头执行. 但是这也导致了严重的问题, i

我的Java开发学习之旅------>计算从1到N中1的出现次数的效率优化问题

有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数.比如f(1)=1:f(13)=6,问一个最大的能满足f(n)=n中的n是什么? 例如:f(13)=6, 因为1,10,11,12,13.正好是6个1. 解析:这题关键在效率上,在没有发现很科学.快速地计算出个数的情况下,可以采取缓存的机制.因为就2000000来说,计算时间就已经无法忍受了,因此,可以把以前的计算结果缓存起来,把每次的结果保存好,就不用每次都重新计算,从而可提高效率. 例如:计算101,只需要把1~10

Android中ListView的几种常见的优化方法

Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的List集合来作为ListView的项目所要显示的内容,每一个条目都是一个自定义的组件,这个组件中只包含一个textview: Activity: package com.alexchen.listviewoptimi

使用DDMS中的内存监测工具Heap来优化内存

最近在做一个照片墙的应用,涉及到很多知识,其中难点在于如何应对数量庞大的图片,这就涉及到内存管理的知识了.今天介绍的工具是DDMS中自带的Heap,它可以显示出当前引用占用的内存,剩余的内存等信息.下面我们就来使用它吧~ 首先是进入DDMS,然后运行应用,这时候就能在左边的区域看到应用的包名了.选中要测试的应用,然后点击上方的update heap图标. 点击后控制台就会被触发了,但现在控制台可能没有下面的信息,因为只有在GC后控制台才会真正触发.所以你可以点击Cause GC按钮,然后就可以看