首页 > 其他分享 >基于ARIMA、SVM、随机森林销售的时间序列预测|附代码数据

基于ARIMA、SVM、随机森林销售的时间序列预测|附代码数据

时间:2023-05-27 21:23:28浏览次数:42  
标签:SVM 预测 模型 ARIMA 神经网络 随机 序列 LSTM 数据

原文链接  http://tecdat.cn/?p=1130

最近我们被客户要求撰写关于时间序列预测的研究报告,包括一些图形和统计输出。

如今DT(数据技术)时代,数据变得越来越重要,其核心应用“预测”也成为互联网行业以及产业变革的重要力量。

对于零售行业来说,预测几乎是商业智能(BI)研究的终极问题,单纯从机器学习的角度来说,做到精准预测很容易,但是结合业务提高企业利润却很难。预测精确性是核心痛点。

 

业务挑战

扎对 ,将产品粗略分为:基本款和时装。 对于基本款,每年都没什么大变化,国际流行的影响也不大,那么可以进行长计划生产。对于时装,决定潮流走向的决策权不在某个区域,一个地方的买手们也没有成长到可以准确预判国际流行趋势,所以需要结合不同区域的各种因素,进行预测。对应的,在新货构成中,销量预测策略为:基本款计划生产,时尚款机动调整。

图片

解决方案

任务/目标

根据服装零售业务营销要求,运用多种数据源分析实现精准销量预测。

数据源准备

沙子进来沙子出,金子进来金子出。无数据或数据质量低,会影响模型预测效果。在建立的一个合理的模型之前,对数据要进行收集,搜集除已有销量数据之外的额外信息(比如天气,地点,节假日信息等),再在搜集的数据基础上进行预处理。

有了数据,但是有一部分特征是算法不能直接处理的,还有一部分数据是算法不能直接利用的。

特征转换

把不能处理的特征做一些转换,处理成算法容易处理的干净特征举例如下:

销售日期。就时间属性本身来说,对模型来说不具有任何意义,需要把日期转变成到年份,月份,日,周伪变量。

产品特征。从产品信息表里面可以得到款式,颜色,质地以及这款产品是否是限量版等。然而并没有这些变量。这就需要我们从产品名字抽取这款产品的上述特征。

以上例举的只是部分特征。

构造

以上说明了如何抽取相关特征,我们大致有如下训练样本(只列举部分特征)。

图片

划分训练集和测试集

考虑到最终模型会预测将来的某时间段的销量,为了更真实的测试模型效果,以时间来切分训练集和测试集。具体做法如下:假设我们有2014-02-012017-06- 17的销量相关数据。以2014-02-012016-03-19的销量数据作为训练,2016-03-20~2017-06-17的数据作为测试。

建模

ARIMA, 一般应用在股票和电商销量领域

ARIMA模型是指将非平稳时间序列转化为平稳时间序列,然后将结果变量做自回归(AR)和自平移(MA)。

随机森林

用随机的方式建立一个森林,森林由很多决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。

支持向量回归(SVR)

SVR最本质与SVM类似,都有一个缘,只不过SVM的保证金是把两种类型分开,而SVR的保证金是指里面的数据会不会对回归有帮助。

模型优化

1.上线之前的优化:特征提取,样本抽样,参数调参。

图片转存失败,建议直接上传图片文件

2.上线之后的迭代,根据实际的A / B测试和业务人员的建议改进模型

图片


点击标题查阅往期内容

图片

数据分享|R语言分析上海空气质量指数数据:kmean聚类、层次聚类、时间序列分析:arima模型、指数平滑法

图片

左右滑动查看更多

图片

01

图片

02

图片

03

图片

04

图片

从上图可以看出,在此案例中,支持向量机和随机森林算法模型的预测误差最小,运用3种方法预测某商品的销量,其可视化图形如下:

图片

图片

图片

可以看出,销量的预测值的趋势已经基本与真实销量趋势保持一致,但是在预测期较长的区间段,其预测值之间的差别较大。

评估效果不能只看销量,要综合考虑,需要参考业务对接,预测精度,模型可解释性和产业链整体能力等因素综合考虑;不能简单作为企业利润增加的唯一标准我们的经验是,预测结果仅作为参考一个权重值,还需要专家意见,按照一定的权重来计算。

展望

除了以上列举的一些方法,我们已经在尝试更复杂的销售预测模型,如HMM,深度学习(Long Short-Term Memory网络,卷积神经网络(CNN))等;同时需要考虑到模型的可解释性,可落地性和可扩展性,避免“黑箱”预测 ;还在尝试采用混合的机器学习模型,比如GLM + SVR,ARIMA + NNET等。

销售预测几乎是商业智能研究的终极问题,即便通过机器学习算法模型能够提高测试集的预测精度,但是对于未来数据集的预测,想做到精准预测以使企业利润最大化,还需要考虑机器学习模型之外的企业本身因素。比如,企业的整体供应链能力等,如何将企业因素加入到机器学习模型之中,是未来预销售预测的一个难点与方向。因此,要想解决销售预测终极问题还有一段路要走。

图片

点击文末 “阅读原文”

获取全文完整资料。

本文选自《机器学习助推快时尚精准销售时间序列预测》。

点击标题查阅往期内容

Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据
RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测
结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析
深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据
用PyTorch机器学习神经网络分类预测银行客户流失模型
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化
Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言深度学习:用keras神经网络回归模型预测时间序列数据
Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类
R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)
MATLAB中用BP神经网络预测人体脂肪百分比数据
Python中用PyTorch机器学习神经网络分类预测银行客户流失模型
R语言实现CNN(卷积神经网络)模型进行回归数据分析
SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型
【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析
Python使用神经网络进行简单文本分类
R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析
R语言基于递归神经网络RNN的温度时间序列预测
R语言神经网络模型预测车辆数量时间序列
R语言中的BP神经网络模型分析学生成绩
matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类
R语言实现拟合神经网络预测和结果可视化
用R语言实现神经网络预测股票实例
使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测
python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译
用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

标签:SVM,预测,模型,ARIMA,神经网络,随机,序列,LSTM,数据
From: https://www.cnblogs.com/tecdat/p/17437368.html

相关文章

  • 随机森林
    训练集给出如下数据: 测试集提供其中的部分列: 要求预测以下列的数据:['Tdewpoint','Visibility','Windspeed','RH_out','Press_mm_hg','RH_9','T_out','RH_4'] 使用随机森林进行预测:importpandasaspdfroms......
  • m随机网络,无标度网络,小世界网络以及NS小世界网络在网络攻击中的性能仿真
    1.算法仿真效果matlab2022a仿真结果如下:       2.算法涉及理论知识概要        1.随机网络(randomnetwork)          2.无标度网络(scale-freenetwork)          3.小世界network          4.NS小世界network......
  • bpmn随机
    1.圆形表示事件,第一个元件表示开始事件,最后一个元件表示结束事件2.圆角矩形表示一个任务(task/activity),带箭头的实现表示顺序流(sequenceFlow)。3.在BPMN中,使用菱形表示网关(gateway),用来控制流程中的流向。4.泳道(swimlane)和执行者(performer),泳道用来指明任务的执行者5.Activi......
  • 【Widnows】Hyper-V随机端口绑定导致冲突解决方案
    ✨WindowsTCP动态端口范围在Windows操作系统中,TCP动态端口范围是指用于临时分配给应用程序的端口号范围。当应用程序需要与其他计算机建立TCP连接时,操作系统会自动分配一个未使用的动态端口号给该应用程序使用。在Windows中,默认的TCP动态端口范围是从49152到65535......
  • P8989 [北大集训 2021] 随机游走
    Link给一张\(n\)个点的有向图,初始对于\(\foralli\in[1,n-1]\),在\(i\)与\(i+1\)之间有一条有向边在其中再加入\(m\)条有向边,允许重边和自环,最大化从\(1\)到\(n\)的期望步数我们可以注意到几条简单的性质为了尽可能最大化期望步数,所有边都会往\(1\)连不可能......
  • shell脚本批量推公钥及修改随机密码
    提示:请提前定义ip.txt中的地址池成功的会输出在newpass.txt中失败的会输出在failip.txxt中#!/bin/bashrpm-qexpect&>/dev/nullif[$?-ne0];thenyum-yinstallexpect&>/dev/nullfi#判断公钥是否存在if[!-f~/.ssh/id_rsa];thenssh-keygen-P""-......
  • C语言--文件随机读写
    文件随机读取fseek(文件指针,偏移量,int文件指针当前位置); //SEEK_SET文件起始位置 //SEEK_END文件结束位置ftell(文件指针); //返回文件指针相对起始位置的偏移量rewind(文件指针); //让文件指针回到起始位置文件结束判定perror("随意");//补充//功能同strerro......
  • Java如何生成随机数?要不要了解一下!
    前言我们在学习Java基础时就知道可以生成随机数,可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍Java随机数。一、Random类介绍在Java中使用Random工具类来生成随机数,该类在java.util包下,在JDK1.0版本就存在了。Random单词本身就是随机、随意、任意的意思......
  • Golang - 获取指定区间范围内随机数
    1.go语言未提供获取指定区间范围内的随机数方法,只有一个参数获取(0,n)的随机数。2.可根据此方法获取指定区间随机数,先随机0到(m-n),再用加 n的方式解决例:[5,10],先生成[0,5],再加5packagemainimport("fmt""math/rand""time")funcmain(){//......
  • 流程控制、循环语句和随机数
    一、流程控制语句流程判断1if[condition];then command commandfi[条件]&&command流程判断2if[condition];then command1else command2fi[条件]&&command1||command2流程判断3if[condition1];then command1结束elif[condition2];......