来源:亚信大数据 时间:2018-07-18 13:13:58 作者:马明
未来数据会成为核心资源。
——马云
做数据分析首先是熟悉业务及行业知识,其次是分析思路,再次是方法和工具,切勿为了方法而方法,为工具而工具。
——数据分析格言
水能载舟,亦能覆舟
大数据时代,人类获得数据能力远远超过我们的想象,人类对世界的认识正在提升到新的高度。我们知道数据可以帮助我们更好地理解世界、预测未来。近年来人工智能的兴起,大数据起着至关重要的作用:统计学习需要大样本数据;机器学习需要大量数据;而深度学习需要海量数据。
目前,人工智能相关技术已经渗入到各个垂直行业领域。传统行业巨头也都希望数据分析、机器学习等相关技术能够为他们提高其业务量,缩减成本、提高利润。
众所周知,金融行业的数据之大,含金量之高都是首屈一指的。但是正是由于金融业的大数据和其复杂的业务逻辑导致其数据复杂度非常高,我们需要很有效的方法为数据建模以提高数据驱动型应用的开发效率和减少数据误读以及偏见。
本系列文章中的第一篇《应用与趋势》中,笔者曾经简要介绍了CDM的概念及其作用,并认为其是为金融行业提供数据驱动型应用解决方案的数据服务公司和Fintech技术公司不可或缺的一个组件。
本文主要在以下两个方面深入探讨CDM:
• CDM的意义和作用
企业业务层面
数据科学层面
• CDM的技术架构
企业业务层面
一、CDM---企业业务层面
1)为垂直行业服务的数据驱动型应用是以业务数据为核心的
首先,我们认可各行业都需要数据驱动型应用。而一般情况下数据驱动型应用由四部分组成:
传统行业对数据应用的需求是以其业务目标为导向的,所以我们可以肯定的是:行业核心数据是蕴含在其业务系统中的业务数据。
2)理解业务数据是数据分析服务的关键
我们经常听到很多人告诉我们“人会说谎,数据不会说谎“。从根本上讲是可以被认同的。但请想象一下,一个数据驱动型应用四个环节中的任何一个环节都需要人和算法来参与。人是否存在偏见,是否对数据存在误读,学习算法是否可能对数据存在“歧视和偏见“?所以,现实中存在大量的“数据说谎”的现象。
消除误读和偏见的基础就是对数据有正确的理解。所以我们需要在基本环节中加入数据理解的概念。
3)业务数据中含有复杂的业务逻辑
每个企业都有自己的业务逻辑,甚至在一个企业内部不同业务部门的业务逻辑和业务数据也存在差异。这个现象在金融行业更为显著。对提供数据分析服务的公司来言,如果不了解业务逻辑,也就不能很好的解读数据,很难想象其能提供较为优质的数据分析服务和数据驱动型应用。
4)数据驱动型应用开发效率和可扩展性至关重要
数据服务企业或金融科技企业在提供数据分析服务和人工智能应用的同时,肯定会考虑其平台应用的可扩展性。也就是说,他们希望所开发的模型应用可以重复使用,且可以扩展到其他业务部门甚至其他行业。
但事与愿违,很显然达到这一点有许多困难。我们不妨假设某数据应用是做信用卡用户分析以提高用户留存率,如果想把此模型用到贷款用户的用户分析上,是否可行呢?答案显然是否定的。业务数据中记录的信用卡用户的行为数据和贷款用户的数据很可能完全不一样,数据维度、类型、格式和含义等都有非常大的差异。在这种情况下,我们很难期望模型移植可以得到同样的效果。很可能所有的步骤都需要重新做,甚至基本的模型都不一样了。
如果任何一个应用都需要重新做一遍,不能积累以前的探索成果和数据知识,可想而知开发成本较高且效率也比较低。所以我们需要一种方法来弥补这点,能够尽最大可能提高模型重复利用的可能性,积累行业知识、业务逻辑知识和数据知识。当然,想做到这一点还需要对所采用的模型或数据科学方法进行记录和管理,以便迭代优化和重用。
5)数据多维度融合的需求
无论是从数据科学方法上讲,还是从业务目标上来看,对数据维度的需求都会越来越大。借用前面信用卡用户分析的例子来说,可能不只需要交易数据,还需要用户的社交数据、移动轨迹等等,所以多维度跨领域的大数据融合的需求会越来越多。
为了提高数据融合的效率和增加可重用性,我们需要精确定义和组织数据。进一步说,需要定义各领域的感念术语和层次结构。
总结一下,在行业数据应用是以业务目标为导向的前提下,我们需要一种抽象层次较高的数据模型帮助我们精确理解业务数据,提高模型可复制性,加快数据融合的步伐。
数据科学层面
二、CDM---数据科学层面
1)提供从业务逻辑到数据科学方法的桥梁
前面我们主要是从业务视角上看待这个问题。但是行业数据驱动型应用还是需要采用人工智能技术,诸如数据分析挖掘、机器学习和深度学习等。但人工智能专家往往不是业务专家,这就造成了从业务逻辑到数据科学方法的一个断裂,而CDM虽然不能从根本上解决这个问题,但却应该能够在提高重复使用方面起到一个补充的作用,记录什么数据科学方法应用到什么数据解决一个什么样的问题到一个什么程度。它在业务知识数据和数据科学方法中起到了桥梁和积累的作用。
举个例子,想象信用卡用户分析和贷款用户分析的例子:假如我们用决策树模型为信用卡用户建立了一个分类应用,即便我们已经有数据的精确描述和定义,如何把该模型用到贷款用户分类上呢?很可能还是不行,因为数据的意义不一样了,决策树模型可能不再适用了,说不定NB或SVM是更好的选择。
CDM可以为我们做的是把探索结果和应用流程沉淀到平台层,也就是说积累数据知识,业务知识、数据科学知识和这三者之间的联系和流程。
如果类似这种关系积累多了,笔者大胆设想:会出现自动化的模型选择,探索分析的机器学习应用。
2)高层抽象
回忆我们的目标是提高数据科学方法的一个数据驱动型应用的可重用性和可复制性,以提高开发效率从而降低成本。以此为出发点来思考,如果我们想利用以前的模型应用成果,首先需要把其数据表示和定义抽象到高层,也就是说其数据定义是可以泛化的。
用面向对象编程语言的概念来解释这点就是:模型的数据定义相当于一个对象,而我们想重用它,需要将其抽象到类。
3)机器可读
CDM所定义的任何数据模型和关系都必须是机器可读的。只有如此,才能够最大程度地消除数据误读、辅助数据验证而实现流程自动化。
4)数据验证
数据驱动型应用通常会训练一个机器学习算法或采用某个数据科学方法来搭建一个模型,该模型训练成功后会持续使用已实现业务应用。但是如果由于业务和业务数据有变化,或者人为因素,将会导致模型的输入数据变化。这时模型的结果是难以预料了,依赖这样的结果而做决策或者事物处理显然是灾难性的。
所以,我们需要一种机制来帮助检查数据特征是否符合预期,而且为了提高效率和减少人为因素,这个过程必须是自动化的。
CDM本身就会对数据进行定义,我们只要增加其对数据科学相关的定义,例如变量类型、范围和统计特性等等。这样CDM就可以较为方便的增加数据验证和盘点的功能。
简而言之,CDM需要实现数据的精确定义和描述,可泛化和机器可读,支持数据科学相关数据特征的验证和盘点。
CDM技术参考架构
三、CDM技术参考架构
1)传统数据模型
传统数据模型一般有以下几种:
事件模型
归档模型
关系模型
层次模型
网状模型
图模型
这几种模型各有优缺点,它们可以表示几乎所有数据关系和结构,各行业的业务系统数据全都是属于这些模型,所以CDM可采用这几种模型的一两种或其组合。
笔者认为CDM应该采用事件模型和图模型,因为其目的是精确定义和描述数据,并利于机器学习模型工作。机器学习模型的输入一般是事件模型,而业务数据用图模型来表示更为直观和便利。
2)功能结构
从前面的分析中,我们可以得到CDM的基本功能结构:
数据接入模块负责从外部数据源读取数据集和数据字典,应支持多种数据获取方式,包括RDBMS、HTTP、FTP等。
元数据管理模块主要用来管理描述数据集和外部数据源相关信息的元数据。
数据表示推理模块是核心模块,主要解决对业务数据的精确定义,刻画数据之间的关系,向上层抽象以支持泛化并支持关系推理。
串行化解决CDM所维护数据的存储形式和记录格式的问题。
数据获取模块向平台层提供CDM数据的查询访问。
另外,除这些基本核心功能之外,CDM还应支持数据验证和轻度数据清洗功能以保证数据驱动型应用流程以良构和可控的方式运行。请注意,CDM的功能应只能渗透到数据清洗功能,不能过多的影响机器学习模型和流程。它主要是在数据层对可复用机器学习模型提供帮助。
3)技术参考模型
1. 逻辑视图
从逻辑架构上讲,CDM的主体部分可以分为概念抽象层、数据表示层和存储层。
概念抽象层是把业务逻辑数据和术语映射到高层抽象概念和术语,以供移植和泛化。
数据表示层主要用来定义如何表示业务逻辑数据,及定义相关术语和词汇,实体和实体关系。为了能够方便融合多源数据和帮助理解业务逻辑,还应支持知识和关系推理。
存储层顾名思义是解决数据的存储问题,概念层和表示层所得到的所有数据描述、术语定义以及实体关系等都需要串行化到存储层,作为平台的知识积累以供访问查询。
2. 语义标准
上图给出了CDM中各逻辑功能模块语义表述的标准,这些语义表述标准已经在知识图谱中被广泛采用。CDM本身的作用之一就是积累行业、数据和数据科学知识,所以从这方面讲也可看成是知识图谱的一个应用。
这些标准都是W3C语义网络(Semantic Web)所涉及的技术栈,它可以提供数据的表示、推理、可信性、查询和用户交互功能。下面简要介绍一下:
语义描述和知识表示
RDF ( Resource Description Framework) 是一个用于描述 Web 上的资源的框架,提供了针对数据的模型以及语法,可由XML/Turtle等编写,且被设计为机器可读的。它的基本结构是描述和表示一个三元组,即主语(subject),谓语(predict),宾语(object)。
RDFS (RDF Schema) 为RDF提供了数据模型的扩展和概念层词汇表,支持RDF、Turtle、TRIG和JSON-LD表示。
OWL ( Web Ontology Language ) 是web本体定义语言,是一种语义定义,可表达丰富和复杂的关于事物、事物组以及事物关系的知识。其升级版为OWL 2。本体(Ontology)可以被理解成特定领域规范概念集及其逻辑关系的描述。本体为特定领域中的信息提供了一个基本的分类框架,同时也为特定领域中的信息之间的关联性提供了一定程度的逻辑描述,使得特定领域中的信息资源能够在本体描述的框架上组织成一个有机的整体。由于许多领域知识之间都有一定的关联性,某个元数据或本体中的一些概念可能概念等价于其他一些元数据或本体中的另外一些概念,故这些特定领域的本体与元数据都存在着一定的语义关联性。这种关联性可以通过其关联描述来刻画。于是,关联语义数据集为我们提供了跨学科跨领域的语义数据的整合体。
基于RDF/OWL的通用词汇表和模型
DCAT(Data Catalog Vocabulary)是构建在RDF上的一个扩展词汇表,主要用来描述数据目录和数据集。
DC ( Dublin Core Element Set ) 都柏林核心元素集,是对web中资源定义的通用核心标准,它定义了一些通用词汇以供扩展。
SKOS ( Simple Knowledge Organization System ),由W3C提出的,在语义网框架下,用机器可理解的语言来表示知识组织系统的一个模型。
FOAF ( Friend Of A Friend ), 是一种 XML/RDF 词汇表,它以计算机可读的形式描述个人信息。
JSON-LD, 已JSON格式表示链接数据(Linked Data)的一种规范, 方便提供RestFul服务从而构造微服务体系架构。
Microdata,在HTML5中嵌入语义信息。
其他辅助类工具
R2RML (RDB to RDF Mapping Language) 是可以定制化的把关系模型映射到RDF的一种表示语言。
SPARQL,一种通用的基于RDF的查询语言和数据获取协议。
3. 开源软件和工具
我们可以使用开源软件和工具帮助我们实现CDM。例如Apache Jena,提供了RDF相关API,支持OWL,并做了一些扩展。另外Jena还包含了三元组存储库TDB和知识推理API。
斯坦福大学的DeepDive,可以从模式数据中提取知识和关系,它采用类似datalog的数据描述语言。
至于本体建模工具,我们可以采用protégé。
存储层工具我们可以选用类似Neo4j这样的原生图数据库或类似TDB多元组存储库,也可选用关系数据库。
其他细分领域工具也有很多,诸如OpenLink Virtuoso,Ultrawrap,Ontop等。下图给出了CDM的一个参考架构:
总结:
总的来说,CDM有三个核心组件:1. 数据接入;2. 数据语义表示和存储;3. 数据验证。其中,数据接入组件对接外部数据源,数据语义表示和存储非常类似于一个知识图谱,但可能更偏重于搭建业务语义和数据科学语义的桥梁,而数据验证则为数据驱动型应用提供数据可靠性的增强。
笔者会在后续系列中给出一个具体的例子进一步阐述CDM的结构和作用。
责任编辑:陈近梅