基于机器学习方法对销售预测的研究

很高兴“InfoQ”团队和“百分点大数据学院”牵头举办此次活动。“百分点大数据学院”是由百分点发起的大数据领域专业、开放的分享交流平台,通过定期举办线上线下活动,邀请大数据领域学术专家、技术领袖、企业高层,分享行业、技术、应用等方面最前沿的经验与见解。也非常感谢InfoQ的团队能够提供这么好的一个机会给大家做一次分享。我分享的主题是《基于机器学习方法对销售预测的研究》,从百分点运用机器学习落地服务的角度,介绍机器学习的核心思路和实践。

首先我先自我介绍一下,在加入百分点之前,曾在生物信息公司中负责生物大数据的分析和数据挖掘;在百分点负责在金融领域的征信模块开发、销售预测领域预测模型研究,以及零售类用户画像的研发等工作。

销售预测的基本情况

在开始今天的分享之前,我首先跟大家简单的聊一下,刚刚过去的双十一,大家可能更关心的是双十一的折扣,什么商品打了什么折扣。但是对于天猫而言,他们可能更关心的是双十一当天的销售额是多少,因为知道销售额,他就能提前做一个准备,做到未雨绸缪。

我们这边有三组数据,第一组是在双十一的前十天,网上有一个专家预测,双十一是1180亿,7天以后马云放出豪言,说今年的双十一可能要突破1500亿,去年是920多亿。在双十一的前一天,网上有一个专家预测了今年的双十一是1200亿,最后双十一是1207亿。

这里有两个问题,第一个问题,预测是怎么做出来的?第二个问题是:对于同一件事情它是预测出不同的结果,什么结果是好与坏?第一个问题是怎么预测的问题,第二个问题是预测的效果好与坏的问题。这就引出了我的主题,《机器学习对销售预测的研究》。

机器学习是常用的日常分析的方法,另一方面机器学习在海量数据中挖掘其中的规律效果非常好。

首先,说说,销售预测的现状和痛点。销售只是一个商业问题,要做的是满足用户的需求,同时对后续的运营做主导。而且它的目的并不仅是增加企业的销量,而是能够让企业能够获利,利润增加,所以它是一个商业问题。

对于这样一个商业问题,它在商业环境里面地位是显而易见的,这里面有物流、库存、促销、财务等等四个方面的作用。对于销售预测的痛点,有三方面:①商业环境变化莫测,要做到预测非常准确可能会比较困难;②销售预测并不是一个纯粹的销售预测,它与企业的整体的反应链相关的;③有企业产品比较单一,或者是服务比较单一,想要通过这个销售预测来做这个指导,来指导研发新的产品,或者是通过价格进行动态定价。

在我看来,我觉得核心的痛点就是预测的精确性的问题,也就是第一个痛点。如果第一个痛点很好的解决掉,后面痛点就很好解决。预测的精确性为什么是核心的痛点呢?这里面就要从预测开始讲起,我们对一个事件进行预测是这样一个过程,就是基于历史的情况进行推演出一个规律,通过这个规律来进行推演到未来。它的特点就是我的短期的预测的精度要远远高于长期的预测的精度,即,未来一周的预测要比未来三个月的精度要高。

同时对于预测的话,我们会有几个方面的假设,第一方面是变化模式,其实就是数据里面的规律,它是我们对于这个待预测事物的了解因素。比如说你要去预测明天彩票的号码,我们已经通过对彩票的分析我们知道没有因素是可以影响它的,所以我们是预测不了明天的彩票。这是第一个变化模式。

第二方面,我们要基于数据来做,你的数据量太少,我们这边也做不了,就是一定要达到数据量的级别我们才能做数据挖掘,或者机器学习。

第三方面,我们做机器学习,我们做预测,都会有一个理论框架,在整个理论框架下我们才能做,才能落地。所以这三方面就构成了我们今天要讲的销售预测的体系框架。销售预测体系框架到底是什么呢?

其框架就是销售预测的基本步骤,即确定预测目标、收集和理解数据、建立模型和评价指标。

销售预测的基本步骤 

第一步,确定预测目标:首先要研究一下它的预测的对象,比如我要预测衣服,衣服是冬天的衣服,肯定是有季节性的,预测对象不一样,场景不一样,我们预测的方法也会不一样。

同时,做销售预测一般会有一个预期,我们希望这预测做未来4周的预测,还是未来5天的预测,这是有一个短期的预测和长期的预测。如果是希望太高的话我们可能达不到,希望太小,我们花费了这么多的时间和精力。通常而言,你要预测未来一个月的销量,至少需要两年的数据。

此外,因为需要跟业务进行对接,所以业务目标也很重要。一方面是模型的精确性,即,我们可以给出一个精确度,另一方面是模型的可解释性,即,我们的结果更多是要根据后面的业务部门来进行交接,进行沟通,这时候你就不能解释,好与不好为什么,这要带有可解释性。

综上所需,确定预测目标要分两方面进行权衡,即预测精确性和模型可解释性。

第二步,收集数据或理解数据阶段。而这一步通常包括三个小的子步骤,即:收集数据、数据探索和数据预处理。要尽可能多的获得数据,同时,还要理解数据背后的故事与含义。这里有一个小故事:我当时在做项目的时候,我当时电商的销售预测的时候,我看了一下库存,一般来说你卖出一件商品库存就会减,但是我在数据库里看库存为什么是负值呢?我就和业务部门进行沟通,原来他们把库存的默认值就是负值。这就是对于我们在做预测的时候,对数据背后的含义一定要理解清楚。这是一个数据探索。

而数据探索,其目的是为了更好地发现数据的规律,对应用建模提供一个指导方案。

数据预处理是因为同时收集的原始数据可能非常脏、质量非常差,需要做数据清洗。数据预处理的方法很多,这里主要介绍两个数据预处理方法,缺失值处理和数据转换。缺失值处理是指,发现缺失值的时候,需要理解缺失背后的原因是什么,是数据库的技术问题还是真正业务的原因导致它缺失?如果是后者业务原因导致缺失,我们再来考虑怎么处理缺失值,处理缺失值的方法大体有两类:直接删除法和插补法。直接删除法是将缺失率较高的特征或样本数据进行删除,而插补法是通过已有的数据对缺失值进行填补。而数据变换是指数据的分布与我们假设的数学模型会不一样,这样的数据将会对预测精度会有一定的影响。因此,导入模型之前我们就要把数据进行变换,一般有两种方法:直接对数据进行变换、Box-Cax变换。

第三步是应用建模。销售预测的方法有很多种类,本报告主要是介绍以下三类:第一类就叫主观预测法,即,专家法;第二类是时间序列法,即指数平滑法和自回归移动模型;第三类是机器学习中的回归算法。

销售预测的基本方法

专家法是指通过人的判断,人的经验对于未来的销售做一个预测,它的优点是比较快速,比较简单,就是很快就能够给一个结果。缺点就是我们预测的结果跟你预测的结果都不一样,带有差异性。这个专家法其实很多公司在前期他们都是用专家法来进行预测的。还有我们的客户他们在刚成立的电商,他也是用专家法来做的。

时间序列的方法中最简单是指数平滑法。它的特点是“重近轻远 ”,即通过不同的权重来控制预测的精度。优点是简单、适合于趋势预测;缺点是精确率不高。

ARIMA模型是相对比较复杂一点,其原理是用销量去预测未来销量

无论是指数平滑还是ARIMA模型,其预测对于趋势性较强的数据集效果比较好,但如果遇到趋势不那么强的数据集,则效果不太理想,这时,可以考虑用机器学习的方法进行销售预测。

机器学习的整体流程为:首先,将数据集划分为训练集和测试集,其次,对于训练集做特征筛选,提取有信息量的特征变量,而筛除掉无信息等干扰特征变量,再次,应用算法建立模型,最后,结合测试集对算法模型的输出参数进行优化。

这里主要介绍线性回归模型、决策树(回归树)模型、随机森林、xgboost、神经网络、支持向量回归等六种算法模型。

线性回归模型:假设销量与影响销量的因素是线性关系的,包括误差分布、线性方程和激活函数等。

决策树(回归):其原理是通过if-then规则对特征变量进行逐步决策来构建的模型。此处,可以举一个例子来简单讲解决策树算法的思想是什么?比如说我想给一个妹纸进行颜值评分,分值范围为[0,10]。评分的第一轮判断是五官是否端正?如果为否,打3分;如果为是,则进行第二轮判断,即身材,身材不好则打5分。身材好的话再进入第三轮判断,即是否有钱,有钱就是典型的白富美,就是9分。没钱则为7分。从图中可以看出,其判断决策的过程倒过来看是一个树,红色是它的叶子,叶子对应他的分值,黄色是变量。

随机森林是从决策树演变而成的一个算法,但其思想与决策树相比增加了集成思想。同时,其“随机”具有两层含义,第一层是对特征变量进行随机选择。第二层是,对训练集样本进行随机选择。

xgboost是基于传统的GBDT算法进行了优化的集成算法,它是数据挖掘大赛上面得分非常高的算法。它的思想是这样的,我给一个数据集,我现在有一个问题,就是要看他一家人当中是否会喜欢电子游戏,也是通过构建树的情况进行判断,比如年龄、性别进行判断,它会反映这个家庭成员对应的我们的样本会打一个分,最后男孩给2分,女孩给1分。有时候我们一棵树确定不了,我们就规定多棵树,树1和树2之间并不是独立的,第一棵树的时候对样本做第一次判断,判断的时候有对和错,但是我会更关注于我判断错的那一部分,我在规定第2棵树的时候,我把预测错的更多的考虑一下,就会变成第2棵树,我会过多的关注那些预测错的,再依次的来进行优化。

神经网络是指模拟大脑神经元的工作的非线性模型,神经网络是现在最火的一个深度学习的基础。其包括三个部分:输入层、隐藏层和输出层。输入层在销售预测中则为影响销量变换的各相关因素变量;输出层为销量;中间隐藏层为各相关因素变量到销量之间的一个非线性映射关系,通常为一个函数

神经网络是在反欺诈领域用得比较多,像现在的银行、互联网金融,有的人进行欺骗性的贷款,就用神经网络可以很快的把他发现出来。还有检测病人也可以用到神经网络。

支持向量回归其本质是跟SVM是一样,即寻找能使回归局域更大的margin,其适用于小数据集和高维数据集。

到目前为止,已经简单介绍了六种常用于销售预测的机器学习方法,这些算法也就很好地回答了前面“双十一”销售额例子的第一个问题,即如何进行销售预测?

销售预测效果评估

第四步是评价指标,即预测效果好与坏的问题。对此问题,我想从两个方面跟大家进行分享,即评估方法论和评估的定量指标。第一方面,方法论K折交叉验证。其基本思想为:将总数据集均匀划分为k等份(假设取k=10),第一次对数据集进行划分过程为:第一份作为测试值,验证这个模型,剩下第2到第10个做训练集。第二次划分过程为:把第2个作为测试值,剩下9个作为训练集,然后依次进行训练集和数据集划分,一共会,得到10个模型,选择最小的作为我们最终的模型。

第二方面是评估指标RMSE,值越小,说明预测值与真实值之间的差异就越小,模型效果就越好。

至此,已经把销售预测的四大步骤均已经介绍完毕了,下面就以某电商网站的销售预测案例作为理论实战分享。

项目案例

下面我们进入机器学习的实战部分。我会大家看一下案例在上述理论框架的效果怎么样。

第一步,确定预测目标是为某类商品历史销量排行前20的单个商品进行未来7天的预测。

第二步,收集和理解数据,本案例一种为六大维度72个指标。其实,影响销量变化的因素错中复杂,除了本身历史销量外,还有一些:比如说竞争对手的因素、促销因素、新闻热点因素、口碑因素、随机事件因素、非技术因素等等,但是,对于算法建模而言,我们需要把有数据支持的、并且能够可控的影响销量的相关因素考虑进去,因此,才得出了六大维度72个指标(特征变量)体系。

我们对72个指标(特征变量)进行了数据探索,这里以节假日等级与销量的关系为例,通过对数据探索发现了一条规律,即:节假日等级越高,销量会越好。

第三步为应用建模,我们使用了6个机器学习模型和1个ARIMA模型对该案例进行了预测建模,其结果如上图所示,该结果对比图横坐标是真实销量值,纵坐标为算法模型预测值。不同颜色的线对应不同的算法预测结果拟合线,中间45°虚线为参考线,与参考线越近的算法,其效果越好。从图可以看出xgboost和随机森林两个算法的效果是比较好的。

第四步为评价指标,这里不仅输出RMSE值,而且还将历史销量与未来预测销量进行可视化展示,即如上图所示。

我们对所有的预测算法进行了总结,包括预处理、变量筛选方法、可解释性和精确性等内容。

同时,我们也对基于机器学习对销售预测的研究进行了总结,主要分机器学习、数据、效果和业务四个方面。

第一方面是机器学习层面,即机器学习可能更多的是关注相关关系。做销售预测,我们只用到了跟销量变化有关的因素变量,而不是因果变量。有些客户会问我们:现在我要提高商品销量,请你们算法人员告诉我调哪些参数能够让销量增加?其实这就是一个不合理的需求,因为我是做预测的时候我们用到机器学习的模型,我只是用到像库存、价格、节假日,是跟销量无关系的,但是并不是默认认为库存高就一定会影响销量的增加,库存低就一定影响销量减小。因为后者它是一个因果关系,而我们做机器学习用的是一个相关性的关系。

第二方面是数据的层面,没有数据或数据质量差,效果就会较差,业界流行一句话“垃圾进垃圾出”就是指数据。

第三方面是效果层面。其实,效果是评估一个模型对于好与坏。对于销售预测而言,其效果可能主要体现在是否增加企业的利润。但是这样的效果不太好评论,因为这不仅仅要考虑预测的精度、模型的可解释性等算法效果,还要考虑企业的供应链、整体能力等。不能将机器学习的预测效果作为衡量企业是否增加利润的惟一标准。

第四方面是业务层面,即在机器学习训练之前的数据预处理、训练之中以及训练之后的模型评估都需要一定的业务理论作为指导。尝若业务理论偏弱,则可能会影响整个建模过程,其效果也会受到影响。而且我们是从算法的角度,解决的是算法的问题,但是算法的问题,最终还是要回到我们业务问题,在销售预测上我们要回到怎么样提高业绩。

销售预测终究还是一个商业问题,我们只是从数据层面,从算法层面很难能够很好的把这个商业问题解决掉。我们认为这个效果已经比较好了,其实是比那种大数据的精准营销、精准预测还是有一段的距离要走。这是我们对于用机器学习来做产业落地的一个展望和规划。

我的分享就到这儿。谢谢大家!

答疑环节

提问1:销售预测的销售指标如何定?通过哪些维度预测?预测周期大概多长?

答:销量预测的指标体系的整理主要是通过业务逻辑和待预测商品本身的数据情况而确定的。比如电商类某商品的销量预测,从业务上进行商业分析可以得出,库存因素、价格因素、口碑因素、节假日因素、促销广告因素、新闻热点因素(比如三鹿奶粉被新闻曝光,导致国产奶粉在线上销售受阻)、国家政策因素(主要是指跨境电商,国家税率的高低)等等因素,同时,也需要结合待预测商品本身的数据情况,如果以上的几个业务上分析的因素,只有库存因素和节假日因素,那就只能用这两个因素进行预测了,后期等获取到其他因素的数据再进行补充。

而预测周期的确定需要业务部门结合企业的整体供应链能力以及盘点本身历史数据情况而定,如果企业的数据质量较好,历史数据量又较多(比如超过2年以上的数据),那么预测周期可以设置长一点。但是对于销量预测而言,有一个特点,即短期预测的精度要远高于长期预测的精度,也就是说预测未来一周的精确率要比预测未来三个月要高得多。

提问2:电商类销量预测,有什么特殊的要求和使用的场景?比如样本量,准确性?

答:电商类的销量预测与实体的销量预测的主要区别在于用户体验上,我们称电商销售预测为线上预测,而实体的销量预测,比如衣服的销量预测、药店的销量预测和文具的销量预测等都属于线下预测;而对于线上预测,除了本身的商业环境影响(价格、库存、质量、评价等等)外,还有一部分影响销量的因素是互联网上的用户行为数据,主要包括浏览、点击和收藏等数据,这些用户行为数据主要是通过布码技术活动的(通过将抓取的代码部署在web端或PC端),同时,还需要考虑用户行为数据的滞后性,即某用户收藏了该商品,但是需要经过一定时间才能下单购买,这个时候需要把具有滞后性的变量进行拆分,再加入到机器学习模型中去。

对于样本量的多少,需要以预测的目标而定,预测目标较短,则所需要的训练集就少一些,如果预测目标较长(超过5天),一般则需要1年以上的历史数据。至于准确性,需要结合数据情况而定,准确性的指标通常用RMSE,RMSE越小则准确性越好。

本文作者:唐新春

来源:51CTO

时间: 2024-08-25 22:05:07

基于机器学习方法对销售预测的研究的相关文章

如何用机器学习方法,提升另一半的满意指数?

今天是七夕情人节,我们来探讨一个严肃又甜蜜的重要问题,一个你可能正在关注.或者终要关注的人生课题:如何用机器学习方法,为你生命里的另一半,挑选最适宜的母婴产品,提升幸福满意指数. 背景介绍 生命阶段在消费行为中的重要作用已经在营销和社会学中被研究了几十年.虽然这些研究并没有关注消费者的行为,但是他们研究了各种人和事件的生命周期,这为研究生命阶段对消费者行为的影响提供了坚实的基础.在电子商务中,比起用户的生命阶段转变,更多的研究侧重于根据消费者的历史行为进行商品推荐. 例如,电商公司会挖掘具有相似

《中国人工智能学会通讯》——12.32 基于众包的知识库补全研究

12.32 基于众包的知识库补全研究 近些年来,大规模知识库构建逐渐成为学术界和工业界广泛关注的热点.一批大规模知识库得以构建,并得到了迅猛的发展,这其中包括学术界构建的知识库 YAGO [1] .NELL [2] .DBpedia [3]和 DeepDive [4] ,工业界开发的 Freebase [5] .谷歌公 司 的 Knowledge Graph [6] .Wolfram Alpha [7] , 以及特定领域的知识库 , 如医疗领域的 UMLS [8] .这些知识库包含了数以亿计的真

《中国人工智能学会通讯》——第3章 3.1基于深度学习的网络表示研究进展

第3章 3.1基于深度学习的网络表示研究进展 网络结构在现实世界中无处不在(如航线网络.通信网络.论文引用网络.世界万维网和社交网络等),在此基础之上的应用和研究问题受到了学术界和工业界的广泛关注,这些研究问题包括链接预测[1] .网络节点分类 [2-3] .推荐 [4]和异常检测[5]等.随着计算机信息技术的高速发展和迅速普及,现实世界中的网络结构,尤其是以 Twitter.Facebook和 Weibo 为代表的大规模社交网络进入了亿级节点时代.除网络结构之外,网络节点自身也会产生大量的相关

基于java语音缓存系统的研究与设计,怎么写毕业论文???是否需要做一个系统

问题描述 基于java语音缓存系统的研究与设计,怎么写毕业论文???是否需要做一个系统 这个东西是什么>??是否需要做出一系统,这个论文怎么写,谁帮写好能通过重谢 解决方案 这个应该是不需要做一个系统的,这并不是一个项目或者安卓的app,并不是偏向实践方向的,而是更偏向理论放心吧.个人理解,具体的建议你问问你的导师吧 解决方案二: 如果你什么都不会,那就胡乱抄抄类似的文章吧google总会用吧.http://www.docin.com/p-65599058.html 解决方案三: butaiqi

实时性-基于蓝牙的实时多媒体传输技术研究

问题描述 基于蓝牙的实时多媒体传输技术研究 哥哥姐姐们,各位大神们,这是小妹的毕设题目,有谁给点思路啊,求求各位了 解决方案 http://wenku.baidu.com/link?url=mMs_hAkIgWgoCEBuFI1X9CY7HWEjED4RFx6Beol05nwauMh7UMQKXNFu14_WV9wSNwr5z8MbV5LUegSfBHdny8VsJ7xeUePQr5GVs8DLzC_

《中国人工智能学会通讯》——11.34 基于近似动态规划的优化控制研究及 在电力系统中的应用

11.34 基于近似动态规划的优化控制研究及 在电力系统中的应用 上世纪 50 年代以来,在空间技术发展和数字计算机实用化的推动下,动态系统的优化理论得到了迅速的发展,形成了一个重要的学科分支--最优控制[1-2] .它在空间技术.系统工程.多级工艺设备的优化等领域都有越来越广泛的应用.因而更深入研究最优控制问题,无论在理论上,还是在实践上都具有重大的意义.最优控制理论的三大基石是经典变分理论.极小值原理及动态规划.经典变分理论只能解决控制无约束问题,即容许控制属于开集的一类最优控制问题,而工程

Cloudera正在重建机器学习方法

作者:Derrick Harris 翻译:岳辰       校对: 陈洁(转载请保留)   摘要:Cloudera目前正在进行一个名叫Oryx的开源项目,旨在将机器学习的方法代入Hadoop,而这个早些时候Apache Mahout做过类似的尝试都以失败告终.   当Hadoop软件的卖方Cloudera在去年收购一家总部在伦敦的公司Myrrix时,他们并没有大肆宣传.他们也没有将之后公司在机器学习技术方面的成就带入公众的视线里.而公司的技术以及她的创始人,Sean Owen,却很可能成为一笔非

基于Hadoop平台的分布式ETL研究与实现

基于Hadoop平台的分布式ETL研究与实现 东华大学  何刚 本文作者主要研究和实现的工作如下第一,分布式ETL框架的设计.分析Hadoop平台下的MapReduce工作机制和作业调度,以数据仓库中维度建模的理论为依据,设计了一个包括维度和事实的并行处理和HDFS数据块分配的分布式ETL框架.第二,事实并行处理的研究.从事实表查找代理键和多粒度事实预聚合两个角度着手,提出了在渐变维度表上的多路并行查找算法和在不同粒度上对事实数据进行聚合的算法.实验结果表明,与Hive数据仓库相比,两种算法在并

基于云计算的软件资源服务平台研究

基于云计算的软件资源服务平台研究 东华大学  张玄 论文的主要研究内容和创新点如下:首先,论文介绍了云计算的特点和实现云计算的相关技术,对传统的软件资源相关理论及其管理系统进行了分析,指出了传统软件资源管理系统在软件资源共享使用时存在的不足,提出了基于云计算的资源服务平台框架,并对平台进行了设计和研究.其次,根据软件资源服务平台的特点以及需求,对实现云计算的技术框架,选择基于实现MapReduce并行编程模型的Hadoop云计算系统开源框架,可以降低实现成本,并使得软件资源管理和复用效率大幅提高