数据产品开发的四个关键要素

导读:在这篇文章中,咱们阐述进行有效的数据产品开发的关键要素。数据产品都是算法工程师们开发出来的,咱们就从算法工程师的算法水平开始聊聊。

最近两年,我一直跟IT公司里面的算法工程师们一块儿工做,本身也算一名算法工程师,也面试过各个级别的算法工程师。来了IT公司以后,我刚开始面临的一个很大的问题,短期内很难看清楚申请人真实的算法水平。主要难点有两个:面试

  • 大部分刚入职的同窗几乎没有任何学术论文,因此我只能依靠前面几位同事对他/她的算法编程能力的考核。
  • 对于一些从不知名IT公司过来的候选人,简历上都说本身参与了各类线上项目的开发,可是他们在这些项目中的做用究竟是啥, 根本不清楚。问题的复杂度和算法的效果也不清楚。

这两个难点就是短期内,没有一个可信的标准来衡量对方的算法水平。算法

我在学界作了快20年的研究,培养了一批人才,一部分人去了学术界(NYU,UNC,Emory,UoT,Purdue,Yale,UoA,FSU等),另外一部分人去了工业界(像Uber,DiDi,高盛等)。在我实验室的几年中,他们都是跟我一块儿研究某个应用场景内的一些有意思的问题,收集和/或处理相关数据,设计各类算法,与推导相关的理论。在学界中,我也面试了许多青年才俊们,主要看他们的推荐信,发表的文章,与面试的交谈和学术演讲。在这种情形下,高水平的文章/专著一直是在学界中找到好工做的必要条件。在顶刊/顶会发表文章的数目以及被引用的次数通常被认为是可信的标准,由于这些地方大部分审稿人的要求都是很是高的,标准基本上就两个:编程

  • 这个问题自己有没有大的意义,这个意义能够是学术上的,科学上的或商业上的;
  • 你的算法和理论能不能真正极大地解决该问题

我如今考察面试人的算法水平, 主要是基于面试人经常使用的算法来问以下几个基本问题:安全

  • 相关模型会不会调参,有啥心得?
  • 对该类算法理解的深度和广度如何?
  • 为啥有时候某个算法很差用,为何?
  • 若是这个算法很差用,你能不能开发出更好的算法?

许多没有受过严格算法训练的同窗们常常到第二个问题的时候就卡住了。对于中高阶的算法工程师,最好还要有高质量的学术论文/专著或被行业所普遍承认的产品,这些积累反映了他/她对一类问题的深度思考,这就是一种可信的硬性标准。相对应地,在Google的Deepmind工做过几年的同窗,你们通常会认为其实力应该不错,由于Deepmind自己就表明了一个可信的软性标准。一个好的算法团队最好有许多有软硬实力的算法工程师,但问题是高效的数据产品开发到底须要什么样的算法工程师呢?架构

更进一步地,这几年咱们接触了许多算法同窗,每天跟他们一块儿工做,几乎天天都听他们聊各类模型(像X-learner,XG-boost,CNN,Transformer,GCN,U-net等)以及它们的各类技术指标(像AUC,F-score等),最后也说离线和在线的业务指标(像ROI,GMV等)。可是,咱们几乎不可能把他们的算法都拿来跑跑,对全部的算法细节都把关,那咱们如何保证数据产品开发的质量?机器学习

首先,在数据产品开发中,选取好的业务指标是保证数据产品质量最重要的标准,定好合理的业务指标是全部数据产品应用层实现技术落地的核心。函数

  • 有时业务指标挺直接的,好比说跟人生安全相关的产品,下降事故率和死亡率多是一个经常使用的业务指标。可是,许多跟用户生命周期管理相关的策略, 包括拉新、促活、留存、和召回等,评价这些策略好坏的业务指标就没有那么简单。许多公司都是以生命周期总价值(LTV)为公司的业务指标,就是公司从用户全部的互动中所获得的所有经济收益的总和。在我的的维度上就是“顾客终生价值”,指的是每一个购买者在将来可能为企业带来的收益总和。若是咱们进一步考虑用户对公司利润的贡献,它也能够分为新生期,成熟期、衰退期,沉默期,和再激活期,LTV也能够被进一步拆解为用户量、留存率、活跃度(DAU)、和每用户平均收入等核心的业务指标。另一个最经常使用的指标是投资回报率,它的英文名为Return on Investment(ROI)= (税前利润/投资总额)x 100%, 它常常被用来衡量各类运营策略的效果和效率。对于运营策略来讲,一个深层次的问题就是LTV和ROI哪一个是更好的业务指标?由于篇幅的缘故,咱们不在这里阐述这个问题,请注意之后的更新。

其次,在数据产品开发中,咱们要考虑两类技术指标:算法的技术指标和模型的诊断统计量。大部分数据产品都是能够拆解为一系列分类和回归模块的有机组合。工具

  • 算法的技术指标(https://zhuanlan.zhihu.com/p/... 能够根据分类和回归的算法来分类。具体的,分类算法的经常使用技术指标包含精度、准确率(查准率)、召回率(查全率)、F得分、AUC (Area Under Curve)、Gini系数、增益图和 KS(Kolmogorov-Smirnov)等。好比,增益图普遍应用于目标定位问题,以在特定的活动中肯定用户在哪一个十分位数上,然而K-S是衡量正负例分布分离程度的指标。回归算法的经常使用技术指标包含平均绝对偏差、均方偏差、对数损失、均方根偏差、决定系数和校订决定系数等等。
  • 咱们还要考虑模型的诊断统计量,由于算法的技术指标并不能彻底反映模型核心假设的合理性。这里就是用统计学中一些模型诊断工具来找出数据中的异常点和强影响点,以刻画数据的分布,选择更好的损失函数,和增长模型的泛化性。
  • 算法的技术指标通常都是宏观指标,然而模型的诊断工具大部分是给定模型下,有关数据点的一些微观指标。

有了这些准备,咱们再谈谈在数据产品开发中技术指标和业务指标之间的关系。学习

1. 数据产品的模块拆解和开发

作好一个数据产品,另外一个重要的是如何有效地把业务指标拆解成各个模块,找到一条清晰的解决思路,依此进行相关的数据建设,算法开发与系统优化。为了达到这点,有两个关键点:测试

  • 对业务的深刻理解,这个须要相关算法工程师长期在业务里面跌爬滚打,找到解决问题的关键点。
  • 相关人员对各种算法的深度和广度的有效把控,可以把每一个模块真正建设起来。
  • 各个公司最须要的是既懂业务又懂算法技术的算法工程师,这种人才是数据产品开发的关键。

2. 模块的泛化性

在每一个模块的开发中,咱们通常收集一组/几组训练数据集,构建一组模型,用交叉验证法从算法的技术指标和诊断统计量获得反馈,选择模型,改进模型,直到达到必定的准确度。

  • 模型的泛化性是指模型对新数据集的适应能力。模型在训练数据集上取得好的准确度并不能保证上线后模型的泛化性。
  • 有一个论断就是若是测试集足够大,好的准确度就能保证好的模型的泛化性,其实这个论断不必定对。
  • 保证模型的泛化性最关键的一件事情是进行高效的和有序的底层数据建设,并学到隐含在数据背后的因果关系,这样咱们的模型对具备和训练集赞成因果关系的数据也会适用。

3. 技术指标到业务指标的转化

通常来讲,全部模块上取得好的技术指标不能自动地转化为好的业务指标,这个依赖于对业务指标的有效拆解。拆解好了,一些模块的技术指标作得差点对提高业务的指标影响可能不必定很大,因此作产品的过程当中,咱们必定把整个流程跑通。再找到一些关键模块来优化,可是在必定成本之下,你们仍是都但愿把每一个模块的技术指标作到极致。这个问题是落地最难的点,须要更多的案例来剖析其中的深度。

最后,咱们以阿尔法围棋这个数据产品为例. 它的业务指标就是下赢对手, 它被拆解成四个模块,造成一个完整的系统。

在算法层面上,AlphaGO结合了深度学习,强化学习和蒙特卡洛树搜索法等多个方法,并对这些方法进行了开创性的发展,使其实力有了实质性飞跃,以取得战胜多名世界冠军的记录。这些成果都是来源于AlphaGo团队对指标的高效拆解、高深的算法水平和有效的底层数据建设。


做者介绍

北卡罗来纳大学教堂山分校生物统计学终身教授 ,2018年加入滴滴出行,带领工程师们为滴滴出行平台的运营打造一套双边市场的创新理论和平台。

北卡州立大学统计博士,2018年加入滴滴出行,主要从事统计和机器学习在双边交易市场的研究和应用。

团队招聘

欢迎对大数据底层引擎(如 Spark、Flink 等)有研究和实践经验的工程师/专家加入滴滴大数据架构部,一块儿面对互联网+出行行业的天天万亿级海量数据处理挑战。

投递邮箱 | diditech@didiglobal.com

邮件主题请命名为「姓名+应聘部门+应聘方向」


欢迎关注滴滴技术公众号!

本文由博客群发一文多发等运营工具平台 OpenWrite 发布
相关文章
相关标签/搜索