除了我们平常所做的网格搜索,随机搜索外,我发现贝叶斯优化的方法挺不错,然后我就尝试了一下,发现效果挺好的,我这里把我的代码分享出来:

贝叶斯优化通过基于目标函数的过去评估结果建立替代函数(概率模型),来找到最小化目标函数的值。贝叶斯方法与随机或网格搜索的不同之处在于,它在尝试下一组超参数时,会参考之前的评估结果,因此可以省去很多无用功。

超参数的评估代价很大,因为它要求使用待评估的超参数训练一遍模型,而许多深度学习模型动则几个小时几天才能完成训练,并评估模型,因此耗费巨大。贝叶斯调参发使用不断更新的概率模型,通过推断过去的结果来“集中”有希望的超参数。

1 导入库包

from skopt import BayesSearchCV
import xgboost as xgb
from sklearn.model_selection import train_test_split
import pandas as pd
from sklearn.model_selection import StratifiedKFold
import numpy as np
from sklearn.utils import shuffle

2 加载数据


train_path='ads_train.csv'
train_data=pd.read_csv(train_path)

3 数据集特征处理

train_data = shuffle(train_data)
X=train_data[['isbuyer', 'buy_freq', 'visit_freq', 'buy_interval','sv_interval', 'expected_time_buy', 'expected_time_visit', 'last_buy', 'multiple_buy', 'multiple_visit', 'uniq_urls','num_checkins']]
Y=train_data[['y_buy']]
X_train,X_test,y_train,y_test=train_test_split(X,Y,test_size=0.2)

优化代码

ITERATIONS=100
# Classifier
bayes_cv_tuner = BayesSearchCV(estimator = xgb.XGBClassifier(n_jobs = 1,objective = 'binary:logistic',eval_metric = 'auc',silent=1,tree_method='approx'),search_spaces = {'learning_rate': (0.01, 1.0, 'log-uniform'),'min_child_weight': (0, 10),'max_depth': (0, 50),'max_delta_step': (0, 20),'subsample': (0.01, 1.0, 'uniform'),'colsample_bytree': (0.01, 1.0, 'uniform'),'colsample_bylevel': (0.01, 1.0, 'uniform'),'reg_lambda': (1e-9, 1000, 'log-uniform'),'reg_alpha': (1e-9, 1.0, 'log-uniform'),'gamma': (1e-9, 0.5, 'log-uniform'),'min_child_weight': (0, 5),'n_estimators': (50, 100),'scale_pos_weight': (1e-6, 500, 'log-uniform')},    scoring = 'roc_auc',cv = StratifiedKFold(n_splits=5,shuffle=True,random_state=42),n_jobs = 6,n_iter = ITERATIONS,   verbose = 0,refit = True,random_state = 42
)def status_print(optim_result):"""Status callback durring bayesian hyperparameter search"""# Get all the models tested so far in DataFrame formatall_models = pd.DataFrame(bayes_cv_tuner.cv_results_)    # Get current parameters and the best parameters    best_params = pd.Series(bayes_cv_tuner.best_params_)print('Model #{}\nBest ROC-AUC: {}\nBest params: {}\n'.format(len(all_models),np.round(bayes_cv_tuner.best_score_, 4),bayes_cv_tuner.best_params_))print(dict(bayes_cv_tuner.best_params_))# Save all model resultsclf_name = bayes_cv_tuner.estimator.__class__.__name__all_models.to_csv(clf_name+"_cv_results.csv")result = bayes_cv_tuner.fit(X.values, Y.values, callback=status_print)

参考文献

Bayesian hyperparameter tuning of xgBoost
自动机器学习超参数调整(贝叶斯优化)

用贝叶斯优化的方法优化xgboost的参数相关推荐

  1. mysql 优化查询方法,优化MYSQL查询的详细方法

    优化MYSQL查询的详细方法 发布时间:2020-06-08 17:19:28 来源:PHP中文网 阅读:135 作者:三月 不知道大家之前对类似优化MYSQL查询的详细方法的文章有无了解,今天我在这 ...

  2. 【故障诊断】基于贝叶斯优化支持向量机的轴承故障诊断附matlab代码

    1 内容介绍 贝叶斯网络(Bayesian Network或BN)是人工智能领域进行建模和不确定性推理的一个有效工具.贝叶斯网推理的基本任务是:给定一组证据变量观察值,通过搜索条件概率表计算一组查询变 ...

  3. 对频率论(Frequentist)方法和贝叶斯方法(Bayesian Methods)的一个总结

    本文是对<IPython Interactive Computing and Visualization Cookbook>一书中第七章[Introduction to statistic ...

  4. 判别模型、生成模型与朴素贝叶斯方法

    1.判别模型与生成模型 上篇报告中提到的回归模型是判别模型,也就是根据特征值来求结果的概率.形式化表示为,在参数确定的情况下,求解条件概率.通俗的解释为在给定特征后预测结果出现的概率. 比如说要确定一 ...

  5. 一步步教你轻松学朴素贝叶斯模型算法理论篇1

    一步步教你轻松学朴素贝叶斯模型理论篇1 (白宁超2018年9月3日17:51:32) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...

  6. 贝叶斯网络结构学习之K2算法(基于FullBNT-1.0.4的MATLAB实现)

    题目:贝叶斯网络结构学习之K2算法(基于FullBNT-1.0.4的MATLAB实现) 有关贝叶斯网络结构学习的一基本概念可以参考:贝叶斯网络结构学习方法简介 有关函数输入输出参数的解释可以参考:贝叶 ...

  7. 机器学习笔记(七)贝叶斯分类器

    7.贝叶斯分类器 7.1贝叶斯决策论 贝叶斯决策论(Bayesiandecision theory)是概率框架下实施决策的基本方法.对分类任务来说,在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如 ...

  8. Python的贝叶斯网络学习库pgmpy介绍和使用

    文章目录 pgmpy 代码记录 包 parameter Learning structural Learning with Score structural Learning with Constra ...

  9. 实现 | 朴素贝叶斯模型算法研究与实例分析

    实现 | 朴素贝叶斯模型算法研究与实例分析 (白宁超  2018年9月4日10:28:49) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受 ...

最新文章

  1. Vim安装、配置和插件的添加使用(可以以目录的形式打开)
  2. tf.pad函数功能介绍
  3. java数组 —(7)
  4. P6669 [清华集训2016] 组合数问题
  5. 目录操作相关的系统函数
  6. 《SolidWorks 2013中文版机械设计从入门到精通》一1.4 操作环境设置
  7. AT指令联网---以鸿蒙开发板为例
  8. [翻译] 物理引擎javascript实现
  9. php网页登录制作,thinkphp5 系统登录的实现
  10. Dart基础第3篇:常用数据类型、字符串类型、数值类型、布尔类型、List集合类型、Maps类型
  11. linux命令面试题大全,Linux系统命令面试题大全
  12. 微信文件夹下不可言说的秘密自动生成小视频文件
  13. ZZNUOJ_C语言1047:对数表(完整代码)
  14. 推荐6本Java书籍,助你在Java路上更精进!
  15. 接口文档神器---Swagger注解使用与实例
  16. 目前我国网络安全人才市场状况
  17. RK3066开发板的唯一码UUID
  18. linux报错Error: /proc must be mounted
  19. Understand for linux
  20. 经济原理 —— 经济机器如何运行

热门文章

  1. linux命令 dmesg,Linux命令入门(1) dmesg命令介绍
  2. 深度Linux15.11+Wine5.0_RC2+DXVK1.5之古剑奇譚网络版
  3. 队列知识及编程练习总结
  4. 使用tensorflow构建简单卷积神经网络
  5. python安装库的方法
  6. 卧槽!华为也开始养猪了
  7. js节点都有哪些类型?怎么判断是哪种节点类型?
  8. JavaScript常用节点类型
  9. java excel导入太慢_[Java] 高效快速导入EXCEL数据
  10. 冰箱什么品牌最好排名前十名 冰箱什么品牌最省电2023