数据科学家与模型自动化的饭碗之争?

数据科学家与模型自动化的饭碗之争?

Written by Jepson(Jiaping) Du 杜嘉平, 文章同步公众号: 持续学习的杜吉普

写在前面:

接上一篇文章,我们说了不要让机器学习模型成为孤儿,并且拆分了机器学习持续运营的思路以及所需要的“组件”,这些全部都是理论上的概述,若是真正实现模型持续运营,需要物理世界的‘行为’以及‘工具’的支持。这就不得不提到‘机器学习平台’这样一个看起来功能齐全,抛弃‘人’的工具。它能够对于模型进行自动化的特征工程、自动的建模、自动的选择模型形成一套自动的建模pipeline;上面的部分称之为AutoML(模型自动化)。在AutoML之后,机器学习平台可以对于模型进行版本管理、模型验证、模型优化重新训练,我在这里称其为MLOps。作为一个Kaggler,包括很多数据科学家分析师都会认为未来不断成熟的AutoML自动建模可能会‘抢饭碗’。但是AutoML真的会抢饭碗吗?针对这个问题我们用今天这篇文章进行探讨。





什么AutoML

AutoML提供了全自动的数据建模过程,我们只需要把数据喂进去,上图中的椭圆形的工作全部都会由机器自己完成。

(上图:机器学习平台中AutoML的实现)



对于AutoML这个事物,我第一次接触我还在美国,在进行IBM Data Science Certificate 认证时接触到了Watson AutoML,初见AutoML 就被其表面所呈现的强大功能所惊奇了,只需要上传数据,选择Target column,接下来人类的手就可以被释放,剩下的包括变量选择,字段衍生等一切feature engineering和model selection的工作就全会由Watson自己执行。并且Watson会通过不同ML pipeline的流程得到最好模型表现的pipeline。同时,对于模型的可解释性、model evaluation、performance等等提供可视化展现,就像是下面这张图一样。



(上图:IBM Watson AutoML模型训练界面)


以上是对于Watson这类平台工具型的AutoML的粗略介绍,总而言之,一切操作只需要点点点,不需要coding。

另一种,则是一些需要代码的package,但是代码也都是模块化的代码,例如H20.

以下是H2O对于H20AutoML简略介绍:https://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html

这里不进行详细的介绍,总结而言,就是中间过程以及衡量模型的任何指标都可以找到相应的参数进行设置。



我对于AutoML思想上的变化

牛逼!

考IBM Certificate的时候我觉得这可是个好东西,我们终于不用写代码了。上面使用Watson的整个过程,总共用时不到3分钟,为我输出了8套ML Pipeline,作出了若干张可视化图表,并且选择最佳pipeline得到了最佳结果。效率之惊人,功能之强大,让这个第一次使用AutoML的我震惊了。

垃圾!

在我打Kaggle比赛时,想到了AutoML,我寻思,偷个懒,直接用AutoML的模型结果参赛岂不美哉?若是AutoML性能优秀,Kaggle奖牌还不是如流水?结果自然是非常不如意,于是我又心想,这个垃圾东西,起不到什么作用。呸!

从厉害到垃圾这种思想的转变是来源于模型表现结果上的,为了追求高排名,AutoML根本就没有办法像人工一样做很精密的调参以及模型融合等高阶的模型训练。

焦虑!

在获得了Kaggle世界排名5%之后,我就没有太关注过AutoML这类东西,因为它在模型表现提升方面做的都是非常basic的工作。直到我接触了真实的商业案例。真实的情况,业务更需要的不是一个经过了严格调参的在测试环境下超级超级准确的模型,他们更希望的是一个普普通通的模型,但是在生产环境中能够为相关的业务产生价值的模型。并且在模型生产环境上线后可以很好的对于模型进行持续的监控与重新训练Retrain。并且很多客户还在采购机器学习平台来进行上述的工作。在研究模型验证以及模型持续管理MLOps的过程中,之间意识到了整套流程其实都可以使用类似Watson AutoAI这类的机器学习平台去完成。




有了AutoML,还需要人吗


首先很确定以及肯定的说:需要。

因为我本人并没有很多AutoML在真实项目中的经验,避免我的判断偏颇,我询问了一位曾为H20 Director同时也是我的良师益友Patrick Hall交流了我的想法,得到的结果如下:

I would NEVER trust Watson or any other AutoML product for any serious ML application (… and please understand that I was instrumental in building a very high-end autoML system for another company). My experience is that these solutions are only suitable for low-risk, low-effort models. Humans must still build and deploy important models.

Can some parts of training, deployment, and monitoring be automated, with careful supervision? Yes! Are we ready for full autoML? No … and I wouldn't believe any marketing that says otherwise. I have seen horrible failures when junior data scientists use AutoML to tackle serious problems.

这段回复在探索MLOps(1)中也进行了提及。


接下来讲讲为什么需要,我认为关键点就在于这个serious problem。我认为serious problem = Complex Business Problem。接下来进行验证。





核心:机器永远不了解业务

个人认为这是核心,麦肯锡的研究指出,AutoML的诞生目标是为商业专家提供了高效快捷的模型建立方式,曾经模型的建立需要数据科学家的参与。“Business experts armed with AutoML can build some types of models that once would have needed a trained data scientist.”

- 理解业务才是建模的起点

这里不得不提及一个模型的建立到部署的起点是了解业务与了解数据,这与我参与的客户项目情况完全一致,在下图的先三个步骤,可以说占据了整体项目大部分时间,我们需要不停的进行与业务的多轮访谈、约会以拉齐整个模型的最终输出、业务目前的现状、对于业务如何产生价值等等。


(上图:机器学习项目流程数据与业务域知识占比)


在了解了整个为了要建立机器学习模型的上下文之后,就要开始根据前期业务理解开始对接数据。

- 数据的获取需要业务的钥匙

真实的数据情况不会像打Kaggle比赛一样给你提供一个或几个完整数据集,并且明确告知你预测目标。正式情况,我们需要根据第一阶段的业务输入去找到相应的系统IT负责人索要我们需要的数据(Data Understanding step1),这些数据长什么样,能不能用在数据没有到达分析师手中之前都是不知道的。在所要数据后,会通过数据字段与前期了解的业务知识进一步的理解数据,因为我们得到的我们自认为已经理解的数据其实会和真实数据情况存在很大的偏差,需要我们与业务和系统双方进行进一步的确认。这又是一轮又一轮激烈的讨论。在每一次的了解与会议中,都是需要利用我们对于业务以及数据情况的认识,进行确认的。因为业务与真实数据之间可能会存在巨大的GAP,如果没有一个两者都懂的人存在,那么这个GAP很难在短时间内bridge上。

- 数据探索与业务情况的match

之前作为一个打Kaggle比赛追求模型极致表现的纯数据科学家(Pure Data Guy),Data exploration数据探索其实是为feature engineering特征工程进行服务的。只有在了解了数据基本情况之后,我们才会对于数据质量进行判断,让我们产生对于之后特征工程的策略。例如,空值如何处理,unbalance分布如何处理,multiple class如何处理等等。经过这些处理能够提升最终模型的表现,即performance-oriented以最终表现为导向。

但是在真实项目上,个人认为做数据探索最大的意义是验证之前了解的业务情况是否正确。一旦数据情况与业务情况出现了比较大的unmatch,那还需要进行新一轮的会议,探讨问题原因,是业务对于业务了解的不客观,还是数据没能反应业务现状。如果是后者,那么数据在模型端对于业务的最终贡献就无法保证了,甚至会产生负面的作用。

- 训练集变量的选择更针对性

如果你是一名kaggler,那么对于Santander Transaction Prediction 项目的数据集一定很熟悉,所有的数据字段都是脱敏的,根本不知道每个字段的意义是什么。那么这种情况就完全可以让AutoML来进行字段的筛选,因为人的逻辑和机器的是一样,达到某些统计学指标要求的变量就会自动的删除或保留。

但是Santander项目在真实的商业社会中是很少存在的。对于数据变量的选择是一定会

- 验证策略需要结合业务实际情况

从模型上线到模型优化中间的模型验证策略也并不是机械化就能够制定的。这之间会涉及到业务规则的改变,利益的冲突等等都需要人去处理。不同的项目也许对于验证策略制定的难度不一样,但是这一定是一个需要人去解决的问题。

- 业务变化后的模型重新训练

很多机器学习平台的确提供了当模型表现下降时根据已有ML pipeline对于模型重新训练的功能。这种重新训练的功能我们可以在业务没有发生变化时高效的优化模型。但是如果业务规则发生了变化,那么这就意味着在业务背后的数据情况也就与之前模型训练pipeline时完全不同,完全不同的数据情况,就不可能还能够客观地产生对于相同业务价值的能力。所以一旦识别出业务发生变化,人的作用又要重现,从了解新业务规则,新业务规则所带来的新数据情况等等一系列工作都要重新进行。

这5种场景是我认为最典型的人在整个机器学习模型项目中的核心价值。在我的想象中,无论AutoML发展到什么阶段,都无法替代上述的5个场景替代人去实现这些工作。



AutoML的价值

说完了人的价值,接下来聊聊为什么AutoML会出现。


- 节约时间

1. 在我的建模经历中,代码的复用性其实很高,每一次我只需要在原有的代码上进行相应参数以及function的调整,几乎就能满足新的模型需求。

2. 在我的建模经历中,模型的超参选择是一件非常麻烦的事情,虽然逻辑简单,但是需要人工一点一点去调整参数,重新训练,对比效果。一遍一遍的调参与等待的过程真的是一件令人抓狂的事情。

3. 在我的建模经历中,为了达到精准的模型效果,需要对若干模型进行group 与 ensemble,这两种模型组合策略之间会进行若干次的模型排列组合。这些排列组合都需要我去一点一点的试,然后对比效果,找到最佳的组合方式。而组合策略的逻辑其实也是程式化的。

以上所说的我的经历,如今全都可以被AutoML自动化的,那真的大大降低了建模者的时间。

- 更多的可能(更多模型的选择、更多超参调整的可能)

1. 在我的建模经历中,对于模型的选择只会凭借我的经验,选择那些我认为模型结果会不错的模型。其实还有若干算法可以为我提供帮助,但是由于我经验上的局限,可能会错过。

2. 在我的建模经历中,超参调整会遵循一个策略,先大范围试数,确定大范围再在大范围中进行小范围的试数。由于过程较为繁琐,我不会颗粒度很细的去试数,因为超参对于模型的影响不一定是单调的,超参的调整策略实际上对于不同的算法是有些许差异的,而且不同超参的组合也可能会产生不同的效果。这就会导致我错过了真正的最佳参数范围,以及参数组合。

以上我所说的这些错过,都可以被AutoML所弥补,通过其“不知疲倦”的尝试,为我找到最佳答案。



AutoML能替代什么

回答这个问题,首先我需要认可AutoML的价值,它的确可以帮助数据科学家节约很多重复性以及繁琐性的工作,让科学家们把中心放在前期的业务理解、数据理解与验证以及整体策略制定上。所以AutoML能代替的是不需要过多人类智慧参与的重复与繁琐工作。(尽管这些工作在最开始都是源于人类的建模的经验,但是模型建的多了就会产生一套完整的特征工程与模型选择逻辑,所有的建模过程几乎一样,不一样的就是前期业务输入部分)


(上图:模型建立全流程)


所以理论上,上图中所有的不需要业务输入的工作,都可以替换,其中包括:

  • 繁琐的model hyperparameter tuning。

  • 重复的模型训练与对比选择。

  • 模型融合的排列组合和各种试验过程。

  • 不需要数据科学家智慧的任何流程。


AutoML不能替代什么


  • 对于整个模型项目的业务了解

  • 对于数据的获取以及理解

  • 对于模型建设方向的确定

  • 模型的特征工程以及选择策略

等一系列明显需要人类去进行了解、判断、决策、讨论的环节

AutoML的确提升了建立模型的效率,但是对于模型的使用、选择、训练集的特征工程以及最终的模型验证都需要很强的业务输入才能够保证模型的“正确”。所以在未来,懂数据的商业分析师或业务分析师——Business Analyst将会是企业着重关注的点。

——该观点来自麦肯锡。

“To stay competitive, we believe companies will be best served by not putting all their resources into the fight for sparse technical talent, but instead focusing at least part of their attention on building up their troop of AutoML practitioners, who will become a substantial proportion of the talent pool for the next decade.”

文章结束,综上,身为曾经的kaggler,我的焦虑得到了一定程度的减少,并且相信AutoML不是敌人,而是朋友。



参考资料

https://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html

https://www.mckinsey.com/business-functions/mckinsey-analytics/our-insights/rethinking-ai-talent-strategy-as-automated-machine-learning-comes-of-age

https://medium.com/@tunguz/six-levels-of-auto-ml-a277aa1f0f38

https://www.kdnuggets.com/2019/02/automatic-machine-learning-broken.html

https://datascience.stackexchange.com/questions/65787/auto-ml-vs-manual-ml-for-a-project

https://towardsdatascience.com/will-automl-be-the-end-of-data-scientists-9af3e63990e0

https://towardsdatascience.com/automl-is-overhyped-1b5511ded65f