数据科学家的思维方式不同于工程师、运筹学专业人士、计算机科学家。虽然运筹学涉及很多分析,但这一领域的焦点是具体业务优化层面,如库存管理和质量控制。运筹学涉及国防、经济、工程、军事等领域。它采用马尔可夫模型、蒙特卡洛模拟、排队论、随机过程,以及(由于历史原因)Matlab和Informatica工具。
数据科学会遇到两种基本类型的问题。
1.内部数据科学问题,如损坏的数据、粗心的分析或使用不恰当的技术。内部问题不是针对业务而言,而是针对数据科学社区。因此,解决办法包括训练数据科学家更好地工作,要他们遵循最佳做法。
2.业务应用问题是现实世界中的问题,因此要寻求解决方案,如欺诈检测,或识别一个因素是原因还是结果。这些可能涉及内部或外部(第三方)数据。
情景1:国家对烈性酒销售的垄断结束后,DUI(酒后驾驶)逮捕量减少
最近发表在MyNorthWest报纸上的一篇文章,说到一年前在华盛顿州实施的一条新法律,允许杂货店销售烈性酒类。这里的问题是如何评估和解释在法律生效后,酒后驾车者的逮捕量下降。
作为一个数据科学家,你首先需要制定一个可能解释逮捕量下降的原因列表(通过与客户或老板的讨论)。然后设计一个方案,排除其中的一些原因,或为每个原因附上正确的权重,或简化结论,判定这个问题除非有更多的数据或信息可以使用,否则没法回答。
以下是15个可能原因,以及跟酒后驾车逮捕率报告存在悖论的问题。你当然可以想出更多的理由。
在数据收集过程中有差错(数据是错误的)。
这篇文章的作者,可能与别人有利益冲突、想推销特定的观点,或是出于政治动机。也许只是一个大胆的谎言。
之所以酒后驾驶被逮捕的人数变少,也许是因为警察的人手少了。
在这一时期内,其他犯罪率也有所下降,这是犯罪率总体下降趋势的一部分。若没有这条新法律,酒后驾驶的逮捕量会不会下降更多?
缺乏统计显著性。
存在其他更为严厉的刑罚,阻止了酒后驾车行为。
年纪大的酒客多,因为他们已经肇事死亡,所以逮捕量下降。
总人口增加,但喝酒的人数减少,因为移民率高的是中国人和印度人,但他们中喝酒的人数比例远远低于其他人口群体。
酒后驾车逮捕量统计口径是针对华盛顿居民,还是非居民的?
这一法律没有效果,在此之前,人们也可以从华盛顿的杂货店买酒(除了烈性酒)。
(可能是因为增加了税收),酒价升高,导致酒精消费减少(尽管酒精和烟草消费对价格弹性变化有抵抗力)。
人们现在开车到更近的地方就能买到烈性酒,因此,喝烈性酒驾驶而被逮捕的人变少了。
所有酒后驾驶逮捕量都下降,还是仅仅喝烈性酒的酒后驾驶逮捕量下降才如此?
一般来说,如果人们开车次数减少了,无论对饮酒者还是非饮酒者来说,那么可能的原因就是汽油价格上涨了。
要评估这个新法律的影响,有一个更好的指标是华盛顿居民的酒类(特别是烈性酒)的总消费量。
数据科学家必须选择正确的方法来评估新法律的影响,并想出如何获得评估所需数据的方法。实际上,逮捕量减少的真正原因是,喝烈性酒者可以开车在很短的距离内就能买到烈性酒。对华盛顿州来说,问题在于判断该法律能否减少因酒精消费而产生的社会问题代价(是否会增加酒精销售的税收、裁减州内商店的员工,使酒精相关的犯罪率维持适度水平或完全消失等)。
情景2:数据科学与直觉
在管理层圈子里,许多决定仍然依靠直觉。然而,正如这个例子所示,数据科学和统计分析结果优于直觉,让你不至于凭直觉而形成错误的结论。
双数据点是指几乎相同的观测值。在许多不同类型的数据集中,这种情况经常出现,而非特例。在任何有300多行数据的二维或三维的数据集中,如果数据是定量的,并均匀地分布在一个有界空间中,你应该会看到大比例(大于 15%)的数据点都有一个近邻。
这适用于所有数据集,但这一发现首先是从星系照片里发现的。星系照片里有很多双星,你可能会直觉地认为,有一些内在原因使得星星成对地聚集在一起。但是,如果你知道纯概率,你会发现,即使没有任何外部机制推动,15%的星星也会属于双星系统。
例如,我们可以考虑一个包含500颗星星的星系。计算这些星星构成双星系统的纯概率,结果如下。
至少有60颗(12%)星星属于双星系统的概率为85%。
至少有80颗(16%)星星属于双星系统的概率为18%。
至少有100颗(20%)星星属于双星系统的概率(几乎)为0%。
然而,在现实中,超过80%的星星都属于双星系统。概率统计不支持这个数字;因此,很明显有一些机制使得星星成对聚集。
该问题提供了一个很好的、可以测试你分析直觉的机会。看看图表里的双生观测值,然后目测评估下双生观测值是自然的(随机)还是非自然的(数量太多或太少)。可以写一段代码当作练习(Python、Perl、R代码),进行模拟(包括更复杂的三维情况),检查下理论结果,并比较一下R、Perl、Python的速度差异。
技术讲义
假设,有一张10cm×10cm的夜空图,其有大约n=500个可见的星星(数据点),而双星定义是一颗星星和邻近的星星距离是1mm(或更短)。如果恒星是完美随机分布的,则500颗恒星中,位于双星系统中的星星数量将是73颗(平均而言)。这个数字远远高于大多数人所认为的数字。这一比例可以表示为p,因此p=14.5%,在500颗恒星中,预计位于双星系统中的星星数量为n*p=73。
在这种情况下,可以用Poisson过程的理论来计算该概率。如果500个点分布在一个100mm×100mm的区域(一个放大的夜空图),则Poisson过程的强度L是每平方毫米面积内点的数量,即L=500/(100mm×100mm)=0.05/mm2。
在1 mm距离之内一颗星星至少有一个邻近点的概率p为1-Proba(0个邻近点)=1-exp(-L*Pi*r2),其中r=1mm,Pi=3.14。这里Pi*r2是一个半径为1mm的圆的面积。指数项是一个Poisson过程,在一个给定的集合里(圆、矩形等),点的数目有一个均值为L*Area的Poisson分布。因此p=0.145。
所以是否属于双星,是一个参数p=0.145的伯努利(1/0)变量。V可以表示位于双星系统中的星星数目:V是参数p的n个伯努利变量的总和,因而是参数为n、p的二项式分布,而normal(0,1)分布跟标准化变量Z=(V-np)/SQRT{np(1-p)}的值非常近似。这个事实可以用来计算前面所说的概率。
替代计算:使用蒙特卡洛模拟,而不是使用理论模型,来计算这些概率,也可以得到相同的结果。这将涉及生成100万个模拟图像(二维数据表),并在每个模拟图像里,计算属于双星系统的星星数目。使用现代计算机、良好的随机数生成器和智能算法,这项任务可以在几分钟内自动化进行。
如果你使用朴素的做法,则该模拟过程可能是缓慢的。但计算n个距离,找最近的星星时,计算复杂度可以做得比O(n2)好得多。具体做法是将数据存储在一个间隔为1mm的网格中(即,一个有100´100=10 000个单元格的二维数组)。因此,对于每一颗星星,你只需查看周围的8个像素,来计算不到1mm距离的邻近点的数目。通过使用1万个1比特(代表存在/不存在)存储单元,可以把O(n2)的复杂度降低到O(n)。
请注意,选100万或1万是随意的,实际只需足够大的数字,保证所估计的结果足够稳定即可,数字若再大则不会带来更准确的结果。选择合适的样本和样本大小是一个实验设计问题,并且使用无模型的置信区间有利于这项任务的开展,也保证结果稳健。这种蒙特卡洛模拟方法较受运筹学专业人士的青睐,一些数据科学家、计算机科学家、喜欢无模型统计建模的软件工程师们也较钟爱。然而,在这个案例里,理论模型众所周知,也很简单(即使不是很基础),也能快速而简捷地得到答案。所以,除非你必须花很多时间才能理解它的原理,否则还是建议寻找理论解决方案。
附加说明:在这个例子中,星星显示在二维屏幕上。在现实中,它们存在于三维空间中。从X坐标和Y坐标来看两颗星星可能是邻近的,但在Z轴上它们可能是永久分开的。所以要计算出双星的真实比例期望值,你就得模拟三维空间里的星星(点),投影到矩形内计算出双星的比例。在这种情况下,我不确定该理论模型是否是简单的解决方案,但蒙特卡洛模拟仍然是简单的。在实践中,实际上遥远的恒星不够明亮而不能显示在图片上,所以二维模型确实是对真实的三维问题很好的近似。
此外,在理论模型中,关于星星的位置有一些隐含的独立性的假设(当提到二项式模型时),但这不是实际情况,因为星星周围1mm直径范围内有时会重叠。但这种近似依然不错,并且是保守估计的。而理论上的数字,如果排除重叠,肯定要高于73。
情景3:数据故障将数据变成乱码
在数据导入或导出的过程中,有许多出差错的例子。这通常是架构较差的结果,或者使用了错误的工具,或者盲目依赖工具而不进行数据质量检查的原因。数据科学家如何检测和解决这个问题?
Microsoft Access有时不能正确导入或导出数据类型,使数据库表自动甚至是强迫类型转换,输出文本或CSV文件(或其他格式),结果较差,容易导致许多错误。这种情况发生,是因为环境不够灵活,从而不能进行智能的类型检测并进行类型转换。例如,你是否处理过以下情况,一行日期数据被记录为整数,另一行却被记录为mmddyy格式(月、日、年格式,比如2016年10月5日记为100516)?或者是你不得不处理数据字段值内的逗号,因为这会搞砸你的CSV文件?
我收到过许多数据文件,损坏率达到5%以上。有时两种不同类型的值(广告主关键词与用户查询,或来源域名与广告网络域名)存储在同一字段中。有时字段没有正确对齐。有时看起来制作数据的人不是使用正则表达式的专家,或是总是错误地使用分隔符。有时则是因为软件把事情搞糟了。
有时这些差错有不良的副作用,比如你的数据库里有一个非真实的用户ID,成为所有没有ID的用户的垃圾收集器,导致分析数据时有缺陷。但在其他时候不是个大问题。
以下几个例子是讲混乱的数据、混乱的格式和不完整的数据整合如何导致严重的错误,以及如何解决这些问题。
Wells Fargo(美国富国银行):IBM Tealeaf用户的会话被分解成多个会话,因为每个服务器都有自己的网络日志,而这些日志并没有被正确混合。这种情况下主要是架构设计造成的问题。幸运的是,发现和解决这个问题能帮助我们形成对该类问题的洞察力。
eBay(易贝):数据传输过程中把法语和德语关键词的特殊字符删除了,造成了数据不一致性。通过建立临时的外键查找表,让正确的和错误的拼写对应,从而可以解决数据不一致的问题。
点击欺诈检测:关键词字段有时代表用户查询(如谷歌查询),有时是一个预先指定的关键词类别,这取决于广告网络联盟公司的种类。如果相关公司的关键词是属于关键词类别的,我们会施加一个较大的错误惩罚值,这是因为(出于设计而非欺诈的原因)这种关键词的分布很差。添加一个指定关键词类型的新字段,能够解决该类问题。
作为练习,我希望你多想想这些类型的问题,并回答以下问题。以下问题都是常见的、有趣的工作面试问题。
你如何处理这些问题?
如何自动检测这些差错?该问题是质量保证(QA)问题吗?
在大数据情景下这类问题是变得更糟了吗?检测问题和解决问题,哪个比较困难?
能够容许多少坏数据?能否容许1%的错误?欺诈检测的话能容许的错误甚至更少吗?
解决这些问题,你花费了多长时间?
如何设计智能的类型转换?
情景4:异常空间的回归
这个例子说明了在使用传统技术解决新问题之前,需要改进原有技术,如回归。这些技术有些已经超过了100年,是统计分析领域的主要工具。针对小的数据集,已经有简单的数学方案能解决问题。随着大数据和大规模并行计算能力的出现,情况已经不同。
比如,你想通过逆向工程得到可口可乐的配方。基于许多人的品尝结果(根据实验设计),响应值Y衡量你的配方跟可口可乐真正配方的接近程度。事实上,这非常类似于在临床试验中,通过测试混合的原子或化学基(每个组合产生一个独特的分子)来改善药物效果。而自变量是二进制值,每一个代表一个成分,如盐、水、玉米糖浆等。如果所讨论的成分在配方中是存在的,则该值等于1,否则等于0。这与标准的线性或逻辑回归有很大的差异。
技术讲义
回归系数a_k (k = 1,…,m) 必须满足以下要求。
每个k都是正数(a_k大于或等于0)。
这些系数的总和等于1。
总之,你在单纯形空间进行回归,其中a_k代表混合的比例。这种回归有一个有趣的特性,a_k系数的平方和等于由SUM(a_k)=1定义的m-1面体面积的平方,且a_k大于或等于0。(这是毕达哥拉斯定理的一个泛化。)这有点像一个套索回归、岭回归或逻辑(是logic而不是logistic)回归,但放在贝叶斯框架里,也可以利用马尔可夫蒙特卡洛(MCMC)来解决。
如何解决在一个球面上的回归?例如:
根据鸟的视线,找出加拿大大雁的迁徙飞行路径。
针对一颗在行星上撞击出多个排一起的陨石坑的流星,计算其轨迹和起源。
基于火山的位置探测地质断层(两者几乎是一一对应的,比如在喀斯喀特山脉内,或在大西洋中部的海底)。
答案是通过将球面映射到平面上,通过平面回归来解决问题。
在这个例子中,目的是创造一个竞争产品,口味和可口可乐一样,用不同的名字称呼它,并以更低的价钱销售。如果味道是相同的,但成分是不同的,那么可口可乐制造商若起诉你复制他们的配方是没法胜诉的。我认为,Virgin(维京)几乎克隆出来了这个味道。当然,百事可乐并不相近:味道是那么不同,二者就像苹果和橘子的差别。
最后说回来,有许多不同的方法来解决回归问题(或任何数据科学问题。如果你使用正确的参数,则不同解决方案在效率方面往往是等效的。例如,你可以用纯优化或纯数学解决这个问题。统计学家会认为,使用这种方法不能为回归参数建立置信区间,或没法测试是否有一些参数等于0。作为替代,我自己设计了一个无须统计模型就可以计算置信区间的方法。这个方法被称为分析桥(Analyticbridge)第一定理,将在这本书更多技术化的章节里得到描述。
情景5:分析与诱导在提升销量上有何不同价值
这个例子说明即使是最好的分析,如果你忽略了其他关键的、使业务成功的要素,也不会很有用。总之,对于所有业务问题,分析并不是万能的。
这个情景的背景是提高转化率,如将网站访问者转化为活跃用户,或者是将被动的简报订阅者转化为业务意向(打开简报和点击链接即代表意向)。在此我们讨论简报的转化问题,虽然这个例子可以适用于许多不同的环境。
为了最大限度地提高总的意向数量,你需要使用诱导手段和分析手段。销售量是一个与下列影响因子密切相关的函数。
诱导
分析
产品
价格
竞争
声誉
市场营销
首先,即使是度量“诱导”或“分析”也是很困难的。但是你可以用一个0~10的级别(10表示最好的),诱导值=9代表公司在使用诱导方法上非常努力,而分析值=0代表公司完全忽视分析手段。
在优化简报邮件方面(从而最大限度地提升意向的数量和规模),大多数公司把诱导设置为1,把分析设置为4或5。通常是通过多变量测试、数学分割、用户群定向进行分析的。这种方法来源于营销人员所受的训练——但是,这不是最好的方法。现在,ISP(互联网服务提供商)提供的用户细分,比传统的用户分组技术更关键。未能送达给Gmail用户,比起分组不当送达给不恰当的Gmail用户,后者更糟糕(例如,年轻用户和年老用户虽然收到不同的信息,但是这些信息并不是有针对性发送的)。
另一个关键的错误是在邮件主题上,重复使用相同的关键词,刚开始这样可能有效,但最终会使你的用户厌烦而不想读你的简报(除非你已经找到弥补用户流失的方法,比如说雇用增长极客来帮助你解决问题)。如果你的竞争对手也使用完全相同的关键词,这个问题就更加复杂了。
丰富多样的、非炒作性的关键词对于分析型、高学历、厌恶垃圾邮件的用户来说非常有效果。例如,一个主题行,如Weekly digest, July 29(digest用小写字母d)比25 Fantastic Articles From Top Big Data Gurus(From用大写字母F)的效果更好。当然,后者可能在前两次效果很好,但最终还是无效的。此外,你的简报内容必须与主题行紧密相关,否则你失去用户的速度会比你获得新用户的速度快。
相反地,你可以基于诱导而不是分析手段,即,猜测用户现在喜欢什么内容,而不是根据历史的效果数据来设计内容。它也可以自动化完成,并转化为分析规则——例如,检测一个关键热词奏效的次数,例如“肚皮舞分析”这一有效关键词可以持续多久,等等。过度使用通过分析找到的技巧,最终会使得诱导手段没有存在空间,也会拉低销售。但现在,似乎很多网络营销者忽视了这些规则。诱导比分析提供一个更大的杠杆效应(虽然它们应该混合在一起),特别是长期业务。
情景6:关于隐藏数据
在该情景下,你的数据就像Gruyere奶酪一样。它有很多、很大的孔。有时候,空白的空间占据着比数据本身更大的容积,就像在宇宙中暗物质比可见物质更丰富一样。这个情景不是关于浅层的或稀疏的数据,而是关于你看不到的数据,你甚至不知道它们的存在,但它们比你的数据仓库里的任何东西,都有更好的可操作价值。
以下是“Gruyere数据”的3种情况,以及每一种情况的补救方法。
1丢失的或不完整的数据
这是最容易解决的问题。任何有才华的数据科学家都可以使用现代的、无偏的数据补齐技术,来解决这个问题。大多数分析软件也包括处理丢失数据的机制。
2经过删改的数据
所谓删改,我的意思是从统计学角度看的。下面是一个例子:我们要估计所有至少涉及一次犯罪的枪支比例。我们使用的数据集(枪或犯罪统计)已经被删改了,比如品牌的新枪今天并没有用来杀人而没被统计在内,但可能下个星期就被用来射杀某人。此外,一些罪犯丢弃了他们的枪,在案发后可能追踪不到该枪支。
你如何处理这个问题?任何有才华的数据科学家都能轻松使用正确的统计技术处理这个问题,使用统计分布(通常是指数的)来衡量犯罪时间,并基于删改数据估计其平均值。这样问题就解决了。
3隐藏数据
处理隐藏数据是一个大问题。首先,你甚至不知道它的存在,因为它是看不见的,至少从你的角度来说是看不见的。领域专业知识和统计学知识(更多技术知识的经验法则),会帮助你意识到潜在的隐藏数据。事实上,数据可能根本就不存在,在这种情况下,首先你必须组装数据。
思考这样一个例子:假设Target公司在试图优化它的收入数字。它分析了销售数据,看看与花园相关的物品什么时候销售量最好。该公司总部在明尼苏达州,2月份没有任何关于花园物品的销售数据,任何人提出这样的分析做法可能被当场解雇,或被怀疑是不是吃错药。然而,在加州,2月份Target的竞争对手们的花园物品销售量不错,一直到6月份都没有留给Target什么市场份额。Target不知道原因,错误地认为在加州花园物品这块没钱可赚。
你如何处理该问题?即使Target可能缺乏2月份的花园物品销售数据,但可以查看竞争对手的数据(例如,浏览和分析每天发送的数百万封垃圾邮件),这是正确方向上良好的第一步。但真正的解决方案是雇用一位有远见的数据科学家。有才华的数据科学家利用每个人都能看到的数据;有远见的数据科学家利用没人看到的数据。
情景7:汽油中的铅会导致高犯罪率。真的吗
这种典型的分析和观点可能在受尊敬的新闻媒体上出现过,然而这种分析不足以支持作者的观点。根据Rick Nevin的计量经济学的研究,禁用含铅汽油约20年后,(汽油使用量高的)大城市的犯罪率达到高峰。20年的滞后是婴儿受铅影响到成为20岁罪犯所经历的时间。至少这是一些著名的计量经济学家基于过去大城市历年犯罪率的分析而提出的论点。但这又是一个缺乏适当的实验设计的例子。
那么,如何设计一个更好的研究呢?我们可以得到过去30年间所有特定规模的城市1万人的均衡样本,样本分成两个子集(罪犯和非罪犯),并检查(使用比率)罪犯是否比非罪犯在出生时更容易受铅影响。总之,要跟之前的研究相反,要针对个体而不是城市——也就是看微观层面,而不是宏观层面——并进行经典的假设检验,使用标准抽样和适当的实验程序设计。
或者,如果你真的想研究原有的宏观时间序列(假设数据粒度细到每月),那可以进行Granger因果关系检验,这样会考虑原始时间序列转为白噪声后的所有互相关系的残差(类似于时间序列的频谱分析或相关图分析)。然而,如果你有几千个指标(因此会有几千个时间序列和几百万个相关性),你最终会发现非常高的相关性纯属意外。这被称为大数据的“诅咒”,在第2章中会对此详细描述。
相关性不是因果关系。不要轻易声称是因果关系,除非你能证明它。很多时候,多个相互依赖的因素会对同一问题产生影响。当婴儿潮一代(不太守法的一代)20岁时,也许正是犯罪发生高峰期。这可能是一个更可信的原因。
情景8:波音787(梦幻客机)问题
波音公司的梦幻客机推出几个月后不久,由于其电池相关问题,被FAA(联邦航空局)禁飞。主要的问题是其使用了从未在飞机上使用过的一种新型锂电池。这种强大的电池容易过热和着火,导致短时间内多次紧急着陆。
根本原因是设计电池的供应商缺少良好的实验设计。这是一个质量控制问题,而质量控制在很大程度上依赖于分析。以下的一些提问证明了更好的质量控制和实验设计可以解决电池问题。
这些电池(就像其他很多可以购买到的产品的电池,如汽车或笔记本电脑的电池)难道不能经过深入的质量控制检测,采用健全的统计技术,确保电池次品率或生命周期内产品的失败风险低于可接受的阈值吗?
会不会是质量控制测试没有根据最佳实践进行?
过热模拟能代表现实世界飞机起飞时的情况吗?
“压力”测试电池的时间够不够长?
是不是日本的质量控制标准更低?因为这些电池的设计和生产是在日本进行的。
这些电池的可靠性统计报告是错误的吗?
一种可能的解决方案是使用更好的机制来冷却这种类型的电池,但在飞机上从来没有使用过这种方法,不过,过去手机就因为过热而发生过火灾,所以现在所有手机中都使用冷却手段。与手机或笔记本电脑不同的是,在一架飞机上,因为外界温度远低于冰点,所以很容易冷却(甚至是冷冻)。
情景9:NLP的7个棘手句子
NLP是指自然语言处理。当数据科学家分析非结构化的数据时,如原始(未分类)文本,将会面临这类问题,所以我们在此将对该类问题进行说明。这类分析叫作文本挖掘。
以下7种类型的语言模式,很难用自动化算法进行分析。
“A land of milk and honey”变成“A land of Milken Honey” (这是针对 The Wall Street Journal 20世纪80年代以来的语料训练而形成的算法,该语料里Michael Milken 提到的次数比 milk 多)。
“She threw up her dinner”与“She threw up her hands”对比。
“I ate a tomato with salt”与“I ate a tomato with my mother”或“I ate a tomato with a fork”对比。
以“ing”结尾的单词——例如,“They were entertaining people”。
“He washed and dried the dishes”与“He drank and smoked cigars”对比(在后面的情况下,他没有“喝”香烟)。
“The lamb was ready to eat”与“Was the lamb hungry and wanting some grass?”对比。
具有多重含义的词,如“bay”,可能是一种颜色,或者窗户类型,或者海湾。
在这些例子中,或者在情感分析中,数据科学家试图猜测用户意图,以便正确地解读数据,得到正确的答案或决策。例如,这可能会在以下情况中发生。
在分析谷歌搜索数据时,根据用户查询应该显示哪些相关广告?
对于发布在 Facebook 网页上关于产品或公司的评论,如何分析评估它们是正面的还是负面的?
在分析 Facebook 的帖子时,如何判定一个帖子是不是因为违反了 Facebook 的政策或法律而应该被自动删除?
用户画像(如果可用)指标,或网页和电子邮件内容(特别是如果网页已经分类了),可以帮助解决歧义。
情景10:数据科学家决定着我们所吃的食品
影响美国人吃什么的因素有很多,但最大的因素是食品杂货店的利润率。这解释了为什么我们买不到红醋栗或百香果,但可以买到高能量饮料和富含糖分的食物。当然,这有一个反馈循环:美国人喜欢甜食,所以许多公司生产甜的食品,并且由于大规模生产,所以价格便宜,因此食品杂货店可以有效定价,销售量也好。
这也说明超市可以通过更好的分析来增加收入。这一切的背后都是数据科学,数据科学有助于回答以下问题。
为了客户利益和投资回报率(ROI),应该尝试去卖哪些新产品?红醋栗派?橘子酒?法国风味的樱桃派?野猪肉?紫薯奶酪?红鸡蛋?球状奶酪?(虽然球形不像平行的方形管道形状,从存储的角度来看不是最优的,但这是另一个数据科学问题。)
你如何确定一个新产品的成功或失败?你如何测试一个新产品(实验设计问题)?
哪些产品应该被淘汰?(美国的大多数杂货店将不再出售百香果、百香果汁和正宗的意大利香肠。)
如何度量提升力(收入增长)?你有考虑营销费用和其他费用等因素吗?
如何给一件商品定价?
如何进行交叉销售?
在营销活动中,如何优化投资回报率?
什么时候及在哪里销售哪种产品(根据季节性和地方性趋势)?
如何改进库存预测?
上次我去一家杂货店,购买全脂无糖酸奶。我在商店里找了10分钟,只找到最后的一盒(品牌是Dannon)。我已经准备多花点钱购买这种酸奶(世界上数十亿人消费了几千年的产品),而不是另两种选择:低脂肪,或原味带甜的酸奶。(讽刺的是,这种“低脂肪”版本含有180卡路里,而以前普通的酸奶只含有150卡路里。这是因为低脂肪的产品中有玉米淀粉。)
随着时间的推移,我发现杂货铺供应的产品数量正在减少。很多旧产品被淘汰,引入了一些新产品。显然,这些被淘汰的产品市场较小,如百香果。但是,数据科学能不能更好地帮助食品杂货零售商决定上架的商品,决定何时及在哪里销售,并以多少比例和什么价格销售呢?
答案是肯定的。一个好的解决方案是,借助具有较高预测能力的模型,在预测销售量和(每种产品)收入时,颗粒度更精细,方差更小。在这种情况下,虽然很多人尽量避免有脂酸奶,但在西部和东部沿海地区有很多较瘦的人不介意喝原味酸奶。因此,在西雅图或波士顿可以销售原味酸奶(也许仅仅是几十盒高价的产品,放置在低价低脂品牌旁),但在堪萨斯市则销售不了。
这也为专用杂货店创造了新的机会,如在美国西北部的PCC自然品市场,卖的正是其他超市已经停止出售的产品(只要是畅销的)。总之,是销售能产生利润但其他超市已经不再销售的产品。
这个例子也说明了,对于数据科学家,沟通技巧是很重要的:提出了一种新方法,并说服高管使用这种方法,可以同时优化利润,且给客户带来长远的价值。当然,这样的做法将是一个长期的战略投资,在短期内可能无法满足财务上的数字(公司的首席执行官需要和股东说明)。
情景11:用较好的相关性增加亚马逊的销售量
亚马逊是如何通过重新定义相关性来增加销售量的?答案:通过改进其搜索和相关性引擎,把物品价格当作主要的相关因素。这里所描述的优化和提升投资回报率的做法,适用于所有的数字化产品类别,虽然在本书中我们只针对书籍这个类目进行了讨论。
1搜索引擎
当你在亚马逊网站上的购书栏搜索关键词时,返回的搜索结果页面,有10本推荐的书与你的关键词匹配。这是由搜索引擎执行的。搜索引擎会以某种排序显示图书。该排序是基于价格或关键词相似度的。
2相关性引擎
如果你搜索一个特定的书名,亚马逊还会基于其他用户的购买记录,显示你可能感兴趣的其他的书。这项任务是由相关性引擎执行的。
技术讲义
相关性引擎的工作原理是这样的:如果有m(A,B) 个用户在过去30天内都购买了A书(是你想要购买的书)和B书,而k(A)代表购买A书的用户数,k(B)代表购买B书的用户数,那将A和B之间的关联(从交叉销售的角度,这些书的关联程度)定义为R(A,B)=m(A,B)/SQRT{k(A)*k(B)}。所推荐的书籍排序完全由函数R(A,*)决定。
3更好的排序标准
昂贵的图书将产生很少的销售量,但有巨大的利润。廉价的图书利润较少,但销售数量能弥补每本书的利润。总之,如果显示的书都跟用户的相关性评分相同,那么在#1位置显示的书的定价应使得预期总收益最优。图1-1显示了一个假想的最优图书定价是21美元。
此图基于模拟的数字,假设书售出的机会是图书定价的指数递减函数。也就是:
P(sale | price) = a * exp(-b*price)
其中sale为销售量,price为售价。一个更一般的模型是:
P(sale | price, relevancy score) = a * exp(-b*price) * f(relevancy score)
其中relevency score为相关性评分。
另一种能进一步增加收入的方式是,将用户数据也包含在公式中。一些用户有能力购买一本昂贵的书。对于经常购买更昂贵图书的用户,应该在他们的搜索结果中,显示更昂贵的书籍。
4把所有东西放在一起
当销售产生时,我们怎么知道,是因为把正确定价的书籍显示在了顶部,还是因为完美的相关性?例如,“数据科学”和“大数据”之间的关联性很强,但“数据科学”和“云计算”之间的关联性不是很强。如果你的目标是利润最大化的话,那么是把一本昂贵的“云计算”书推荐给一位对“数据科学”感兴趣的富人,或者给他推荐一本不太贵的与“大数据”相关的书,哪种做法明智?这也取决于你如何定义收入优化:是长期(关联性更重要)或短期,还是短期和长期的混合。正如你所看到的,从价格因素中分离出关联性影响是不容易的。
当关键词或类别的相关性是基于“小数据”的(指专门的用户查询或销售量小的书籍),价格因素特别有效。此外,检测到底是什么带来特定的转化或销售,是一个复杂的问题,这被称为归因。在复杂的情形下,宏观经济(长期,总量的)指标,混合了非常细粒度的实时属性指标,可用于营销组合优化。使用价格弹性模型和效率曲线也可进行价格分析。
另一个有意思的领域是自定义定价,实时地根据客户、客户的购买记录(如果可用)、销售该书的网站(根据网站的统计数据)和书本身来确定书价。一些研究表明,一个固定的价格是最好的,否则精明的用户会尝试多次购买相同的项目,直到他们得到可能最低的价格(虽然他们没有办法知道什么时候价格最低)。然而,向那些不介意购买昂贵图书的用户销售高价图书(根据他们的购买历史),而不是推荐用户已经购买过的书,是改善投资回报率最容易的方法。然而,在一些国家,这种定价策略已经被禁止,在其他一些地方也有争议。特别要注意,如果定制化价格是悄悄执行,没有被用户了解和同意,还采用不道德的数据挖掘的做法并侵犯隐私的话,可能会导致用户对你信任下降,并最终导致客户流失、法律诉讼和收入下降。最终,用户会注意到价格是定制的。
另一种最大限度地提高亚马逊的利润的方法,是按需求印刷书籍,而不是管理库存、每月预测每本书的销量。数据科学还有助于确定仓库位置,以优化交付效果(在速度和成本方面),以及销售税的优化,从而更好地与其他书商竞争。
情景12:检测Facebook上的假档案或假“喜欢”数
某些网站出售假Twitter粉丝(1 000个粉丝10美金)、假的Facebook账号,或甚至假的雅虎邮件账号,用来传播垃圾邮件,提升个人或零售商人气,据说还可以用来促进销售。他们预先告诉买家,这些粉丝是假冒的。他们也在网上卖在Facebook点的“喜欢”数,并且他们声称“喜欢”数是来自“真正的”Facebook用户。
自动检测假“喜欢”数最简单的方法是看相关评论数:如果一个Facebook(或任何)帖子后有5000个“喜欢”数,但没有评论或只有20条评论,并且评论内容都类似于“这是个很棒的帖子”,那就可以确定“喜欢”数和评论是机器人或水军造假的。
数据科学算法就是根据这样的指标,以及社交网络图、变化速度、近期账户创建和发布情况、自然语言处理和僵尸网络/欺诈检测规则来处理问题的。一些造假可以实时检测到,而一些会稍后检测和消除掉,比如通过临时分析(数据分析师执行的反应式分析)或一天结束后的算法自动分析(惯例分析)。
情景13:餐厅的分析
对于小企业,特别是餐馆,分析可以有很多种形式。这些企业需要解决的问题包括定价优化、库存管理、销售预测、获取竞争对手的信息、客户对你的建议(比如需要使用一些自动化软件定期检查客户对餐厅的评论)、空间优化(餐厅最多可以放多少张桌子)、葡萄酒和奶酪的选择、菜单变化的频率、每天和每月的开业和歇业时间、维持的厨师数量(包括决定最佳薪酬)。
可能最容易解决的问题之一是桌子的布局。最佳的解决方案是让2个座位的桌子靠在墙边,4个座位的桌子在房间的中央。这些桌子应该是圆形的还是正方形的,平行于墙壁或形成一个45°角?很容易找到一个数学解决方案,或者至少做一些模拟,找出哪种最有效。正方形的桌子比圆形的好,可以轻松地组合起来,适应更大的派对。假设餐厅总是被预订满并赢利,如果你增加20%的座位容量,那么你的利润也应该增加20%。
CIO之家 www.ciozj.com 公众号:imciow