当前位置 > CPDA数据分析师 > “数”业专攻 > 数据分析相关:业务解释和算法之间融合的思考

数据分析相关:业务解释和算法之间融合的思考

来源:数据分析师 CPDA | 时间:2018-10-11 | 作者:admin

刘程浩  广州CPDA11期学员   经济学硕士

擅长通过数据对业务流程进行分析和优化

 

最近我们在讨论一种多模型的预测组合方法,不过这个话题有些老生常谈。因为至少我就写过这样的话题的文章,当时还是用的“规划求解”法求解得到多模型的相应权重,然后再让多模型的预测值按照这些权重加权平均即可。

 

不过我们再次讨论这个话题的时候,谈到了一种叫做“交叉融合法”的方法论。从百度上收集到的信息,几乎都是比较千篇一律的分成2种不同观点。

 

一种呢就是“各花入各眼”,就是说在未来预测的时候,不要用一种权重组合跑下去,尤其是预测期还比较长的场景。要按照不同的模型所擅长的领域,对未来不同的预测期间安排不同的组合权重,这样得到的预测才会更合理。

 

还有一种呢,画风就很不一样了,很像blending算法。就是说多个模型在训练期的拟合值与实际观测值、多个模型在预测期的预测值可以组成2组向量,然后第一组向量用SVM的算法算出一个超平面,用第二组向量代入到这个超平面从而得到一组预测值。由于超平面本身就是一个线性方程w1×X1+w2×X2+……wn×Xn+b,因此也算是一种线性加权。

 

这2种方法看上去边界很清晰,理解起来也很简单,但是一旦用起来,呵呵……

 

我们实际在应用和选择方法论的时候,为了接地气,很多时候必须要非常了解业务场景。因为不同的业务场景对方法的选择起着很重要的作用。

 

下面,我们就举个例子来说明一下。

 

假设我们是覆盖地级市市区和郊县的一家卖空调的二级经销商,我们也开了自己的电商网店,因此我们的销售量涵盖了线上和线下。我们想预测未来半年的销售量,以便于合理安排上门安装的人力。

 

我们的业务人员很给力,想出了几种预测销量的方法,如下:

 

1、市场空间法

经过这么多年的经营,我们对所覆盖的空调市场空间的发展趋势还是比较了解的,也和市场上的地产开发商,一些大的房产中介比较熟。因为消费者的空调购买一般都是因为新房装修,或者旧房升级换新所致。而我们的市场份额又比较稳定,即便波动也可控,所以用“市场空间×我司的份额”要预测出未来一年或半年的总销量并不难。

 

而且空调又有很明显的季节性,并且这种季节性变化也不大,这么多年来的销售经验我们很容易就能够预判出未来半年哪个月是淡季或旺季。所以如果要将未来半年的销量分解到各个月,还是不太难的。

 

2、渠道卷积法+促销卷积法

我们线下在卖场、专卖店、家装建材的各种渠道有专人负责,每个负责的渠道主管都有自己对当前和未来的销量的判断,所以我们也就相当于能够把这些线下渠道的预测进行卷积,这样一来线下渠道的预测值可以求得。

 

现在的年轻人喜欢上网买买买,搞了这么多年的双十一、双十二、520……促销,确实线上渠道的销售量也摸得到一些规律。我们的线上渠道主要在淘宝、苏宁易购做促销旺季的时候重点参与,但平时一些网上销售确实量却不大。因此线上渠道的销量预测是可以凭经验预测的。

 

然而还有一种动态的“隐形渠道”不能忽略,那就是户外的促销活动!对于新楼盘开盘到装修交楼的这段时间,我们经常要派促销人员到小区、专卖店内或者路边搞活动促销,这样能够快速的引流潜在客户并转换成实际销售,这部分的市场空间还是不小的,能占到我们销量的30-40%。

 

所以,我们的促销小分队每个月都排满了路演、促销、活动的日程线路,并且每个小分队每个区域每场促销,我们都会根据规模、持续的时间、投入的人力和物料来测算销售任务。有了任务压力,所以未来短期1-2个月的促销销量的预测,还是可以通过不同等级的促销场次×相应的单场目标销量做出合理预测的。

 

当然了,根据历史的经验,我们对未来稍微远一些的月份也能做出预测,只不过精度可能差些了。通过渠道的销售预测+促销分析的预测,我们也能得到一种供校验的预测数据。

 

3、时间序列模型法

老板的儿子大学毕业后回家帮忙打理生意,他在学校里学了一些统计模型的方法。从我司的销售管理数据库里面,他调出了历史几年的销量,并按照月度进行展示。

 

然后,他也找到我司的几个业务主管,了解了一些对空调销售的直接影响因素,例如气温变化、降雨量变化、促销力度、楼盘的交易量等等,用这些影响因素做了一个面板数据的统计模型,也能够对未来一段时间的销量做预测。

 

尽管他用到的是比较偏数学的方法,不过从历史上的销量数据的拟合度来看,精度也不会太差,销量波动的趋势把握住了,有些历史月份拟合的还不错。

 

这样,对于这个市场预测而言,我们至少有3种方法可以进行相互的校验和对比了。

 

我们专门找了个时间,趁着年中总结大会的时候,用这3种方法做对下半年的空调销售做了个预测(为了说明问题,数据做了些调整)。如下:

 

微信图片 20181011131409 - 数据分析相关:业务解释和算法之间融合的思考

 

我们假设站在2017年的年尾,来预测2018年的上半年的空调销量。

 

黑色的曲线是实际的销量,和其他颜色的曲线对比,我们看到:

1、用市场空间法推算出来的销量预测,在历史期次的数值要普遍低于实际销量。其实这个与我们掌握的实际空间和份额的精度不太高有关。因为这2个数据只有根据市场的感觉或其他的市面上的信息做推算,但也不算差的很多。

 

2、渠道卷积+促销卷积的预测,和实际值比较贴近。因为业务人员对自己负责市场的了解度比较高,再加上有销售任务的牵引,所以估算的还比较好。

 

3、用时间序列算出来的预测,会受到很多变量的影响,还有很多随机扰动的影响,也包括模型本身的适用问题。不过它的走势体现出了空调销售所特有的季节性,变化趋势也追的比较到位。

 

有了上述的简单解读后,我们接下来会做一个事情,就是考虑如何将3个模型组合在一起,形成一个综合的预测模型,来进行预测。

 

在这里,如果我是一个业务人员,上面的图能够直观给我一个印象,就是方法2也就是“渠道卷积+促销卷积”的拟合效果好,它的权重应该给大些,至于另外两种方法,它们的权重就应该小些。事实是不是如此呢?

 

组合的方法之前我已经写过文章了,就用规划求解法。

 

通过构建一个目标函数“残差平方和最小化”,将各个方法的权重做未知数进行求解,得到各个模型求解的结果如下。

 

市场空间法 渠道卷积+促销卷积 时间序列
权重 42% 49% 9%

 

得到了上述的结果后,我们发现,事实的结果真的和我们业务感知是一致的。

 

我们看到方法2的权重最大,其他方法的权重比它都小。

 

至于市场空间法和时间序列法的权重差异这么大,其实也是可以解释的:因为市场空间法的预测结果偏小,而时间序列发的预测结果往往偏大,那么权重就应该反方向作用于这2个模型,让它们都往自己预测变化偏差相反的方向产生“位移”。

 

我们将各个模型的拟合值和预测值代入进去,看看效果如何

 

微信图片 20181011130942 - 数据分析相关:业务解释和算法之间融合的思考

 

哇塞,看来组合模型的拟合效果还不错,两个不同颜色的折现几乎都重叠在一起了!

 

但不知道泛化结果如何,于是我处理了一下,如果把今年1-6月的实际销量放进来,和综合模拟的预测效果做一下对比,我们看到预测效果还可以。

 

微信图片 20181011131003 - 数据分析相关:业务解释和算法之间融合的思考

 

当然了,我们也看到,18年3月的偏差大了些。

 

但是不要紧,因为对于未来短期3个月而言,我们对很多市场信息把握的比较充分,安排各种促销的节奏也比较有把握,因此,最终的预测时候,我们会用“渠道卷积+促销卷积”作为最主要的方法进行预测。它的权重可以直接调整到80-90%,甚至直接用这种方法做预测。

 

而对于未来比较长远期的预测,因为对渠道和促销的了解和安排都比较弱,更需要多种方法进行交叉比对。所以对于长期的预测而言,还是用之前算出来的权重做一下组合比较稳妥些。

 

也就是说,在这种场景下,我们做预测的安排是这样的

 

微信图片 20181011131009 - 数据分析相关:业务解释和算法之间融合的思考

 

这种方法正是“各花入各眼”!

 

好,现在我们用一下第2种思路,也即是用SVM的算法来试试看。

 

其实,说到SVM的最初目的实际上是用于分类,那么百度里面的关于blending最初的算法融合应用就是推送了。毕竟推送的本质就是分类,将分好类的商品、节目、新闻、电影……推送给目标的客户。

 

那么训练集的数据嘛,自然也是离散的标签和一些数据特征值。

 

那么SVM应用到回归的话,严格意义上说应该是SVR,Support Vector Regression。它就不是分类了,相当于要找一个宽度为2ε的合适的误差带,使得样本点距离这个误差带距离最小(损失最小)。数学上要理解并不算太难,但是结合到业务上的解释来看,就有些挠头了。

 

我们先看看结果(经过多次反复调整,径向基函数为核函数,ε=0.05,C按默认最优)

 

微信图片 20181011131013 - 数据分析相关:业务解释和算法之间融合的思考

 

哇塞,看上去也很棒!

 

两个不同颜色的线条重叠的很好,而且泛化的效果也很好。

 

不过乍一看上去,相比规划求解的方法而言,在2017年10月和2018年3月这2个月来说,偏差大了一些。2017年6月的拟合效果也差了一些。

 

然而实际上,如果拿着这2个结果做汇报用,就是很好看了。

任何一个拿出去结果都比较让人服气。

但是,在汇报的过程中,如果要用业务语言来解释的话,那就不一样了。

对于规划求解而言,模型的权重源自与各个方法对实际情况的偏差,偏差大的权重小,偏差小的全重大,这个相当好理解;

但是对于SVM来说,你说这个超平面

 

微信图片 20181011131016 - 数据分析相关:业务解释和算法之间融合的思考

 

该如何用业务语言来表示呢?特别又用到了核函数以后。

我曾经很努力的想用卖白菜的语言来解释,但发现貌似挺难的,比最小二乘法还难。

因为,这个方法相当于以各个子方法的预测值,作为新的变量空间的特征,相当于人为重新构造出了一个空间,多绕了一个弯!

而多绕一个弯后,就多了一重解释的难度。因为光要解释这个创造出来的空间,就很难讲明白。

我也绞尽脑汁的去想过,还是很难想的出来。最让我觉得浅显的解说词,对于我们同事来说,相当于让我解释宇宙是如何形成的,能说的他们寒毛都竖起来。

例如,我们用SVM做出来的一个融合模型,相当于在指定一个合适的正负偏差幅度,组成一个偏差带,并且想办法找到一个方程,让这个方程就是这个偏差带的中心线,并且尽可能的让所有的历史数据和各个模型作为特征而组合成的样本点,尽可能的落在这个偏差带内。

这解释,前半部分好理解,难就难在后半部分。为啥要和各种方法做出的预测值作为特征(或者自变量)扯上关系,相当于在预测的基础上再为啥还可以做预测了。

读者如果有更好的解释,可以直接留言,我们一起探讨下。

所以,这次的模型融合的讨论实际上也揭示了工具使用和工具解释其实是一种平衡。

好的工具当然经常性的有好的结果,但是这种好的结果却往往很难作解释,难以作解释当然就难免会被人挑战,“是不是碰巧的”,行话叫做“过拟合”。

或许,真应了某位大师曾经说过的那句话:“简单的模型+好的数据≥复杂的模型”