[数学建模从入门到入土] 预测模型
[数学建模从入门到入土] 预测模型
个人导航
知乎:https://www.zhihu.com/people/byzh_rc
CSDN:https://blog.csdn.net/qq_54636039
注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码
参考文章:各方资料
文章目录
时间序列预测
-
ARIMA
-
多元线性回归
-
Logistic回归
-
LSTM和决策树
更加在乎过程的可解释性, 不要一味追求结果高
核心思路分类:
- 因果关联分析: 分析可能存在影响的因素
(因变量与自变量的关联) - 时间延续性分析: 关注数据在时间推移中的变化
(因变量和时间,历史数据的关联)
ARIMA问题描述

自回归积分滑动平均模型ARIMA
一种处理非平稳时间序列的统计方法
通过对时间序列进行差分处理(使其平稳化), 结合自回归AR和滑动平均MA的特性, 建立预测模型
三个参数:
- p p p: 自回归AR的阶数
- d d d: 差分次数(使时间序列平稳)
- q q q: 滑动平均MA的阶数
X t = ϕ 1 X t − 1 + ϕ 2 X t − 2 + ⋯ + ϕ p X t − p + θ 1 ϵ t − 1 + θ 2 ϵ t − 2 + ⋯ + θ q ϵ t − q + ϵ t X_t = \phi_1 X_{t-1} + \phi_2 X_{t-2} + \dots + \phi_p X_{t-p} + \theta_1 \epsilon_{t-1} + \theta_2 \epsilon_{t-2} + \dots + \theta_q \epsilon_{t-q} + \epsilon_t Xt=ϕ1Xt−1+ϕ2Xt−2+⋯+ϕpXt−p+θ1ϵt−1+θ2ϵt−2+⋯+θqϵt−q+ϵt
ϕ 1 , ϕ 2 , … , ϕ p \phi_1 , \phi_2 , \dots , \phi_p ϕ1,ϕ2,…,ϕp: 自回归参数
θ 1 , θ 2 , … , θ p \theta_1 , \theta_2 , \dots , \theta_p θ1,θ2,…,θp: 滑动平均参数
ϵ t \epsilon_t ϵt: 白噪声误差项
步骤:
- 数据准备: 对非平稳序列进行差分处理
- 参数估计: 拟合(p, d, q)参数
- 模型验证: 检验模型的拟合效果
- 未来预测: 根据模型对未来的时间序列值进行预测
1.数据准备
理论背景:ARIMA模型适用于平稳时间序列,而非平稳时间序列需要通过差分处理使其平稳。平稳性是时间序列分析的基本要求,指序列的均值和方差不随时间变化,并且序列的自相关函数仅取决于滞后时间,而与时间点无关。如果时间序列不平稳,可能表现为以下特性:
- 均值随时间变化,呈现上升或下降趋势
- 方差随时间变化,数据波动幅度逐渐增大或减小
- 存在周期性或季节性波动
对于非平稳时间序列,常用以下方法进行平稳化处理:
-
差分法:通过计算相邻数据点的差分,去除趋势性,使数据平稳。差分公式为:
△ X t = X t X t 1 \triangle X_t = X_t X_{t1} △Xt=XtXt1
对数据多次差分后,可以逐步消除趋势性 -
对数变换:对数据取对数,减小数据的波动幅度
-
季节性调整:如果数据具有周期性波动特性,可以对每个周期的平均值进行调整
在模型构建过程中,模型的三个参数 ( p , d , q ) (p,d,q) (p,d,q) 的选择非常关键:
- p:自回归部分的阶数,表示当前值与p个滞后值之间的线性关系
- d:差分次数,用于将非平稳时间序列转化为平稳时间序列
- q:移动平均部分的阶数,表示当前值与α个随机误差项之间的关系
常用方法确定模型阶数包括:
- 绘制自相关函数(ACF)图:判断MA(移动平均)部分的阶数
- 绘制偏自相关函数(PACF)图:判断AR(自回归)部分的阶数
2.模型建立与参数估计
ARIMA模型的核心是通过最小二乘法拟合模型参数,使得模型预测值与实际值之间的误差平方和最小
通过历史数据,估计模型参数 ϕ , θ \phi, \theta ϕ,θ,需要先计算误差项 ϵ \epsilon ϵ,再通过最小二乘法拟合模型
3.未来预测
利用ARIMA模型预测未来值时,需要最近 p p p 个时间序列值和 q q q 个误差项值
回归
研究自变量(解释变量)和因变量(被解释变量)之间的关系
一元线性回归:
y = β 0 + β 1 x + ϵ y=\beta_0+\beta_1x+\epsilon y=β0+β1x+ϵ
ϵ \epsilon ϵ: 通常是独立同分布的, 均值为 0 0 0, 方差为 σ 2 \sigma^2 σ2
找最优参数 β 0 \beta_0 β0 和 β 1 \beta_1 β1 使预测值 y ^ \hat{y} y^ 与实际值 y y y 的偏差最小
多元线性回归:
y = β 0 + β 1 x 1 + β 2 x 2 + . . . + β p x p + ϵ y=\beta_0+\beta_1 x_1+\beta_2 x_2+...+\beta_p x_p+\epsilon y=β0+β1x1+β2x2+...+βpxp+ϵ
谁的 β \beta β越大, 说明哪个指标的权重更大, 更重要
- 数据准备阶段
- 数据收集
- 数据清洗
- 数据转换与标准化
- 特征选择与处理
- 检查变量间的线性关系
- 多重共线性检测
- 特征工程
- 模型构建阶段
- 确定模型
- 拆分数据集
- 模型训练
- 检查模型拟合
- 模型评估阶段
- 拟合优度 R 2 R^2 R2
- 调整后的 R 2 R^2 R2
- 均方误差MSE
- 均分根误差RMSE
- 平均绝对误差MAE
- 模型优化与改进
- 特征选择优化
- 非线性改进
- 数据变换
- 正则化方法
1.数据准备阶段
数据收集: 覆盖范围广, 具有代表性
数据清洗:
- 缺失值(删除, 填补)
- 异常值(箱线图识别)
检查一致性: 单位, 取值范围
数据转换与标准化: 略
2.特征选择与处理
检查变量间的线性关系:
- 散点图可视化, 相关矩阵
- pearson相关系数
如果某个自变量和因变量的相关性很弱, 可以考虑剔除
多重共线性检测:
计算变量的方差膨胀因子(VIF), 一般认为 V I F > 10 VIF>10 VIF>10时说明共线性较强
如果存在多重共线性, 可以通过以下方法解决:
- 提出相关性强的变量
- 使用正则化方法(岭回归, LASSO回归)
- PCA降维
特征工程:
- 添加新特征: 构建交互项( x 1 × x 2 x_1 \times x_2 x1×x2) 或 非线性项( x 2 x^2 x2)
- 编码分类变量: 对类别型变量进行处理(独热编码, 数值化编码)
3.模型构建阶段
确定模型形式: y = β 0 + β 1 x 1 + β 2 x 2 + . . . + β p x p + ϵ y=\beta_0+\beta_1 x_1+\beta_2 x_2+...+\beta_p x_p+\epsilon y=β0+β1x1+β2x2+...+βpxp+ϵ
拆分数据集: 留出法(7:3或8:2)
模型训练:
- 用训练集拟合多元线性回归模型, 常用最小二乘法OLS
- 通过最小化残差平方和RSS估计回归系数 β \beta β
检查模型拟合:
- 检查回归系数的显著性 -> 通过t检验和p值
- 检查模型的整体显著性 -> 通过F检验
- 确认误差项是否满足正态性和同方差性假设 -> 残差分析
4.模型评估阶段
拟合优度 R 2 R^2 R2: 反映模型对数据的解释能力, 范围[0, 1]
R 2 = 1 − R S S T S S R^2=1-\frac{RSS}{TSS} R2=1−TSSRSS
调整后的 R 2 R^2 R2: 适用于多元回归, 能够平衡模型复杂度
R a d j u s t e d 2 = 1 − ( 1 − R 2 ) ( n − 1 ) n − p − 1 R^2_{adjusted}=1-\frac{(1-R^2)(n-1)}{n-p-1} Radjusted2=1−n−p−1(1−R2)(n−1)
均方误差MSE:
M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 MSE=n1i=1∑n(yi−y^i)2
均分根误差RMSE:
R M S E = M S E RMSE = \sqrt{MSE} RMSE=MSE
平均绝对误差MAE:
M A E = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE = \frac{1}{n} \sum_{i=1}^n |y_i - \hat{y}_i| MAE=n1i=1∑n∣yi−y^i∣
5.模型优化与改进
特征选择优化:
- 逐步回归, LASSO回归, 岭回归 -> 最优特征子集
- 剔除不显著或相关性过高的变量
非线性改进:
- 如果数据存在非线性关系,可以引入多项式特征或通过非线性回归方法改进
数据变换:
- 对因变量或自变量进行对数、平方根或其他变换,改善模型的拟合效果
正则化方法:
- 使用**岭回归(L2正则化)或LASSO回归(L1正则化)**解决过拟合或多重共线性问题
例子:
马尔科夫预测模型
基于状态转移的预测方法
假设未来状态仅依赖于当前状态,而与历史状态无关
通过构建状态转移概率矩阵,描述系统从一个状态转移到另一个状态的概率,并利用该矩阵迭代预测未来状态的概率分布
- 数据准备:将历史数据转化为离散状态
- 状态转移概率矩阵计算:统计各状态间的转移次数,计算转移概率
- 状态预测:利用转移概率矩阵和当前状态分布,通过矩阵运算迭代预测未来状态分布
P t + 1 = P t ∗ T P_{t+1}=P_t*T Pt+1=Pt∗T
- P t P_t Pt: 当前时刻的状态概率分布
- T T T: 状态转移概率矩阵
- P t + 1 P_{t+1} Pt+1: 下一时刻的状态概率分布
1.数据准备

2.构建状态转移概率矩阵

3.预测未来状态分布

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐







所有评论(0)