深度分析思维和数据科学魔法
很多时候,复杂的模型不足以(或太重)从数据中获得出色的、可持续的见解。深度分析思维可能会被证明更有用,它可以由不一定受过数据科学训练的人来完成,即使是编码经验有限的人也可以。在这里,我们将通过一个案例研究,探讨我们所说的深度分析思维是什么意思,以及它是如何工作的。这些技能通常是通过经验而不是通过培训获得的,而数据科学通才通常拥有它们。
本文的目标读者是数据科学决策者,以及希望在职业生涯的某个阶段成为数据科学经理和决策者的初级专业人士。与深度学习不同,深度思考也更难自动化。那些自动化的深度学习实际上是新的数据科学奇才,他们可以跳出思维定势。本文描述的大部分内容也是数据科学的魔法,不是在标准教科书中或课堂上讲授的。通过阅读本教程,您将学习并能够使用这些数据科学秘密,并可能改变您对数据科学的看法。数据科学就像一座冰山:每个人都知道并且能够看到冰山的一角(回归模型、神经网络、交叉验证、聚类、Python等等,如教科书中所述)。在这里,我将避免术语和复杂的数学公式,同时讨论一些高级概念。
1.案例研究:问题
这里研究的真实数据集是一个时间序列,包含209周的观测值。数据点是某一特定网站在一段时间内每周平均每天的用户数。数据从Google Analytics中提取,总结如下图。一些股市数据也显示了类似的模式。
数据和所有的详细计算都可以在最后一节提供的交互式电子表格中得到。下面是摘录。
商业问题
我们需要回答
- 访问用户数量是否随着时间的推移而增长,
- 是否可以推断未来(以及如何推断)
- 我们看到了怎样的增长(线性增长,或者比线性增长更快)
- 我们是否能够解释这些下跌,并在未来避免它们。
与任何行业一样,增长是由许多因素驱动的,因为每个部门都在尽力为增长做出贡献。也有不利于增长的因素,如市场饱和、市场下滑或竞争。所有的积极和消极力量结合在一起,可以创造一个稳定的、可预测的增长模式,无论是线性的、指数的、季节性的,还是组合的。利用中心极限定理,可以用高斯模型来近似。然而,在实践中,如果想要做出现实的预测并衡量增长的成本,那么更好的做法是识别这些因素,以获得更好的前景。
在深入研究第3部分(包括电子表格和计算)中的原始数据建模注意事项(数据科学魔法)之前,我们首先讨论一下深度分析思维。
2.深度分析思维
任何数据科学家都可以快速运行一个模型,并得出在第1节中讨论的案例中存在线性增长的结论,并据此做出预测。然而,如果我们在许多项目中经常看到的预测工作时间仅为3个月或更短,这可能对业务没有帮助。要维持经济增长,就需要对起作用的相反力量有更深刻的理解,以平衡和促进整体增长。也许这种增长终究不是好事。这就是深度分析思维发挥作用的地方。
当然,首先要考虑的是,这是否是一个关键的业务问题,是来自一位对其业务健康状况(甚至在经济繁荣时期尤其如此)心存疑虑的高管,还是与某个特定项目相关的事后分析。我们假定这是一个关键的战略问题。在实践中,数据科学家知道每个问题的重要性,并相应地用适当的深度思考和优先级来对待它们。我接下来讨论的内容适用于广泛的业务情况。
回答隐藏的问题
对于数据科学家来说,参与与数据相关的业务方面总是有益的(不仅仅是编码或实现机器学习模型)。对于小型企业来说尤其如此,这是数据科学的一个常常被忽视的方面。在大公司中,这涉及与各种团队合作。我们应该问的问题在下面分为三类:业务,数据和相关指标。
商业问题:
- 贵公司是否追求正确的增长方式?它是否在正确的细分市场中成长?增长是否朝着错误的方向发展?我们现在是否会吸引那些转换率低(低ROI)或流失率高(客户生命周期价值低,用户获取成本高)的受众。数据科学家能够很好地访问相关数据并对其进行分析以回答这个问题。
- 高管们是否过于关注糟糕的增长?也就是说,增长是为了向股东展示?有好的增长和坏的增长。在许多企业中,为了给客户、股东和员工留下深刻印象,需要一些糟糕的增长(为了增长而增长),因为竞争对手的增长数据也部分由糟糕的增长推动。这就是为什么你想要表明你的公司和你的竞争对手一样快速发展。相反,良好的增长注重的是长期结果。如今,大多数公司的粒状数据都可以广泛获得,或者可以由专家购买和分析,因此,伪造增长变得越来越困难。无论如何,在分析统计数据时,您必须能够区分好增长和坏增长。
- 什么外部因素影响底线指标?竞争和市场趋势是其中两个。一个竞争对手刚刚获得了新一轮的资金,并将其花在了广告上,这对获得洞察力是非常有价值的。
- 哪些内部因素在起作用并“影响”您的数据?可以是你的公司加大营销力度,网站变得更有效率,一些商业收购或新产品,度量标准的定义在内部发生了变化(对测量数据产生影响)。数据科学家应该了解这些事件,当看到数据趋势但无法解释时,应该主动提出问题。当数据听起来稳定时,它可能是两个源的影响,一个是负的,一个是正的,抵消了。永远要对你的公司,你的竞争对手和整个市场的情况保持好奇。
数据问题:
- 我们是从外部来源收集数据,以验证内部数据吗?在我们的案例中,来自Google Analytics的数据可能是错误的。拥有外部资源将帮助您查明差异并了解各种来源的确切测量结果。像Alexa这样的工具不仅提供了另一种测量来源,还提供了有关竞争的数据点。
- 某些数据是重复,缺失,损坏还是不可用?您是否与IT和BI团队一起收集正确的数据,使其得到适当的总结,通过仪表板或直接从数据库访问数据,并在本地或外部进行适当的归档?您是否维护一个数据日志(它列出了随着时间的推移对数据的所有更改)?
- 您知道在您的数据中引入偏差和错误的最大机制吗?在我们的案例中,谷歌分析对产生人工流量的智能机器人、未被适当跟踪或标记的网站、以及正在发起的新广告活动都很敏感,这将带来地理位置和流量质量的变化。
指标问题:
- 您正在收集最有用的度量标准吗?缺少哪些重要的度量标准,或者哪些度量标准是有用的?我们有足够的粒度吗?您是否关注正确的度量标准?新用户可能比总用户更重要。页面浏览量很容易被第三方操纵,因此不那么可靠。如果用户花大量时间在您的网站上观看视频,那么会话时间可能没有意义。如果大量来自我们的流量来自没有带来任何价值的人口细分市场,那么这些流量就是不好的。如果用户抱怨你的内容质量差,高流量可能不是好事。
- 当没有确切的代理指标时查找代理指标。例如,可以使用邮政编码数据而不是地理位置。创建Web表单时,添加必填字段可能会产生更有用的数据库和更好的定位,但更改也会影响数据并产生后向兼容性问题,因此在分析时间序列时难以进行比较。
- 一个简单的问题,如第1节中讨论的问题,过于笼统。您必须分析各个部分的增长情况,有时可能会发现需要收缩而不是增长的部分。例如,接受信用卡交易的网站(以英文撰写)可能不适合不存在信用卡的国家,或者因为您的内容是英文而非本地语言。
- 假设数据随着时间的推移是一致的,您是否应该使用更长的时间窗口(如果可用)来获得更好的图像?还是每月而不是每周的数据?这种分析应该多久做一次?如果操作足够频繁,是否可以实现自动化?它应该包括在仪表板报告中吗?应该使用哪些图表以可视化的方式向涉众传达见解,并使其产生最大的影响和价值?
在下一节中,我们将重点放在建模方面,提供有关如何更好地分析案例研究中讨论的数据类型的不同观点。
3.数据科学魔法
我们关注第1节中提出的问题和数据,为回归建模提供更好的临时替代方案。
即使没有进行任何分析,受过训练的眼睛也会在时间序列中识别出生长的线性趋势。即使用肉眼,你也可以进一步细化模型,看到三种不同的模式:一开始是平稳增长,然后是平缓的高原,最后增长变得相当陡峭。大幅下跌是由假日造成的。在这一点上,人们会认为一个混合的分段模型,包括线性增长和超线性增长,很好地代表了这种情况。得出这个结论只需要不到5秒钟。
将时间序列表示为混合随机过程的想法 - 根据时间段的线性和指数模型的混合 - 联想到混合模型。在本节中,我们考虑一个简单的参数模型。但是这里讨论的技术不是传统的模型拟合,而是基于模拟,应该对工程和运筹学专业人员有吸引力。它的优点是易于理解但又强大。
这个想法如下,在下面的插图中将更加清楚:
通用算法
- 模拟由少量易于理解的参数控制的随机过程的100个实现(也称为实例),每个实现具有与原始数据集中相同的209个数据点,具有与观察数据中相同的起始值和结束值(或相同的均值和方差。)参数设置为固定值。
- 计算一些感兴趣的业务量的估计值(在100次模拟中的平均值),例如用户增加的周数,两次增加之间的平均周差,平均倾角深度、宽度或倾角数(与峰值相同)、自相关等。这些量称为指标。
- 计算在观察到的时间序列上计算的指标值与在模拟上估计的指标值之间的误差。
- 重复一组不同的参数,直到你得到足够好的拟合。
这里没有研究的潜在改进是考虑随时间变化的参数,就好像它们是贝叶斯框架中的先驱一样。基于每个参数集使用的100个模拟,也很容易为指标建立置信区间。这对于更大的数据集来说是有意义的,即使不是统计专家也可以做到(软件工程师可以做到这一点)。
三种模型
我测试了以下模型(随机过程),在避免过拟合的同时,找到了与数据的合适拟合。因此,这里使用的模型几乎没有直观的参数。在所有情况下,对模型进行标准化,以提供与观察到的时间序列相关的期望均值和方差。下面描述的模型是标准化之前的基本模型。
模型#1:
这是一个具有不等概率的随机游走,也称为马尔可夫链。如果我们将第t周的平均每日用户表示为X(t),则模型定义如下:X(t+1) = X(t) - 1,概率为p, X(t) = X(t) +1,概率为1 - p。参数p必须在0到0.5之间。此外,它必须严格地高于0来解释下跌,并严格低于0.5,否则随着时间的推移将没有增长和没有下降(平均)。注意,与纯随机游走(对应于p = 0.5)不同,该马尔可夫链模型产生高度自相关的偏差X(t)。这很好,因为由于增长,观察到的每周数字也是高度自相关的。这很好,因为由于增长,观察到的每周数据也高度自相关。在p = 0.4附近的参数值产生数据中发现的lag-1自相关。
模型#2:
该模型是一个基本的自回归(AR)过程,定义为X(t +1)= qX(t)+(1 - q)X(t -1)+ D(t),参数q介于0和1之间。d(t)是独立的随机变量。它还提供了x(t)序列中类似的lag-1自相关,但现在序列y(t)=x(t+1)-x(t)也显示了lag-1自相关。事实上,在数据中,也有一个在y(t)序列中的lag-1自相关。在q=0.8和p=0.4之间的参数值产生了自相关。注意,对于马尔可夫链(我们的第一个模型),自相关(在y(t)序列中)将为零。所以AR过程是一个更好的模型。一个更好的模型是一个有三个参数的AR过程。
模型#3:
之前的两个模型只能产生线性增长趋势。为了引入非线性趋势,我们引入了一个新模型,它是AR过程的简单转换。它被定义为Z(t)= exp(r X(t)),其中{ X(t)}是AR过程。除了参数p和 q之外,它还有一个额外的参数r。请注意,当r接近于零时,它几乎表现为AR过程(标准化之后),至少在短期内如此。
结果
下图为原始数据(左上),实现了p = 0.4的马尔可夫链(右上),一个AR过程的实现,p =0.4, q = 0.6(左下),一个指数过程的实现,p =0.4, q = 0.6, r = 0.062。我们所说的一种实现,指的是算法所需的100个模拟中的任意一个。
下图显示了相同的图表,但具有相同过程的另一个实现(即另一个模拟),具有相同的参数值。注意,下降和其他模式不会出现在相同的相同的顺序或同时出现,但下降的强度、长度、总体增长和自相关结构与第一张图片中的相似,特别是如果你从209周延长时间窗几百几周,模拟:他们是在相同的置信区间。如果您尝试多次模拟并每次计算这些统计数据,您就会清楚地知道这些置信区间是什么。
总的来说 - 当你看到100个模拟,而不仅仅是两个 - 具有较小r值的指数模型,提供前209周的最佳拟合,至少在短期内几乎呈线性增长。但是,如前所述,分段模型最好。AR过程虽然擅长表示一些自相关,但似乎过于崎岖不平,下降不够深; 3参数AR过程可以解决此问题。最后,应对测试数据进行模型校准,并在控制数据上测量模型性能。由于数据集较小,我们在此处未执行此交叉验证步骤。使用小数据集进行此操作的一种方法是使用奇数周进行测试,甚至使用偶数周进行对照。这不是一个好方法,因为我们会错过建模过程中每周特殊的自相关。
下载电子表格,包括原始数据,计算和图表(http://www.kankanyun.com/data/DSCgrowth3.xlsx)。
最后
马尔可夫链过程只能产生线性增长。这个事实可能不太为人所知,但如果你观察布朗运动(这些过程的时间连续版本),就会发现期望和方差随时间的变化得到了很好的研究,而且非常特殊,因此它只能对很小范围的时间序列建模。在本文中,我们使用指数变换来克服这个障碍。
此外,长期增长通常是不可持续的,并可能产生最终破裂的泡沫——你的模型可能无法模拟。减轻这种影响的一种方法是使用增长受限的模型,在这种模型中,其中增长只能持续到一定程度,并且受到某些阈值的限制。
最后,在集成过程中进行模型拟合通常更容易。集成过程只是原始过程的累积版本,易于计算。在累积过程中测量的数据/模型拟合几乎是完美的,参见下图,表示与前一小节中执行的某些模拟相关的累积过程。
在上面的图表中,这条曲线非常接近于一个二次多项式。它的导数提供了与我们的数据相关的线性增长趋势。这个概念很简单:
- 使用累积而不是原始数据
- 对累积数据执行模型拟合
- 附属于累积过程的函数(最佳拟合)的导数与原始数据非常吻合。
累积函数用作数据的 low-pass filter,消除一些噪声和离群值。
下面是另一张类似于前面展示的图片,但是参数值不同。它表明,尽管使用了基本模型,我们仍然能够适应大量的增长模式。
下图是与上图中右下角图相关的累积函数:它显示了它的平滑程度,尽管模拟过程具有混乱的特性。
在其他一些模拟中,图表呈现出类似Dirac分布的峰值,这对物理学家和信号处理专业人员来说非常熟悉。