【大数据部落】基于ARIMA、SVM、随机森林销售的时间序列预测
原文链接:http://tecdat.cn/?p=1130
原文出处:拓端数据部落公众号
如今DT(数据技术)时代,数据变得越来越重要,其核心应用“预测”也成为互联网行业以及产业变革的重要力量。对于零售行业来说,预测几乎是商业智能(BI)研究的终极问题,单纯从机器学习的角度来说,做到精准预测很容易,但是结合业务提高企业利润却很难。预测精确性是核心痛点。
视频:机器学习助推精准销量预测 part1
业务挑战
扎对,将产品粗略分为:基本款和时装。对于基本款,每年都没什么大变化,国际流行的影响也不大,那么可以进行长计划生产。对于时装,决定潮流走向的决策权不在某个区域,一个地方的买手们也没有成长到可以准确预判国际流行趋势,所以需要结合不同区域的各种因素,进行预测。对应的,在新货构成中,销量预测策略为:基本款计划生产,时尚款机动调整。
解决方案
任务/目标
根据服装零售业务营销要求,运用多种数据源分析实现精准销量预测。
数据源准备
沙子进来沙子出,金子进来金子出。无数据或数据质量低,会影响模型预测效果。在建立的一个合理的模型之前,对数据要进行收集,搜集除已有销量数据之外的额外信息(比如天气,地点,节假日信息等),再在搜集的数据基础上进行预处理。
有了数据,但是有一部分特征是算法不能直接处理的,还有一部分数据是算法不能直接利用的。
特征转换
把不能处理的特征做一些转换,处理成算法容易处理的干净特征举例如下:
销售日期。就时间属性本身来说,对模型来说不具有任何意义,需要把日期转变成到年份,月份,日,周伪变量。
产品特征。从产品信息表里面可以得到款式,颜色,质地以及这款产品是否是限量版等。然而并没有这些变量。这就需要我们从产品名字抽取这款产品的上述特征。
以上例举的只是部分特征。
构造
以上说明了如何抽取相关特征,我们大致有如下训练样本(只列举部分特征)。
划分训练集和测试集
考虑到最终模型会预测将来的某时间段的销量,为了更真实的测试模型效果,以时间来切分训练集和测试集。具体做法如下:假设我们有2014-02-01~2017-06- 17的销量相关数据。以2014-02-01~2016-03-19的销量数据作为训练,2016-03-20~2017-06-17的数据作为测试。
建模
ARIMA,一般应用在股票和电商销量领域
ARIMA模型是指将非平稳时间序列转化为平稳时间序列,然后将结果变量做自回归(AR)和自平移(MA)。
随机森林
用随机的方式建立一个森林,森林由很多决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
支持向量回归(SVR)
SVR最本质与SVM类似,都有一个缘,只不过SVM的保证金是把两种类型分开,而SVR的保证金是指里面的数据会不会对回归有帮助。
模型优化
1.上线之前的优化:特征提取,样本抽样,参数调参。
2.上线之后的迭代,根据实际的A / B测试和业务人员的建议改进模型
从上图可以看出,在此案例中,支持向量机和随机森林算法模型的预测误差最小,运用3种方法预测某商品的销量,其可视化图形如下:
可以看出,销量的预测值的趋势已经基本与真实销量趋势保持一致,但是在预测期较长的区间段,其预测值之间的差别较大。
评估效果不能只看销量,要综合考虑,需要参考业务对接,预测精度,模型可解释性和产业链整体能力等因素综合考虑;不能简单作为企业利润增加的唯一标准我们的经验是,预测结果仅作为参考一个权重值,还需要专家意见,按照一定的权重来计算。
展望
除了以上列举的一些方法,我们已经在尝试更复杂的销售预测模型,如HMM,深度学习(Long Short-Term Memory网络,卷积神经网络(CNN))等;同时需要考虑到模型的可解释性,可落地性和可扩展性,避免“黑箱”预测 ;还在尝试采用混合的机器学习模型,比如GLM + SVR,ARIMA + NNET等。
销售预测几乎是商业智能研究的终极问题,即便通过机器学习算法模型能够提高测试集的预测精度,但是对于未来数据集的预测,想做到精准预测以使企业利润最大化,还需要考虑机器学习模型之外的企业本身因素。比如,企业的整体供应链能力等,如何将企业因素加入到机器学习模型之中,是未来预销售预测的一个难点与方向。因此,要想解决销售预测终极问题还有一段路要走。
相关文章:
使用R语言进行时间序列(arima,指数平滑)分析
在Python中使用LSTM和PyTorch进行时间序列预测
R语言k-Shape时间序列聚类方法对股票价格时间序列聚类
用广义加性模型GAM进行时间序列分析
R语言时间序列和ARIMA模型预测拖拉机销售的制造案例
在r语言中使用GAM(广义相加模型)进行电力负荷时间
R语言从经济时间序列中用HP滤波器,小波滤波和经验..
R语言COPULA和金融时间序列案例
用Prophet在Python中进行时间序列预测
R语言估计时变VAR模型时间序列的实证研究分析案例
Python中利用长短期记忆模型LSTM进行时间序列预测分析
Jenkins),SARIMA和ARIMAX模型用于预测时间序列数据
R语言对用电负荷时间序列数据进行K-medoids聚类建模和...
R语言多元Copula GARCH 模型时间序列预测
【大数据部落】基于ARIMA、SVM、随机森林销售的时间序列预测相关推荐
- 基于Python的随机森林(RF)回归与多种模型超参数自动优化方法
本文详细介绍基于Python的随机森林(Random Forest)回归算法代码与模型超参数(包括决策树个数与最大深度.最小分离样本数.最小叶子节点样本数.最大分离特征数等等)自动优化代码. ...
- python数据项目分析实战技法_《Python数据分析与机器学习实战-唐宇迪》读书笔记第9章--随机森林项目实战——气温预测(1/2)...
第9章--随机森林项目实战--气温预测(1/2) 第8章已经讲解过随机森林的基本原理,本章将从实战的角度出发,借助Python工具包完成气温预测任务,其中涉及多个模块,主要包含随机森林建模.特征选择. ...
- 基于java的随机森林算法_基于Spark实现随机森林代码
本文实例为大家分享了基于Spark实现随机森林的具体代码,供大家参考,具体内容如下 public class RandomForestClassficationTest extends TestCas ...
- 大数据实时处理-基于Spark的大数据实时处理及应用技术培训
随着互联网.移动互联网和物联网的发展,我们已经切实地迎来了一个大数据 的时代.大 数据是指无法在一定时间内用常规软件工具对其内容进行抓取.管理和处理的数据集合,对大数据的分析已经成为一个非常重要且紧迫 ...
- R语言CART决策树、随机森林、chaid树预测母婴电商平台用户寿命、流失可视化
全文链接:http://tecdat.cn/?p=31644 借着二胎政策的开放与家庭消费升级的东风,母婴市场迎来了生机盎然的春天,尤其是母婴电商行业,近年来发展迅猛(点击文末"阅读原文&q ...
- python天气数据分析论文_《Python数据分析与机器学习实战-唐宇迪》读书笔记第9章--随机森林项目实战——气温预测(2/2)...
第9章--随机森林项目实战--气温预测(2/2) 第8章已经讲解过随机森林的基本原理,本章将从实战的角度出发,借助Python工具包完成气温预测任务,其中涉及多个模块,主要包含随机森林建模.特征选择. ...
- 如何评估随机森林模型以及重要预测变量的显著性
如何评估随机森林模型以及重要预测变量的显著性 说到随机森林(random forest,RF),想必很多同学都不陌生了,毕竟这些机器学习方法目前非常流(fàn)行(làn)--白鱼同学也曾分别分享过& ...
- 数据分享|SAS与eviews用ARIMA模型对我国大豆产量时间序列预测、稳定性、白噪声检验可视化...
全文链接:http://tecdat.cn/?p=31480 我国以前一直以来都是世界上大豆生产的第一大国.但由于各国的日益强大,导致我国豆种植面积和产量持续缩减.因此,预测我国的大豆产量对中国未来的 ...
- 基于GM(0,N)的时间序列预测R实现
基于GM(0,N)的时间序列预测R实现 本人新手数据分析师一枚,最近由于工作原因,需要使用灰色预测GM(0,N)模型进行预测分析,但是在网上搜基本没有搜到相关的R代码,只能自己根据灰色预测GM(0,N ...
- 基于python的随机森林回归实现_从零实现回归随机森林
一.前言 回归随机森林作为一种机器学习和数据分析领域常用且有效的算法,对其原理和代码实现过程的掌握是非常有必要的.为此,本文将着重介绍从零开始实现回归随机森林的过程,对于随机森林和决策树的相关理论原理 ...
最新文章
- java面向对象特征及阐述,Java面向对象四个特征
- PHP利用反射根据类名反向寻找类所在文件
- 结对项目——电梯调度算法的实现和测试
- linux c之main(int argc, char *argv[], char *envp[])参数意义
- 如何删除Smartphone手机与Office同步后的重复项,如联系人、日程等。Keyword:office,Outlook,删除,重复项目...
- 描述文件安装失败无法连接到服务器_打开steam为什么提示无法连接至steam网络?...
- java调试报告_java,生成测试报告.docx
- java解压jar包的方法_Java 打包成jar包 和 解压jar包
- 公众号----微信公众号后台设置
- 段码液晶屏实现原理和需要注意的事项
- IT-RS-OSPF-V-link_Looped
- 时序逻辑电路的设计(一) -- 模10的计数器电路(附Multisim)
- nginx容器通过docker内置DNS实现动态负载
- 视频教程-大数据电视收视率实战项目教程(企业级案例)-Spark
- 气质由内而外 都市白领3个饮食排毒法则
- 对于STM32的ADC芯片的思考
- php的left join,Left Join
- 互联网服务端技术——如何学(中)
- python熊猫弹幕_Pandas+Matplotlib:视频弹幕统计分析
- crash 和 anr的区别