原文链接: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、随机森林销售的时间序列预测相关推荐

  1. 基于Python的随机森林(RF)回归与多种模型超参数自动优化方法

      本文详细介绍基于Python的随机森林(Random Forest)回归算法代码与模型超参数(包括决策树个数与最大深度.最小分离样本数.最小叶子节点样本数.最大分离特征数等等)自动优化代码.    ...

  2. python数据项目分析实战技法_《Python数据分析与机器学习实战-唐宇迪》读书笔记第9章--随机森林项目实战——气温预测(1/2)...

    第9章--随机森林项目实战--气温预测(1/2) 第8章已经讲解过随机森林的基本原理,本章将从实战的角度出发,借助Python工具包完成气温预测任务,其中涉及多个模块,主要包含随机森林建模.特征选择. ...

  3. 基于java的随机森林算法_基于Spark实现随机森林代码

    本文实例为大家分享了基于Spark实现随机森林的具体代码,供大家参考,具体内容如下 public class RandomForestClassficationTest extends TestCas ...

  4. 大数据实时处理-基于Spark的大数据实时处理及应用技术培训

    随着互联网.移动互联网和物联网的发展,我们已经切实地迎来了一个大数据 的时代.大 数据是指无法在一定时间内用常规软件工具对其内容进行抓取.管理和处理的数据集合,对大数据的分析已经成为一个非常重要且紧迫 ...

  5. R语言CART决策树、随机森林、chaid树预测母婴电商平台用户寿命、流失可视化

    全文链接:http://tecdat.cn/?p=31644 借着二胎政策的开放与家庭消费升级的东风,母婴市场迎来了生机盎然的春天,尤其是母婴电商行业,近年来发展迅猛(点击文末"阅读原文&q ...

  6. python天气数据分析论文_《Python数据分析与机器学习实战-唐宇迪》读书笔记第9章--随机森林项目实战——气温预测(2/2)...

    第9章--随机森林项目实战--气温预测(2/2) 第8章已经讲解过随机森林的基本原理,本章将从实战的角度出发,借助Python工具包完成气温预测任务,其中涉及多个模块,主要包含随机森林建模.特征选择. ...

  7. 如何评估随机森林模型以及重要预测变量的显著性

    如何评估随机森林模型以及重要预测变量的显著性 说到随机森林(random forest,RF),想必很多同学都不陌生了,毕竟这些机器学习方法目前非常流(fàn)行(làn)--白鱼同学也曾分别分享过& ...

  8. 数据分享|SAS与eviews用ARIMA模型对我国大豆产量时间序列预测、稳定性、白噪声检验可视化...

    全文链接:http://tecdat.cn/?p=31480 我国以前一直以来都是世界上大豆生产的第一大国.但由于各国的日益强大,导致我国豆种植面积和产量持续缩减.因此,预测我国的大豆产量对中国未来的 ...

  9. 基于GM(0,N)的时间序列预测R实现

    基于GM(0,N)的时间序列预测R实现 本人新手数据分析师一枚,最近由于工作原因,需要使用灰色预测GM(0,N)模型进行预测分析,但是在网上搜基本没有搜到相关的R代码,只能自己根据灰色预测GM(0,N ...

  10. 基于python的随机森林回归实现_从零实现回归随机森林

    一.前言 回归随机森林作为一种机器学习和数据分析领域常用且有效的算法,对其原理和代码实现过程的掌握是非常有必要的.为此,本文将着重介绍从零开始实现回归随机森林的过程,对于随机森林和决策树的相关理论原理 ...

最新文章

  1. java面向对象特征及阐述,Java面向对象四个特征
  2. PHP利用反射根据类名反向寻找类所在文件
  3. 结对项目——电梯调度算法的实现和测试
  4. linux c之main(int argc, char *argv[], char *envp[])参数意义
  5. 如何删除Smartphone手机与Office同步后的重复项,如联系人、日程等。Keyword:office,Outlook,删除,重复项目...
  6. 描述文件安装失败无法连接到服务器_打开steam为什么提示无法连接至steam网络?...
  7. java调试报告_java,生成测试报告.docx
  8. java解压jar包的方法_Java 打包成jar包 和 解压jar包
  9. 公众号----微信公众号后台设置
  10. 段码液晶屏实现原理和需要注意的事项
  11. IT-RS-OSPF-V-link_Looped
  12. 时序逻辑电路的设计(一) -- 模10的计数器电路(附Multisim)
  13. nginx容器通过docker内置DNS实现动态负载
  14. 视频教程-大数据电视收视率实战项目教程(企业级案例)-Spark
  15. 气质由内而外 都市白领3个饮食排毒法则
  16. 对于STM32的ADC芯片的思考
  17. php的left join,Left Join
  18. 互联网服务端技术——如何学(中)
  19. python熊猫弹幕_Pandas+Matplotlib:视频弹幕统计分析
  20. crash 和 anr的区别

热门文章

  1. 跨应用的访问 contentprovider
  2. 重装XP后无法启动LINUX的解决方案
  3. .net2.0中对config文件的操作方法总结
  4. MySQL基础知识及常见面试题整理
  5. java深拷贝和浅拷贝
  6. PHP学习思维导图--小树好久没长大了,给它加点枝叶
  7. [java多线程]高并发List与Map
  8. Timeline Storyteller 现已加入自定义图表库
  9. 79.iOS 设备的UI规范和iOS各控件默认高度
  10. 字符串与数字双向转换