常见的预测模型及算法「建议收藏」

常见的预测模型及算法「建议收藏」如果得到一份数据集,任务是要预测出一系列的值,而在预测任务中,我们大多数都采用的是拟合的方法,这篇文字主要介绍三种预测方法时间序列分析,灰色预测模型,神经网络。时间序列分析时间序列也叫动态序列,数据是按时间和数值性成的序列。而时间序列分析有三种作用,大致可以描述为描述过去,分析规律,预测将来。接下来将会讲到三种模型(季节分解,指数平滑,ARIMA模型)。一般情况下时间序列的数值变化规律有四种…

大家好,又见面了,我是你们的朋友全栈君。

如果得到一份数据集,任务是要预测出一系列的值,而在预测任务中,我们大多数都采用的是拟合的方法,这篇文字主要介绍三种预测方法时间序列分析,灰色预测模型,神经网络。

1. 时间序列分析

时间序列也叫动态序列,数据是按时间和数值性成的序列。而时间序列分析有三种作用,大致可以描述为描述过去,分析规律,预测将来。接下来将会讲到三种模型(季节分解,指数平滑,ARIMA模型)。
一般情况下时间序列的数值变化规律有四种(长期趋势T,循环变动C,长期趋势T,不规则变动I)。我们先要对数据做出时间序列图,观察数据随周期的变化,进而判断序列是否随周期波动大,如果说整体序列随周期波动大,或波动不大,我们对其进行季节性分解,分别采用乘法和叠加模型。
在这里插入图片描述
在这里插入图片描述

至于缺失值可以自己选择方法填补,这里主要介绍该模型的思想以及步骤。下面介绍具体预测模型。
首先介绍的是指数平滑模型
指数平滑大致分为简单平滑,Holt线性趋势模型,阻尼趋势模型,简单季节性温特模型

简单平滑模型
这里截取了一个文章的段落。在这里插入图片描述
这里说明一下平滑参数α的选择:(1)如果时间序列不规则起伏但长期趋于一个较稳定的数,那么α在(0.05,0.2)之间,(2)如果序列有明显的变化,那么α在(0.3,0.5)之间,(3)如果序列变化比较缓慢则,α在(0.1,0.4)之间。要注意的是,这个模型只能预测一期数据,原因是他的预测公式。在这里插入图片描述
这里我们的第一项是要预测的。如果预测出来,再想要预测t+2时的数据,可见我们需要Xt+1的真实数据,而我们不存在它的真实数据,最终预测t+2时只能用t+1预测值代替,带入方程中就会得到Xt+2=Xt+1。就会有下面的现象。在这里插入图片描述
当再到2014后面时都为一个数。各个模型的具体介绍及比较
Hole现象趋势模型
Hole对简单的指数平滑模型进行了延申,能够预测包含趋势的数据,该方法包含一个预测方程和两个平滑方法。适用条件:线性趋势,不含季节成分。此外还有Brown线性趋势模型是此模型的特例。
在这里插入图片描述

阻尼趋势模型
适用条件:线性趋势逐渐减弱且不含季节成分。Hole的线性趋势模型对未来预测值过高,这此基础上对该模型调整,加入阻力效应有效缓解较高的线性趋势。
模型如下:在这里插入图片描述
如下是两模型的比较,红色指的是加入阻尼后的模型,蓝色指的是Hole线性趋势模型。在这里插入图片描述
简单季节性
适用条件:含有稳定的季节性,不含趋势。模型如下:在这里插入图片描述
温特加法与温特乘法
他们的适用条件均是含有季节性和稳定的季节成分,但是前面提到过,加法和乘法的选择是要看时间序列的波动性,呈周期波动大的则是乘法,反之是加法。下面分别是温特加法和温特乘法。温特加法
在这里插入图片描述
从图中更清楚的看到他们的区别,一者预测波动较大的另一个预测波动较为平缓的。在这里插入图片描述
此外运用这些模型要需要时间序列的平稳性,若平稳度低,并时间序列间隔与预测无关即协方差为0则说明Xt是个白噪声序列。一般用ACF和PACF检测但是这两种检测偶然情况太多,很难判断出来,下文会提到,如果是ARMA模型,根本判断不出来。
由上面的指数平滑模型,这里预测女装的销售额,在这里插入图片描述
首先对数据做出时间序列图:在这里插入图片描述
从中发现整体序列呈周期波动越来越大,因此,本文采用叠加模型对周期进行季节性分解。因时间序列数据受季节性影响较大和数据的波动规律,本文选取温特的乘法模型。

通过观察数据,在每年中三月和十二月中,在一个周期内明显比其他月份的销售额大,并且随着周期的进行,我们发现整体时间序列数据随周期波动逐渐升高,因而,我们对该时间序列采用乘法模型的季节性分解,分解后如下图:在这里插入图片描述
在这里插入图片描述
由于时间序列数据受季节性波动影响较大,本文采用温特乘法(Winter’s multiplicative)模型对数据建模在这里插入图片描述
说明温特乘法序列模型的三个参数α,β,γ的值分别为0.034,2.4.6E-7,0.001,且此时Q检验服从原假设,并且做出残差ACF以及残差PACF图如下,可见在ACF检验中,所由滞后性阶数均与0无差异,而PACF中可能存在少许误差,说明扰动项噪声数据基本属于白噪声,温特乘法能够较好低识别本数据。

在这里插入图片描述
根据温特乘法,预测出的数据如下图所示,实际值与拟合值趋势基本符合,根据上表,拟合优度有0.815,说明拟合效果良好,预测出来的数据也显示出了周期性和波动的趋势。
最后预测出十年女装销售额的数据如下:在这里插入图片描述
在这里插入图片描述

2.机器学习预测模型

2.1 决策树

这篇博客介绍决策树还可以,借助这篇博客,用sklearn实现回归树
决策树介绍

from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor
#导入内置数据集
X, y = load_diabetes(return_X_y=True)
#切分训练集和测试集
train_x,test_x,train_y,test_y = train_test_split(X,y,test_size=0.3)
#构建回归树模型
regressor = DecisionTreeRegressor(random_state=0).fit(train_x,train_y)
#十折交叉验证模型的性能
cross_val_score(regressor, X, y, cv=10)
#预测
regressor.predict(test_x)

另外可以对决策树可视化,效果图:
在这里插入图片描述
附上实现的连接:可视化

2.2 支持向量机回归(SVR)

支持向量分类产生的模型(如上所述)仅依赖于训练数据的一个子集,因为构建模型的成本函数不关心超出边界的训练点。类似地,支持向量回归生成的模型仅依赖于训练数据的一个子集,因为成本函数忽略了预测接近其目标的样本。

支持向量回归有 3 种不同的实现: SVR、NuSVR和LinearSVR。LinearSVR 提供比SVR但仅考虑线性内核更快的实现,同时NuSVR实现与SVR和略有不同的公式LinearSVR。
具体实现如下:

from sklearn.model_selection import train_test_split
import numpy as np
from sklearn.svm import SVR
from sklearn import metrics
from sklearn.metrics import accuracy_score,precision_score, recall_score
''' X:特征向量 y:样本的目标值 trn_x:训练集的特征 val_x:测试集的特征 trn_y:训练集的目标值 val_y:测试集的目标值 '''
trn_x, val_x, trn_y, val_y = train_test_split(X, y, test_size=0.3, random_state=42)
''' kernel参数可选:{'linear','rbf','sigmoid'...} '''
clf2 = SVR(kernel='linear',C=15,gamma='auto',probability=True,random_state=42).fit(trn_x,trn_y)

resu = clf2.predict(val_x)
y_pred_gbc = clf2.predict_proba(val_x)[:,1] 
y_pred = clf2.predict(val_x)
y=np.array(val_y)

print('-'*10,'svm','-'*10)
fpr, tpr, thresholds = metrics.roc_curve(y,y_pred_gbc,pos_label=1)
#输出测试集的Accuracy
print('acc',accuracy_score(val_y,y_pred))

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152291.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月23日 下午3:36
下一篇 2022年6月23日 下午3:46


相关推荐

  • winhex硬盘修复教程

    winhex硬盘修复教程

    2026年3月13日
    2
  • 【软件测试】测试用例八要素

    【软件测试】测试用例八要素目录测试用例八要素1.测试用例编号2.测试模块3.测试用例标题4.重要级别5.预置条件6.测试输入7.操作步骤8.预期输出测试用例额外的要素1.用例设计者2.用例设计日期3.用例版本号4.对应的开发人员5.测试类型测试用例八要素1.测试用例编号编号是由字母和数字组合而成的,用例的编号应该具有唯一性,易识别性,有且于其和测试结果、错误报告等其他文档的链接。这样看到编号就可以知道是做的什么测试,测试的对象是什么,也方…

    2022年6月28日
    34
  • wap开发工具网址集锦

    wap开发工具网址集锦http blog sina com cn s blog 4940515c0100 html

    2026年3月17日
    2
  • vue v-if 多条件_vue vnode

    vue v-if 多条件_vue vnodev-if在模板中,可以根据条件进行渲染。条件用到的是v-if、v-else-if以及v-else来组合实现的。示例代码如下:<divid="app"><p

    2022年8月7日
    9
  • 修改计算机用户名 未识别网络,电脑出现未识别的网络,无Internet访问解决办法 这几步你要了解…[通俗易懂]

    修改计算机用户名 未识别网络,电脑出现未识别的网络,无Internet访问解决办法 这几步你要了解…[通俗易懂]网卡驱动问题01在桌面的计算机图标上右键单击一下,选择【设备管理器】,然后在设备管理器页面下方找到【网络适配器】。02打开网络适配器列表,找到当前的网卡驱动,用鼠标右键点击一下,在弹出的菜单中选择【禁用】,接着再点击【启用】。好了,以上就是大致内容了,(END)更改适配器设置01在电脑桌面上找到网络图标,右键点击一下,在菜单中选择【属性】,然后会进入到网络属性的主界面。02接着,在属性界面的左侧菜…

    2022年10月14日
    7
  • spss聚类分析步骤详细解读_spss聚类分析实验报告

    spss聚类分析步骤详细解读_spss聚类分析实验报告目录快速聚类系统聚类分析二阶聚类分析快速聚类【分析】【分类】【k-均值聚类】,将变量移至变量框中,员工id移至【个案标注依据】框中【聚类数】是期望分成几组【保存】勾选【聚类成员】复选框结果解读:随机选择三个数据作为快速聚类的初始位置显示迭代次数,迭代过程可以理解为每个类别与初始位置之间的距离改变情况,当这个距离变动非常小,迭代就完成了…

    2022年10月9日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号