观点 | 保险欺诈检测与系统优化设计(三)
欢迎金融科技工作者积极投稿!
投稿邮箱:newmedia@fcmag.com.cn
——金融电子化
文 / 韩殿威
支持人工智能等顶级应用的底层数据框架
在保险业,底层数据架构的设计具有挑战性,因为它的功能不是仅仅满足存储数据,而是包括支持核心商业逻辑、支持普通用户的查询等应用、支持对潜在或已有客户的推荐系统、支持销售和其他部门决策人作为战略决策的数据支持,以及提供人工智能预测模型的训练。本章节从数据存储的延展性分析、核心商业业务逻辑的支持、人工智能领域应用的支持等三个方面阐述底层设计的需求。
1.超大规模数据的存储需求
底层的数据架构不但能够存储不同的数据来源,而且数据量通常达到T级或P级,数据节点通常达到数百个。如何有效地存储这些数据,并且在访问时能够保证可靠、高效呢?欧美国家多数保险公司使用Hadoop数据湖(见图5所示),用以支持数据的延展性,使增加或移除节点都便于执行,能够满足数据查询、报表统计,以及为决策层提供数据支持等基本需求。这类应用对于系统响应时间要求不太高。
图5 Hadoop数据湖
数据湖是下一代能够应对大数据挑战,以及进行实时分析的混合型数据管理解决方案。其高度延展性能够支持超大规模数据量,并且接受各种不同数据类型以源格式方式存储。图5中左侧的数据源一般在本地机器上,用Spark读取数据后可以存入数据仓库或HDFS。右侧的数据源可以写进Spark、HIVE或HBASE。当然也可以把Spark等处理的结果存入数据库或数据仓库。一般来说,数据库与数据仓库存储结构化数据,而HDFS存入流数据、非结构化数据或半结构化数据。但这种框架有3个缺点:一是大量数据集分布在不同的节点上,且在不均衡的Workload上计算,其计算效率可能无法达到最优,且负载平衡设备较难维护;二是用户体验可能不理想;三是批处理与流式处理没有分开,难以高效满足不同应用。
2.核心商业业务逻辑
任何企业的核心价值在于它独特的、不可替代的商业逻辑,这是企业的灵魂。因此,企业的数据架构必须支持这个核心需求。这里我们不去详细、深度地探讨保险业的核心商业是什么,只是阐明基本的数据架构与它面对的挑战性。
笔者认为,商业逻辑层需要灵活的方式访问数据以达到做出最好的决定,遗憾的是我们现有的系统结构过于复杂,在这方面难以达到最优。首先,我们可以把商业逻辑分为性能相关或无关。性能相关的任务,一般都需要重点考虑用户体验。比如,客户想要实时查询某股票的价格,他们自然期望得到系统的实时回应。实时性要求越高,对代码编写及对数据读取的速度要求就越高。传统的Hadoop数据湖的性能差强人意。再举另一个与性能无关的例子,有时用户需要查询过去全年某种产品的交易情况(比如去年医疗保险费用总额)。对这类需求而言,用户对系统响应速度的要求不是很高。传统Hadoop数据湖完全可以胜任。当然,上文列举的两例不能覆盖金融公司的全部需求,实际的需求要复杂得多。所以,需要用新的底层框架实现这一目标。为应对复杂的应用场景,笔者建议用Kafka框架与Hadoop数据湖整合来实现这一目标。为了简化框架的描述,我们暂时不涉及schemaRegistry(尽管它很重要)。
图6 Kafka框架结构
(1)Kafka生产者与消费者
如果用Hadoop数据湖的方法实现股票实时查询系统,一般会读取数据从Hadoop Hive,然后Hive把数据发给API,再由API发给前端。延迟通常发生在Hive数据发给API过程。并且如果海量用户同时查询一只股票的价格,势必严重影响数据传输速率。采用Kafka,一是由于Kafka具有高吞吐量、低延时、高可用性、支持多线程并发处理的特性;二是由于Kafka的消费者具有消费组的概念,同一条消息只被同一个消费组下的某一个消费者消费,这就解决了在分布式系统部署时,如何避免程序重复执行的问题。
当生产者传送消息(股票数据)到KafkaCluster之后,用户(企业的Spark或其他应用程序)读取消息。因为并行读取数据,使很多用户同时读取同一消息非常高效(见图7所示)。我们消费者的线程个数如果达到partition的个数,可以达到最大的吞吐量。
图7 Partition与消费者群的关系
由此带来的问题是:除了应用程序实时读取数据之外,如何存储这些流式数据呢?我们整合Kafka与Hadoop数据湖,可以把数据存入永久数据库或HDFS。
(2)永久存储消息
对于大数据的框架来讲,第一个我们要考虑的问题是如何传送数据,如何消费数据。第二个是如何存储数据。Kafka作为一个消息框架,我们可以把所有的数据永久存储在Kafka Broker之中。答案是可以的。这些长期存储的场景都是真实可行的,因为Kafka就是这么设计的。数据在Kafka中是持久化到硬盘的,有数据检查,有多副本来容错,并且持续累加的数据不会使性能变慢。实际应用案例中,已经有存储PB量级数据的Kafka Cluster在运行。人们之所以对Kafka长期存储数据的用法存在疑虑,是因为我们通常认为Kafka是一个消息队列。使用“消息队列”时有一个原则:不要在消息队列中存储消息。因为,读消息时就要移除这个消息、消息系统的扩张能力不足、消息系统也缺少强壮的复制特性。传统消息系统不重视消息的存储,而Kafka认为这点是非常关键的,认为消息系统的基础功能就是存储,即使一个消息很快被消费,那也是需要短暂的存储,必须要保证消费者能够接收到消息,必须提供容错存储机制。尽管我们可以使用Kafka Cluster来存储消息,但无论Cluster的容量有多大,总有用尽的时候。所以,我们还是需要其他的存储介子来存储。Hdfs或RDBMS都是选项。如果在云平台,还可以用S3。
从图8中可以看出Spark支持两种应用,Streaming(DStream API)和Non-Streaming(RDD API和Dataset API)。
图8 Hadoop数据湖整合kafka cluster
3.基于人工智能应用
我们的底层数据框架的顶级需求是人工智能,与智能决策模型的支持。这一部分,也是融合大数据与人工智能的底层实现。很多人工智能应用的数据又是流式与实时的。为了实现这一目标,Hadoop数据湖远远满足不了我们的需求了。设想一下,如果把大数据融合人工智能,那么我们的人工智能应用才能真正做到了如虎添翼,为商业价值带来巨大的益处。怎么实现这一目标呢?首先我们先回顾一下人工智能的主要步骤和方法。
(1)整理清洁数据。这部分任务,已经在搭建Hadoop数据湖时解决。我们不导入有杂质的数据。
(2)训练并最优化,然后建造学习模型。
(3)运行学习模型,用实际样本,预测分类或分簇。
其实如果数据空间比较小,我们的数据来源可以是一个,但要注意训练样本与测试样本分开。
但对于大数据的存储层与流式数据的特点,我们可以把第2和第3步骤拆分,放在不同的阶段实现。我们可以用流式的历史数据建造学习模型,然后,在处理流式数据时,预测结果。
模型训练
大数据通过Kafka被导入Hadoop Cluster。AIFramework(DL4j)是用来分析Hadoop里的历史数据来建造一个神经网络。数据科学家可以使用R、Python、Java等工具。模型的建造与验证都是在Hadoop Cluster上运行。结果是一个学习模型(见KAI WAEHNER博客)。
模型测试
然后这个神经网络就被部署在kafka流应用。Kafka流应用可以在任何地方运行,如独立的Java进程、容器应用。这里,它被使用在实时系统的预测。
这里,我们只简单介绍一下有关的支持人工智能应用应该有的框架。人工智能的框架很多,但多数是基于Python。我们所知,DL4j是基于java的分布式框架,可与Hadoop、Spark很好地整合。
应用延伸与展望
在这一章,我们想讲一下金融系统的未来应用有哪些。在未来,我们需要大量应用人工智能技术来解决我们的需求。由于有了大数据底层框架作为基础,使具有商业价值的人工智能的应用成为可能。我们这里不可能提及所有的应用,只是一些我们认为有影响的应用。
1.客户服务
我们知道,我们所实现的商业应用,一部分是给公司内部使用,例如销售部想了解每年的最大利润来自哪一块?哪一部分的收益有所显著下降?原因是什么?所以,大数据支持的应用会给决策人以有价值的方向指导。另一方面,金融机构还要开发一些客户端软件,例如像聊天机器人和对话式界面正迅速风靡在风险投资和客户服务预算等领域。Kasisto助力TD Bank,将聊天机器人嵌入移动应用中,以方便日常交易。通过聊天帮助客户解答问题,比如“上个月我投资了多少?”“我的账户两个月前的余额有多少?”等。当然这种应用有很多挑战。就像TD首席数字和支付官Rizwan Khalfan说:“客户的期望在不断变化,我们相信人工智能技术是创造非凡的、个性化体验的,并通过我们的数字财产为客户增加真正价值的关键。”
打造这些智能助手要依赖优良的自然语言处理引擎和金融客服专业知识。应用这种新型服务和咨询模式的银行及金融机构,或许能够从仍然需要客户到营业厅自己查询的传统银行机构手中夺取用户。
图9 Hadoop数据湖整合kafka cluster, AI 框架
2.情感/新闻报道分析
对冲基金总是把自己压箱底的“秘密技术”藏得严严实实,因此外界很难得知他们是如何利用情感分析和舆情分析为金融投资服务的。我们应该考虑使用机器学习技术分析社交媒体、新闻趋势等其他数据源,辅助预测股市,而不是只用于股票交易。
股票市场的动向事关大量的因素,人们希望机器学习能够发现新的趋势和信号,从而增强人类在金融活动中的“直觉”。我们通过建立这个知识库,通过各种大数据来源,分析、消化、整合各种信息,最后通过人工智能模型,推断金融市场走向及预测相关风险。这个复杂的系统有助于用户进行前瞻性判断,避免风险。总之,大数据、人工智能技术应用的主战场是金融领域。
(栏目编辑:王伟)
(点击查看精彩内容)
《金融电子化》新媒体部:主任 / 邝源 编辑 / 傅甜甜 潘婧