熟悉数据开发的施主一定知道,一个可交付的算法模型从需求到发布要经历数据获取、特征工程、模型建立、结果检验和最终上线的过程。
那聊到敏捷,顺应当下迅速变化着的市场,我们在期待远期大而全的服务的同时,一定也希望近期小而美的逐步实现,而不是颠覆性的重造。就像伏尔泰所说的"完美是优秀的敌人(Le mieux est I'ennemi du bian)",诚然周全的规划,严密的论证,精确的设计确实可以做出既实惠又时髦的产品。但是企业发展不是一个砸锅卖铁追求完美的过程,而是在保持持续运作的前提下循序渐进的发展,最终的系统一定有一些老旧的组件会带来运维以及与其他组件的磨合问题,但这也是需要在日后的发展中逐渐升级和磨合的。
同样,现实中数据开发工作的目标也不是为了远期的一个覆盖所有场景、可以自学习,参数严密的算法模型,而是在建模时不断考虑新数据源、修正算法、调整参数、模型分片和添加字段的开发过程。举一实例来说,我们知道线性的数据开发应该是从需求理解到数据置备到建模到验证最后到上线的过程。
但是在Salesforce这样的体量的公司,几乎每个客户都需要获取从智能潜客筛查、行为分析、用户旅程预测到机会分析等十几种数据模型。如果SaaS服务商需要为每一个客户都建立一套算法模型,那这样的SaaS一定有其产品的局限性,而Salesforce所要面对的是全球十五万的客户群。作为一家专注做CRM服务的头部公司,这么多年下来在获客的每一个环节上多少会有一些判断的沉淀。
这样的沉淀在Salesforce内部有一套制品库-TransmogrifAI (https://transmogrif.ai),用于对所有开放案例进行自学习。相应的,新客户会签订协议开放部分内部CRM的案例供SalesForce分析,在这部分案例尚不足以建立起该客户自己的分析模型时,TransmogrifAI会先提供同业的模型,随后在慢慢提高客户自身模型的加权值。
上图描绘了Salesforce的数据架构模型,全部功能模块都已微服务化;公司的数据科学团队可以共享特征库和模型服务;TransmogrifAI可以识别不同的前端场景进行匹配的模型自学习。剖析其技术组件,它是一套基于Scala开发的全开源数据模型工具,由OpenNLP提供自然语言处理、Lucene提供全网搜索,Tika提供元数据识别,Spark提供实时处理,Algebird提供分类加总,Avro提供数据序列化。由此数据科学家仅需关注新特征、新模型的研究和验证即可。
由于目标数据都是结构化数据,所以系统内部仅需维护好数据字典表,将不同的案例输入传给不同的特征场景即可。
当然如果在一个特征场景中只有一个算法模型,自学习的意义对我们评价模型好坏就意义不大了,因此根据最终模型的匹配度,TransmogrifAI会将此已知案例放置在最高的模型库下。
基于不同案例对于不同模型的映射与反哺关系,我们就大概可以知道在不同行业或企业下的不同模型的匹配情况,从而加深我们对行业的认识了。