案例:用Alteryx处理spa store的价格弹性问题
1. 背景
需求价格弹性是指因服务或者商品价格变动体现在需求量方面的响应,具体参考微观经济学弹性部分吧......简单说分析的场景是这样的。有一家spa产品连锁店,有一个面部护理的产品售价98.99,但是他们希望做一个促销活动活动价格可以做到76.99或者87.99,所以需要做一个测试来分析哪一种促销方案更好,其实对零售业来说,更好就是可以带来更大的毛利润了。
2. 实验设计
3、通过数据分析选择控制变量
3.1 数据结构
通过实验设计共获得两个数据输入:一是该公司的交易明细数据,二是实验组列表。SKU=StockKeeping Unit(库存量单位),即库存进出计量的单位,可以是以件,盒,托盘等为单位。SKU这是对于大型连锁超市DC(配送中心)物流管理的一个必要的方法。当下已经被我们引申为产品统一编号的简称,每种产品均对应有唯一的SKU号。
交易数据结构
测试组数据源
3.2 控制变量的处理方式
控制变量为更好的匹配实验组与参照组,本案例中选择周销量(invoice)来表示店铺销售的时间趋势及季节特征,用周面部产品毛利润表示测试目标。最终通过周销量,区域双因素决定实验组与参照组的匹配方式。
Alteryx中提供自动分析时间趋势与季节特征的工具——AB trend,该工具要求至少一年的数据量以及附加六期的评估周期。比如测试周期是14周,周期单元为周的实验,AB trend工具分析需要数据量为52周+6周。
4、Alteryx实战
4.1、功能简介
Alteryx的功能区包含了输入输出,数据准备,关联,文本抽取,转换,空间分析,预测,数据调研,ABtest等。具体包含了哪些功能请自行尝试或者参考//help.alteryx.com/11.8/index.htm
个人体验来说alteryx更加偏重于数据获取,数据处理,到分析方法与建模方法落地的全流程,甚至还融合了许多GIS方面的分析能力。此外alteryx + datarobot也为全自动化建模提供了一条新的途径,如果后期有机会会尝试写一篇alteryx + datarobot的文章。
4.2 数据预处理
4.2.1 导入数据
4.2.2 生成周销量,周毛利润(面部),商户测试属性列表
1)数据选择工具:修改变量格式,选择分析变量
2)数据筛选工具:通过基本逻辑运算符/函数表达式方式筛选数据
3)变量公式工具:创建新变量,对已有变量进行公式运算与编辑。
4)数据汇总:数据聚合与汇总,相当于group by功能,没有having部分。通过这一步,已经获得所有店铺在分析数据范围内共产生了多少个数据考察周期,其中用周表示。下一步则需要将所有表现周期达68的店铺的交易数据筛选出来。这部分需要用到筛选与关联工具。
5)关联工具:通过数据关联获得符合需求的数据。
6)进行两步汇总,产出店铺周销售毛利润(面部护理)分析的中间过程表以及店铺周销量表。
7)数据导出备用
8)接下来需要生成一个关于面部产品销售的商店,地区,周次和周毛利润的汇总表,其中周毛利润将作为评估的目标指标(本次实验目的是为了观测价格变动对利润的影响是否显著)。
此外还将根据另一个input测试组名单生成一个全量店铺编号、区域与测试组策略关系表,而且在这里要注意本测试数据中实验变量有两个不同的值,所以是要同时判断两个策略哪个更好的,且要判断跟对照组相比较是否有显著性提升的实验。
数据处理顺序
重点步骤的参数设置
4.3 配对组别处理
4.3.1 处理组别配对工作流
处理组配对的workflow
1) 导入上一步生成的店铺周销量,店铺列表两个数据。可以将数据从文件夹直接拖入。
2) 对店铺周销量数据进行时间趋势,季节趋势分解。后面会用到这两个趋势因子作为店铺的模式特征,并通过这两个特征,学习店铺间匹配关系。
时间趋势与季节因素抽取
3) 将含趋势特征的店铺数据与含测试信息的店铺数据合并,并根据区域拆分测试组与对照组数据。
数据分组处理
4) 使用AB control工具对实验单元进行模式匹配。
AB control工具
AB control的宏流程
虽然alteryx公司开放了这些宏的代码(因为R的开源属性?),但是我个人不建议大家把这些代码直接copy走自己去包装类似的系统或者平台用于商业目的~
B control的核心算法部分——KNN
5) 将分区域匹配后的数据进行整合并输出存档。
合并数据并将剩余字段整合
PS: AB control工具运行完成后可以生成模型分析报告,只需要在A输出口连接一个browse模块即可查阅这个报告,alteryx每个分析类模块都会生成一份阅读体验非常好的报告,这点是该软件的非常棒的地方。报告形式具体如下:
4.4 实验评估
4.4.1 实验评估的工作流
评估工作流
1) 导入上一步生成了实验组对照组匹配关系数据表,以及第一步生成的店铺面部产品周毛利润表。
2) 由于本次测试的实验变量有两种选择,所以需要对两种选择进行分离后再评估。这里选择test_group=87.99的组别进入T输出,另外76.99的组别进入F输出。
AB analysis工具
4.4.2 评估结果
评估模块运行结束后可以在O输出位置browse最直观的评估结果。
试验评估对比
通过对比结果可以发现,从98.99促销至87.99对于利润增长效果是最显著的,提升度,周盈利性以及T检验显著性都很明显。但是从98.99促销至67.99的价格策略,有可能会带来更大的销量,但是盈利角度考虑无法带来显著提升。本实验结论为选择87.99元方案。
值得一提的是,上图是alteryx直接output的结果,此外工具还提供一个有详细文字描述的report,形式如下:(是不是可以直接截图做ppt了呢~~)
本文所忽略的部分
1. 随机abtest:就是互联网运营分析中常用的方法,个人认为一般互联网公司都有着非常成熟的abtest平台了,而且即使用alteryx分析也是采用t检验去分析,至于AB analysis这个模块能不能做随机abtest,个人感觉是不能,因为该模块采用的是Welch's two samplet-test(好像也叫t’检验),假设是两样本方差不齐,我认为随机abtest采用的是同方差t检验,因为是从同一个总体抽样。
2. 没有多少篇幅讲如何找控制变量,如何分析哪些控制变量最好。甚至没有篇幅说明如何选择实验组~简单说就是不要特征太孤立的Unit就好吧... 感觉这两个问题比较靠感觉把,就不多说了
3. 这不是alteryx的全部功能,这只是一小块而已:选择ABtest作为切入点介绍一个工具?其实也不是,因为这个案例并不能突出alteryx的特点。选择这个案例是因为我也是在跟着官方视频学习,而且案例就是官方视频的案例。这个案例将一个我曾经概念很模棱两可的事情(PS: 工作生涯第一个项目就是做ABtest,但仅此一次),标准化结构化,并从头至尾使用一个工具清晰的刻画出来,我觉得作为一个工具就够了。但是alteryx很多特点,如regex的交互式正则这种,本文没有体现,后续补充吧,因为本来我又不是在写软文。如果有其他好玩的工具我也会尝试的。前提是尽量不写代码~虽然我会,但是我懒啊。
后记一
对于传统行业BA而言,个人认为工作负担的排序:分析结论汇报PPT > 处理rawdata = (寻找分析 or 建模方法) > 前期探索> 设计思路 > (进行统计方法 or 建模方法),实际上面对最大的问题就是,分析结论的可解释性,方法的规范性(对应场景)。之所以这样说,个人体会是因为:
1. 大家大多数都是调包侠吧~(模型都是一条命令跑完)
2. 虽然公司有一些大数据平台但是一般都是在本地跑分析吧~(大数据分析平台比较脆,bug比较多... 很多公司还不给BA们配些好的电脑... 我比较关心内存是否够大)
3. 分析流程上大多数分析师都会比较随性吧,所以很多时候错过了某个环节,要补回来就需要返工....
4. 分析的结果如何向老板解释其价值... 也比较不好说清楚吧(那些统计和机器学习的专有术语)
但是个人感觉像alteryx这类工具,用流程图的方法比较清晰的展示你的思路,并且提供一些应用属性更强的功能模块,如若可以搭配各种分析场景的标准化流程。上面提到的处理rawdata,找方法,定模型(结合datarobot的自动模型选型)一套流程下来,BA们可以更加去关注分析这个工作的两端,既为什么要做么,以及结果的解释(或者复盘)。别人总劝我不要太依赖于工具,可是明明有能提高生产力的东西辅助,为什么不能节约了一些时间而用来去思考其他的问题,或者是去做更多的分析,或者干脆少加班。以上是比较个人主义的一些观点,入行小辈如有哪些看法不正确,希望各位前辈谅解以及给予斧正。如果软件试用期没有过,下一篇我会写用alteryx做kaggle的titanic生存率的问题吧~谢谢阅读。
后记二
随机abtest和配对abtest,个人感觉没有孰优孰劣。abtest应该算是互联网产品的核心了吧,试错迭代,因为总是可以用很短的时间找到一个局部最优解。而按部就班的做一个传统行业的abtest的时间上的付出要大得多,但是的确,配对abtest这样做会让结果变得更加精细。所以永远都是在快速响应和精细化之间做出balance,或者选择完全投靠一方。
附录:
Udacity中Alteryx ABtest培训地址:https://classroom.udacity.com/courses/ud979
Alteryx help主页:https://help.alteryx.com/11.8/index.htm