xgboost 自定义评价函数(metric)与目标函数
比赛得分公式如下:

其中,P为Precision , R为 Recall。
GBDT训练基于验证集评价,此时会调用评价函数,XGBoost的best_iteration和best_score均是基于评价函数得出。
评价函数:
input: preds和dvalid,即为验证集和验证集上的预测值,
return string 类型的名称 和一个flaot类型的fevalerror值表示评价值的大小,其是以error的形式定义,即当此值越大是认为模型效果越差。
from sklearn.metrics import confusion_matrix
def customedscore(preds, dtrain):
label = dtrain.get_label()
pred = [int(i>=0.5) for i in preds]
confusion_matrixs = confusion_matrix(label, pred)
recall =float(confusion_matrixs[0][0]) / float(confusion_matrixs[0][1]+confusion_matrixs[0][0])
precision = float(confusion_matrixs[0][0]) / float(confusion_matrixs[1][0]+confusion_matrixs[0][0])
F = 5*precision* recall/(2*precision+3*recall)*100
return 'FSCORE',float(F)
应用:
训练时要传入参数:feval = customedscore,
    params = { 'silent': 1,  'objective': 'binary:logistic' , 'gamma':0.1,
         'min_child_weight':5,
         'max_depth':5,
         'lambda':10,
         'subsample':0.7,
         'colsample_bytree':0.7,
         'colsample_bylevel':0.7,
         'eta': 0.01,
         'tree_method':'exact'}
     model = xgb.train(params, trainsetall, num_round,verbose_eval=10, feval = customedscore,maximize=False)
自定义 目标函数,这个我没有具体使用
# user define objective function, given prediction, return gradient and second order gradient
# this is log likelihood loss
def logregobj(preds, dtrain):
labels = dtrain.get_label()
preds = 1.0 / (1.0 + np.exp(-preds))
grad = preds - labels
hess = preds * (1.0-preds)
return grad, hess
# training with customized objective, we can also do step by step training
# simply look at xgboost.py's implementation of train
bst = xgb.train(param, dtrain, num_round, watchlist, logregobj, evalerror)
参考:
https://github.com/dmlc/xgboost/blob/master/demo/guide-python/custom_objective.py
http://blog.csdn.net/lujiandong1/article/details/52791117
xgboost 自定义评价函数(metric)与目标函数的更多相关文章
- xgboost 自定义目标函数和评估函数
		
https://zhpmatrix.github.io/2017/06/29/custom-xgboost/ https://www.cnblogs.com/silence-gtx/p/5812012 ...
 - flink metric库的使用和自定义metric-reporter
		
简单介绍 flink内部实现了一套metric数据收集库. 同时flink自身系统有一些固定的metric数据, 包括系统的一些指标,CPU,内存, IO 或者各个task运行的一些指标.具体包含那些 ...
 - 『开发技巧』Keras自定义对象(层、评价函数与损失)
		
1.自定义层 对于简单.无状态的自定义操作,你也许可以通过 layers.core.Lambda 层来实现.但是对于那些包含了可训练权重的自定义层,你应该自己实现这种层. 这是一个 Keras2.0 ...
 - xgboost的sklearn接口和原生接口参数详细说明及调参指点
		
from xgboost import XGBClassifier XGBClassifier(max_depth=3,learning_rate=0.1,n_estimators=100,silen ...
 - xgboost入门与实战(原理篇)
		
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...
 - R语言︱XGBoost极端梯度上升以及forecastxgb(预测)+xgboost(回归)双案例解读
		
XGBoost不仅仅可以用来做分类还可以做时间序列方面的预测,而且已经有人做的很好,可以见最后的案例. 应用一:XGBoost用来做预测 ------------------------------- ...
 - 机器学习 GBDT+xgboost 决策树提升
		
目录 xgboost CART(Classify and Regression Tree) GBDT(Gradient Boosting Desicion Tree) GB思想(Gradient Bo ...
 - 前向分步算法 && AdaBoost算法 && 提升树(GBDT)算法 && XGBoost算法
		
1. 提升方法 提升(boosting)方法是一种常用的统计学方法,在分类问题中,它通过逐轮不断改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能 0x1: 提升方法的基本 ...
 - Xgboost理解
		
一.xgboost模型函数形式 xgboost也是GBDT的一种,只不过GBDT在函数空间进行搜索最优F的时候,采用的是梯度下降法也就是一阶泰勒展开:而xgboost采用的是二阶泰勒展开也就是牛顿法, ...
 
随机推荐
- 判断app是否是第一次启动
			
如何判断app是否是第一启动呢,第一次启动的时候,加载引导页面等, 一下是我的解决方案: 1.在"AppDelegate.h"中找到- (BOOL)application:(UIA ...
 - 京东云擎提供了免费的wordpress一键安装功能了
			
1. 京东云擎(http://jae.jd.com)提供了免费的个人博客WordPress一键安装功能了,如下图,给开发者分享福利! 免费的应用,提供了源码,提供了数据库: 我之前把文章发到首页,遭到 ...
 - jdk版本不一致问题
			
Exception in thread "main" java.lang.UnsupportedClassVersionError: cn/com/TestApp : Unsupp ...
 - SSHLibrary库关键字汇总
			
红色框的部分是设置系统用户标识符(不可缺少):$表示非超级用户 #表示超级用户
 - ftplib模块【python】
			
转自:http://www.cnblogs.com/kaituorensheng/p/4480512.html 函数释义 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实 ...
 - Effective C++ —— 杂项讨论(九)
			
条款53 : 不要轻忽编译器的警告 请记住: 1. 严肃对待编译器发出的警告信息.努力在你的编译器的最高(最严苛)警告级别下争取“无任何警告”的荣誉. 2. 不要过度倚赖编译器的报警能力,因为不同的编 ...
 - Lua脚本和C++交互(二)
			
上一节讲了一些基本的Lua应用,下面,我要强调一下,Lua的栈的一些概念,因为这个确实很重要,你会经常用到.熟练使用Lua,最重要的就是要时刻知道什么时候栈里面的数据是什么顺序,都是什么.如果你能熟练 ...
 - Mybatis返回map集合
			
<resultMap id="pieMap" type="HashMap"> <result property="value&quo ...
 - devstack with neutron 参考文献
			
http://networkstatic.net/installing-openstack-ml2-neutron-plugin-devstack-fedora/ https://wiki.opens ...
 - [SCOI2008] 着色方案[高维dp]
			
321. [SCOI2008] 着色方案 ★★★ 输入文件:color.in 输出文件:color.out 简单对比时间限制:1 s 内存限制:64 MB 题目背景: 有n个木块排成一 ...