xgboost 自定义评价函数(metric)与目标函数
来源:互联网 发布:qq群淘宝客如何赚钱 编辑:程序博客网 时间:2024/04/30 12:50
比赛得分公式如下:
其中,P为Precision , R为 Recall。
GBDT训练基于验证集评价,此时会调用评价函数,XGBoost的best_iteration和best_score均是基于评价函数得出。
评价函数:
input: preds和dvalid,即为验证集和验证集上的预测值,
return string 类型的名称 和一个flaot类型的fevalerror值表示评价值的大小,其是以error的形式定义,即当此值越大是认为模型效果越差。
1 from sklearn.metrics import confusion_matrix2 def customedscore(preds, dtrain):3 label = dtrain.get_label()4 pred = [int(i>=0.5) for i in preds]5 confusion_matrixs = confusion_matrix(label, pred)6 recall =float(confusion_matrixs[0][0]) / float(confusion_matrixs[0][1]+confusion_matrixs[0][0])7 precision = float(confusion_matrixs[0][0]) / float(confusion_matrixs[1][0]+confusion_matrixs[0][0])8 F = 5*precision* recall/(2*precision+3*recall)*1009 return 'FSCORE',float(F)
对于一般的二分类问题,如果以score的形式定义,即当此值越大认为模型效果越好(和F-score类似)
confusion_matrixs = confusion_matrix(label, pred)recall =float(confusion_matrixs[1][1]) / float(confusion_matrixs[1][0]+confusion_matrixs[1][1])precision = float(confusion_matrixs[1][1]) / float(confusion_matrixs[0][1]+confusion_matrixs[1][1])
应用:
训练时要传入参数:feval = customedscore,
1 params = { 'silent': 1, 'objective': 'binary:logistic' , 'gamma':0.1, 2 'min_child_weight':5, 3 'max_depth':5, 4 'lambda':10, 5 'subsample':0.7, 6 'colsample_bytree':0.7, 7 'colsample_bylevel':0.7, 8 'eta': 0.01, 9 'tree_method':'exact'}10 model = xgb.train(params, trainsetall, num_round,verbose_eval=10, feval = customedscore,maximize=False)
自定义 目标函数,这个我没有具体使用
1 # user define objective function, given prediction, return gradient and second order gradient2 # this is log likelihood loss3 def logregobj(preds, dtrain):4 labels = dtrain.get_label()5 preds = 1.0 / (1.0 + np.exp(-preds))6 grad = preds - labels7 hess = preds * (1.0-preds)8 return grad, hess
# training with customized objective, we can also do step by step training# simply look at xgboost.py's implementation of trainbst = 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
ps:这是博客园上看到的一篇文章,不好收藏,所以转载过来,以便日后查看,侵删https://www.cnblogs.com/zle1992/p/6914577.html
阅读全文
0 0
- xgboost 自定义评价函数(metric)与目标函数
- xgboost cross_validation&自定义目标函数和评价函数&base_score参数
- R语言xgboost自定义目标函数
- MXNet自定义目标函数
- xgboost中自定义损失函数的使用方法
- 评价函数
- 目标函数(耗费函数)的总结与整理
- XGBoost 函数说明
- 目标函数与损失函数的差别
- keras 自定义 loss损失函数, sample在loss上的加权 和 metric
- mxnet系列之 自定义目标函数
- SQL函数与自定义函数
- Keras中自定义目标函数(损失函数)的简单方法
- Keras中自定义目标函数(损失函数)的简单方法
- Tenengrad评价函数
- 图像清晰度评价函数
- 调整评价函数
- Zemax设置评价函数
- WebRTC-线程模型(2)
- Java高级工程师应该知道的25点
- 销售人员尊重客户的五个细节
- 电路图这么画,不怕你学不会
- 如何使用 Azure PowerShell 在 Azure Marketplace 中查找 Windows VM 映像
- xgboost 自定义评价函数(metric)与目标函数
- 高通平台中gpio简单操作和调试
- 关于字符串转换成json的总结
- AWS DeepLens 亚马逊深度学习视频摄像头
- CCF 模板生成系统
- oracle自带数据库相关sql语句练习
- Dropdown by index in ALV using in Web Dynpro
- 关于CM3内核堆栈8字节对齐
- 在Eclipse中创建Maven多模块工程的例子