前几天,我读了一篇关于Uber希望如何赋予其每位员工数据科学力量的文章。以下引文特别引人注意:
- “预测平台的宏伟愿景是只需按一下按钮即可提供预测,完全不需要预测专家。用户唯一需要的输入是历史数据,无论是CSV文件还是查询链接的形式,以及预测范围。您想预测多远?其他一切都完全在引擎盖下完成。” — Uber 数据科学总监Franziska Bell
这让我思考,预测真的可以商业化到这种程度吗?微软,谷歌和亚马逊也一直在努力使他们的机器学习解决方案更加“drag and drop”他们各自的云客户,因此Uber绝对不是唯一的雄心壮志。
贝尔的话引出了两个截然不同的结论-要么Uber的预测平台非常出色,要么他们对预测未来的挑战过于随意。为了好玩,让我们尝试各种可能性:
Uber的预测平台非常出色-只需按一下按钮,Uber就能做些什么来产生预测,而唯一需要输入的是目标变量的历史数据?他们必须能够:
- 拥有数据并知道是否要包含任何和所有相关功能。您需要外生变量来构建模型,尤其是当您尝试预测复杂的事物时。 Uber不仅必须在生成预测之前随时提供所有可用数据,还必须知道要包括哪些功能以及如何转换每个功能。
- 它还必须能够比较和对比各种预测算法(线性回归与随机森林与神经网络)。并能够为每种特定算法选择最优超参数。
- 预测还必须进行回测(以减轻从模型中取出模型时发生爆炸的风险),Uber需要能够与用户沟通模型所基于的假设以及在何种条件下可能会崩溃。
达成这些要付出很多,只要他们能做到,就对他们表示敬意。
但是,如果Uber过于随意,该怎么办–相反的观点是,该预测平台只是ARIMA model 或 LSTM,可以根据对目标的以往观察来预测未来。对于某些应用程序,这是可以的。
但是仅使用目标变量的滞后作为特征意味着可能会错过关键的外生关系,这将使模型严重不适合并易于表现不佳。
对其保留一定态度
我个人对Uber的“预测即服务”目标持怀疑态度。我可以理解,Uber是否允许其员工使用预先构建的模型“按需”预测某些关键业务指标,这些模型已经过数据科学团队的广泛研究和完善。但是我不认为这就是弗朗兹卡·贝尔(Franziska Bell)的意思。看来她的目标是能够通过按一下按钮就几乎可以预测所有事物。
这是一个非常困难的问题,几乎是不可能的问题。让我们逐步完成预测过程的每个步骤,以更好地了解可以轻松实现哪些自动化。
明确定义问题-需要预测什么?
没有要解决的问题,建立模型并进行预测就没有多大意义了。因此,第一步是弄清楚我的问题是什么,我可以预测该问题的哪些方面使问题更加清晰?
这通常不像乍看起来那样明显。自从Uber入手以来,让我们继续以它为例。假设我们是 Uber的分析师,我们的工作是预测明年旧金山 Uber的需求。我们能否仅将Uber需求的历史时间序列提供给预测平台并加以处理?
可能不是。我的意思是我们的老板所说的需求是什么意思?可能是以下任何一种:
- 明年的车手人数。
- 明年的总骑乘次数,即骑乘人数乘以每名骑乘人的骑乘次数。
- 车手在明年支付的金额,即乘客人数乘以每位乘客的乘车次数乘以每位乘客的平均价格。
因此,围绕我们到底需要预测什么是不明确的。您是否注意到,在充实需求定义时,我们需要逐步预测更多变量?
甚至车手本身的数量也是许多因素的相互作用:
- 可用驾驶员的数量-驾驶员的数量和骑手的数量相互之间具有循环效应,Uber雇用的驾驶员越多,使用其平台的骑手就越多(这被称为网络效应)。
- 竞争格局(Lyft,出租车,踏板车等)如何随着时间变化。这包括竞争者的数量,每个竞争者的营销和定价策略等。
因此,看似简单的问题最终变得非常复杂且难以自动化。如上所述,正确的预测模型通常是多个单独模型和预测的集合。如果我们没有考虑到足够多的变量,我们的模型将错过关键的因素。而且,如果我们尝试在集成中包含太多模型和/或预测,我们将迷失在复杂的迷宫中。
弄清楚要预测的内容并不容易,作为一名负责充实模型各个组成部分的架构师,经验丰富的数据科学家可能是无价的,因此可以跨越太简单和太复杂之间的界限。
识别有效的数据(并找到它)
一旦确定了要预测的变量并为我们的模型整体绘制了简洁的流程图,我们就准备好了吗?错,首先我们需要弄清楚我们是否拥有所需的所有数据。在最乐观的情况下,我们所有的数据都可以使用,清洗并准备放入数据库,但是在现实世界中很少有这样的事情发生。
一旦知道了要预测的内容,就需要确定候选特征集,以用于生成预测。通常,这些数据并不容易获取-相反,数据科学家的工作是找出从哪儿、怎样获取这些数据。如果不可能直接观察,那么如何用实际可用的东西来替代它。
这一步也很难自动化。除非公司的数据湖像Google一样广阔和深厚,否则他们将需要数据科学家智能地、创造性地搜寻世界范围内的有效数据。
建立预测—特征工程和选择正确算法
这部分可能更易于自动化。假设我们已成功获取并清除了所有数据(不容易做到),那么现在就可以构建模型了。
虽然我认为经验丰富的数据科学家或统计学家在选择正确的模型并正确设置其参数方面是非常宝贵的专家,但我也知道,在这里绝对有可能采用暴力,自动化的方法。
您甚至可能会争辩说,我们不必为了选择最佳模型而运行和测试每个模型。相反,我们可以假设使用XGBoostor或神经网络为我们提供足够好的结果,前提是它们经过适当的训练且不会过度拟合。
另外,上述两种算法都有效地使特征工程过程自动化。例如,给定足够的神经元和层数,神经网络可以轻松捕获特征与目标之间的任何非线性关系。因此,无需显式地包含特性的日志和指数或特性之间的交互作用。
当然,这种自动化需要付出一定的代价。可解释性低-换句话说,我们不知道是什么在推动我们的预测。例如,在线性回归中,β系数A告诉我们特征A增加1单位将始终对我们的预测产生确切的影响;在神经网络中,我们不知道特征A的增加如何影响我们的预测。
在当今的大数据和复杂数据世界中,模型的可解释性似乎是一种很好的选择,而不是必须具备的。但我认为,在更简单,更易解释的模型不花很多钱的情况下(就预测的准确性而言),保持简单是明智的。
知道模型何时可能断裂
赋予每个人预测能力一种被低估的风险是,没有事先预测经验的人对无效或过度拟合模型可能造成的破坏,缺乏健康的尊重。
从行为上讲,当我们看到定量准确的预测时,就会陷入一种错误的安全感(我们对数字和数学的精度感到满意)。 但是,经验丰富的数据科学家会知道质疑模型的假设,并认识到模型在什么条件下可能表现不佳。
这是另一个令人费解的模型的缺点-如果我们看不到推动我们预测的关键关系,那么很难知道我们处于一个这些关系不再有效的环境中。
我认为,这很难自动化。总有一份工作是为那些既了解建立模型和做出预测的好处和风险的人准备的。
结论
一切可以自动化的东西似乎最终都会实现。 因此,当数据科学和机器学习的某些方面在某个时候实现自动化时,我们不应感到惊讶。 相反,我们应该专注于难以自动化的数据科学领域,并将在可预见的未来继续增加价值:
- 了解您业务的主要驱动因素,以及影响这些驱动因素的因素。
- 知道如何适当地确定范围和设计模型,以使其既不会太简单,不足或太复杂。
- 知道如何挖掘有洞察力的数据,这些数据可用于提供数据科学模型。
- 建立也“足够好”的可解释模型。
- 能够确定您的模型何时以及在何种情况下可能崩溃并产生不良的预测。
当然,这些只是我的想法。 我也很想听听您的声音。 Cheers!
本文转自雷锋网,如需转载请至雷锋网官网申请授权。