【每周一篇】XGBoost和ARIMA模型(一)

本文介绍了XGBoost算法的基本原理和调参技巧,包括目标函数、模型复杂度、参数设置等,并提及了与GBDT的区别。文章探讨了XGBoost在工程中的应用,如并行化实现和Python使用,还提到了DART方法作为扩展。此外,文章简要提及了ARIMA模型,计划后续补充相关内容。
摘要由CSDN通过智能技术生成

最近因为项目需要,临时抱佛脚开始熟悉XGBoost算法和ARIMA算法
真是书到用时方恨少啊(捂脸暴风哭泣

趁着项目准备阶段,索性好好整理一下这一领域的知识,省的等到调参的时候心发慌。虽然都说深度学习领域调参是一门玄学,但必须的理论知识也是需要的,只有深入了解了基础框架,才能够更好的针对实际场景进行优化。

因为时间紧急,这篇文章不会内容应该不会特别多,未来有机会再补充吧。

说到xgboost,不得不说gbdt,两者都是boosting方法,在面试的时候,我就被问到过这两个的区别。

boosting是一种提高任意给定学习算法准确度的方法。这种方法通过构造一个预测函数系列,然后以一定的方式将他们组合成一个预测函数。

说起来,这个方法从1990年被Schapire提出简陋版后,就一直在被各路大牛不断改进,但是作为一名算法工程师,二十多年后我才开始试着学习并使用它。。。真是非常惭愧了。= =

参考链接贴在这里:https://blog.csdn.net/u010159842/article/details/77503930

扯回原话题,有机会我会整理一个gbdt的内容
在这里插入图片描述
如果不考虑工程实现、解决问题上的一些差异,xgboost与gbdt比较大的不同就是目标函数的定义
在这里插入图片描述

红色箭头指向的l即为损失函数;红色方框为正则项,包括L1、L2;红色圆圈为常数项。xgboost利用泰勒展开三项,做一个近似,我们可以很清晰地看到,最终的目标函数只依赖于每个数据点的在误差函数上的一阶导数和二阶导数。

原理

(1)定义树的复杂度

对于f的定义做一下细化,把树拆分成结构部分q和叶子权重部分w。下图是一个具体的例子。结构函数q把输入映射到叶子的索引号上面去,而w给定了每个索引号对应的叶子分数是什么。
在这里插入图片描述
在这里插入图片描述

这里,为了调整整个模型,对于正则化的部分,我们时常想要函数包含节点个数和叶节点输出权重的L2模平方。
(这个并不唯一,但是通常的做法)这时有:
在这里插入图片描述
这里方框部分就对

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用ARIMA模型时,我们需要进行以下步骤: 1. 导入必要的库和数据 2. 观察时间序列的特征,包括趋势和季节性 3. 对时间序列进行差分处理 4. 使用ACF和PACF图确定ARIMA模型的p,d和q值 5. 拟合ARIMA模型并进行预测 下面是一个完整的Python源代码示例,用于实现ARIMA模型: ```python # Step 1: 导入必要的库和数据 import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.tsa.arima_model import ARIMA data = pd.read_csv('data.csv', index_col='date', parse_dates=True) # 假设我们的数据是一个带有日期索引的csv文件 # Step 2: 观察时间序列的特征 plt.plot(data) plt.xlabel('Date') plt.ylabel('Data') plt.show() # Step 3: 对时间序列进行差分处理 diff_data = data.diff().dropna() # Step 4: 使用ACF和PACF图确定ARIMA模型的p,d和q值 from statsmodels.graphics.tsaplots import plot_acf, plot_pacf plot_acf(diff_data) plot_pacf(diff_data) plt.show() # 根据ACF和PACF图,我们可以看到p=1,q=1 # Step 5: 拟合ARIMA模型并进行预测 model = ARIMA(data, order=(1,1,1)) results = model.fit() predictions = results.predict(start='2021-01-01', end='2021-12-31', dynamic=False) plt.plot(data) plt.plot(predictions, color='red') plt.xlabel('Date') plt.ylabel('Data') plt.show() ``` 以上代码中,我们首先导入必要的库和数据,然后使用Matplotlib绘制时间序列图,以便观察时间序列的特征。接着,我们进行一阶差分处理,并使用ACF和PACF图确定了ARIMA模型的p,q值。最后,我们拟合了ARIMA模型,并进行了预测,使用Matplotlib绘制了实际数据和预测数据的图形。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值