利用XGBoosting进行预测

本文介绍了Boosting模型中的XGBoosting,它是一种高效、精度高的梯度提升算法实现。XGBoosting在大数据集上的快速并行处理能力使其在预测任务中表现出色,特别是在时间序列预测中。作者分享了如何利用XGBoosting解决2000个shop未来6周销售量的预测问题,以及在Kaggle竞赛中的应用案例。
摘要由CSDN通过智能技术生成

Boosting分类器属于集成学习模型,它基本思想是把成百上千个分类准确率较低的树模型组合起来,成为一个准确率很高的模型。这个模型会不断地迭代,每次迭代就生成一颗新的树。对于如何在每一步生成合理的树,大家提出了很多的方法,我们这里简要介绍由Friedman提出的Gradient Boosting Machine。它在生成每一棵树的时候采用梯度下降的思想,以之前生成的所有树为基础,向着最小化给定目标函数的方向多走一步。关于GBDT的理论介绍,生活实例以及代码,可以看下面链接

http://blog.csdn.net/tuntunwang/article/details/66969726

在合理的参数设置下,我们往往要生成一定数量的树才能达到令人满意的准确率。在数据集较大较复杂的时候,我们可能需要几千次迭代运算,如果生成一个树模型需要几秒钟,那么这么多迭代的运算耗时,应该能让你专心地想静静…

现在,我们希望能通过xgboost工具更好地解决这个问题。xgboost的全称是eXtreme Gradient Boosting。正如其名,它是Gradient Boosting Machine的一个c++实现(只是代码实现上的创新),作者为正在华盛顿大学研究机器学习的大牛陈天奇。他在研究中深感自己受制于现有库的计算速度和精度,因此在一年前开始着手搭建xgboost项目,并在去年夏天逐渐成型。xgboost最大的特点在于,它能够自动利用CPU的多线程进行并行,同时在算法上加以改进提高了精度。它的处女秀是Kaggle的希格斯子信号识别竞赛,因为出众的效率与较高的预测准确度在比赛论坛中引起了参赛选手的广泛关注,在1700多支队伍的激烈竞争中占有一席之地。随着它在Kaggle社区知名度的提高,最近也有队伍借助xgboost在比赛中夺得第一。为了方便大家使用,陈天奇将xgboost封装成了python库。

这里的背景是预测2000个shop未来6周的销售量。训练数据是2015-7-1至2016-10-30的流量(天池IJICAI)

数据下载地址 https://pan.baidu.com/s/1miz8CrA

代码如下

#encoding=utf-8
import pandas as pd
import numpy as np
import time
from sklearn import cross_validation
import xgboost as xgb
DATA_DIR="/home/wangtuntun/IJCAI/Data/"
shop_info_column_names=["shop_id","city_name","location_id","per_pay","score","comment_cnt","shop_level","cate_1","cate_2","cate_3"]
# user_pay_colimn_names=["user_id","shop_id","time_stamp"]#用python实现groupby方法不好实现,利用spark的sparkcontext.sql()实现,然后存取文件
shop_info=pd.read_csv(DATA_DIR+"shop_info.txt",names=shop_info_column_names)
flow_path="/home/wangtuntun/IJCAI/Data/ml_flow_raw_data_file.txt/part-00000"#这个文件是用sparkContext.sql()实现的,在本代码中不做代码展示。
merge_data_path="/home/wangtuntun/shop_info_flow.csv" #将
  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
您的问题是关于 Python 中使用贝叶斯优化来优化 XGBoosting 回归预测的方法吗? 如果是的话,您可以使用 Python 中的 BayesianOptimization 库来执行贝叶斯优化。该库可以帮助您确定 XGBoosting 模型的最优参数,从而提高回归预测的准确性。 以下是一个简单的示例代码,展示了如何使用 BayesianOptimization 库来优化 XGBoosting 回归模型: ```python from bayes_opt import BayesianOptimization import xgboost as xgb from sklearn.datasets import load_boston from sklearn.metrics import mean_squared_error from sklearn.model_selection import cross_val_score, KFold # 加载数据集 boston = load_boston() X = boston.data y = boston.target # 定义目标函数 def xgb_evaluate(max_depth, gamma, colsample_bytree): params = {'eval_metric': 'rmse', 'max_depth': int(max_depth), 'subsample': 0.8, 'eta': 0.1, 'gamma': gamma, 'colsample_bytree': colsample_bytree} # 训练 XGBoosting 模型 model = xgb.train(params, dtrain, num_boost_round=100) # 计算交叉验证分数 kf = KFold(n_splits=5, shuffle=True, random_state=42) mse = -cross_val_score(model, X, y, cv=kf, scoring='neg_mean_squared_error') return mse.mean() # 定义搜索范围 pbounds = {'max_depth': (3, 10), 'gamma': (0, 1), 'colsample_bytree': (0.3, 1)} # 创建贝叶斯优化对象 optimizer = BayesianOptimization(f=xgb_evaluate, pbounds=pbounds, random_state=42) # 执行优化 optimizer.maximize(init_points=10, n_iter=20) # 输出最优参数 print(optimizer.max) ``` 在这个示例中,我们使用了波士顿房价数据集,并使用 XGBoosting 模型进行回归预测。我们定义了目标函数 `xgb_evaluate`,该函数接受三个参数:`max_depth`、`gamma` 和 `colsample_bytree`。这些参数是我们希望使用贝叶斯优化来寻找的最佳值。 我们将参数传递给 XGBoosting 模型,并使用交叉验证来计算模型的平均均方误差。贝叶斯优化对象 `optimizer` 使用目标函数 `xgb_evaluate` 和搜索范围 `pbounds` 进行优化。我们执行了 10 次初始点的优化,然后迭代了 20 次以获取最佳参数。 最后,我们输出了最优参数。您可以在自己的代码中使用这些参数来训练 XGBoosting 模型,并进行回归预测

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值