阿里风控大脑如何应用大数据来构建风控体系?

简介: 2019年双11阿里风控保护了约388亿消费者的操作行为,同时挡住了约22亿次恶意攻击。在首席技术官大数据专享会,阿里巴巴新零售技术事业群高级数据技术专家丁明峰为大家介绍了阿里风控大脑关于大数据应用的探索与实践,即风控领域如何应用大数据来构建风控体系?并详细介绍风控架构以及链路。

一、阿里风控大脑整体介绍

1. 阿里风控大脑是什么?

阿里的风控主要分为两大块。一块是金融领域,主要业务是支付宝,另一块是非金融领域,如新零售、高德、大文娱等,我们负责的主要是非金融领域。阿里风控大脑的含义较为丰富,可以有不同的解读,但基本上代表了几个方向。首先,阿里风控大脑是“大中台小前台”战略,由于阿里风控管的风险业务很多,领域非常杂,所以允许不同的领域、不同的风控场景可以有自己独特的交互,有自己的console,但是用到的底层引擎必须是中心化的,由风控引擎做统一计算和处理。第二,阿里风控大脑代表高智能,后续会有深度学习和无监督学习模型大量上线,防控策略及防控方式都会更加智能化。如下图所示,右侧是目前阿里风控覆盖的主要业务和防控的风控场景,如黑客攻击、消费者保护、商家保护等。左侧是阿里风控2019年双11的部分数据,保护了约388亿消费者的操作行为,同时挡住了约22亿次恶意攻击。

image

2. 典型防控链路

用户通过阿里的APP或网站访问阿里的业务会产生大量操作。这些操作进来之后大概会经过如下图所示的七层防控环节。首先会是端上防控,主要在应用层,比如应用的加固,应用的代码混淆等。然后是端上安全策略。第二层是在网络层,在网络层做流量清洗和流量保护。

基础安全防控:网络层之后会有人机判断。人机部分在风控领域占比非常大,网络层+人机的防控方式和下面几层差异比较大,主要针对基础流量做防控,不会加入具体的业务逻辑,所以称其为基础安全防控。

实施安全防控:人机比较复杂,一部分与流量相关,另一部分偏业务。其中偏业务的部分与下面几层称为业务防控范围。人机之后,在业务防控侧做白/黑判断,主要是出于成本考虑。如果能先判定用户行为的白/黑,后面则不需要做太多进一步判定,可以节约大量成本。然后是比较复杂的灰的判定,需要从多个维度来识别风险。
准实时联合防控:近线是一种准实时联合性防控,将多种流量或者多种行为放在一起监控。

离线回捞:离线主要是一种离线回捞,针对历史数据做大量回捞。
不是所有业务都会走近线或离线,业务按照自己需求自行选择。

image

3.业务安全(MTEE)架构

如下图所示,业务侧安全防控可以分成风险识别、风险决策、风险审核、风险处置四大块。风险识别主要是风险行为的判定,当检测到用户的某些行为有风险,如果业务比较简单而且识别准确度很高,那么此行为可以直接流入风险处置做处置。如果识别出的行为没法确定或识别准确率不太高,会将其放到风险审核通过机审或者人审做进一步判定,判定之后才进行处置。还有一些业务非常复杂,可能需要进一步的综合判定,那么会将其放到风险决策。比如一些风险不论在一段时间内触犯多少次,只能对其进行一次处罚,但是它在不同环节或是不同行为可能会被识别多次,即会多次被认为有风险,需要在风险决策中对这种风险进行统一去重、收口。

image

其中最复杂的是风险识别环节。风险识别会用到前端的业务系统,比如淘宝APP、天猫APP传过来的各种业务数据。但是仅仅通过这些业务数据做风险防控是远远不够的,所以阿里会做很多大数据的应用,比如名单库、关键词库、还有很多的指标以及实时图、IP库等。这些数据会通过元数据中心做统一定义和管理,最终通过统一数据服务来给风险识别做数据增强。另外,通过事件中心、策略工厂、模型平台,构建了策略/模型快速实验和上线的过程。事件中心把实时引擎或者近线引擎的数据补全完整后写入MaxCompute,然后在策略工厂中,会和PAI打通,由策略工厂准备数据后,再通过PAI做模型训练。最终在策略工厂里面将新的策略、新的模型部署到线上,如此便形成了快速的数据+训练+上线的链路。

image

二、近线引擎

1. 几个实时引擎不太好处理的场景

阿里在做近线引擎之前内部讨论了很久,因为近线引擎的边界和实时引擎比较接近,有时很难区分。很多时候在近线引擎里面做的事情在实时引擎里也可以做。那么为什么要做近线引擎?阿里发现有很多场景虽然可以在实时引擎里做,但是需要很多定制化的开发,需要按照场景专门找开发人员去实现。模型大规模推广之后,发现这样的应用场景越来越多,所以希望有更好的方式解决这些问题。比如在商品新发时,需要结合商品图片信息和商品其他信息做综合判断该商品是否涉黄,对于图片信息,大部分公司可能会使用图片识别引擎,但图片识别引擎本身处理能力时快时慢,所以返回时间不一定。这种情况通过实时引擎等待返回是不可能去做的,所以需要做很多个性化的开发去实现整个链路的异步化。还有一些场景比如一个帖子有很多回帖,某些回帖可能是垃圾回帖或带有欺诈行为,大部分情况下是无法通过单个消息或者回帖判断其是否有欺诈行为,而要综合从发帖到回帖各个环节来判断,所以需要把时间跨度很长的很多消息放在一起来处理。这在实时引擎中也不好处理,因为实时引擎本身就是基于事件消息触发的。还有一些非常复杂的业务场景,比如拉新场景,需要结合注册+登陆+交易等多种行为来判断是否有薅羊毛等黑灰产行为,需要将很多事件放到一起去综合判定,在实时引擎中也不太好做。所以阿里最终决定做近线引擎来对上述问题进行更好的抽象和处理,希望有一种更好的解法来解决这些问题。

image

2. 近线引擎的定位

基于阿里场景,要求近线引擎至少满足三个要求,如下图所示,第一时效性不能太差,即允许有延时,但不能太久,因为如果延时太久,没有返回风险结果,业务侧就会认为这种行为是正常的,容易造成漏防。第二要支持多事件综合处理的能力,在流计算中称为支持多流的join处理。并且需要非常灵活的数据处理能力,大部分算法里面会有很多非常灵活的数据加工,需要算法同学自己实现。第三希望近线引擎能和阿里现有的风控体系无缝融合,因为阿里本身原本的风控体系非常庞大,上下游环节非常多,如果近线引擎孤立在外,可能需要做很多重复造轮子的事情。

image

3. Why Blink?

流计算的快速发展,让阿里选择了流计算平台作为近线引擎的底层核心。在对比了市面上几个比较受欢迎的流计算平台之后,最终选择了Blink。选择Blink有几点原因,如下图所示。首先Blink是阿里内部定制版的Flink,在公司内部已经搭建了性能非常好的流计算平台,平台开放性、扩展性非常不错,兼容成本也非常低。另外Blink有一套完整的SQL语义支持,这一点非常重要。因为阿里希望业务方尽量使用SQL,SQL使用成本较低,上手速度也会非常快。Blink团队会持续优化SQL性能,使用SQL也可以持续享受到这个福利。

image

4. 近线引擎功能框架

近线引擎的主要功能是把风控逻辑转换成Blink能够执行的任务。近线引擎会把自己需要的数据需求给到事件中心,事件中心通过统一数据服务做数据增强之后流到Blink里面做计算。为什么要把数据补全放到前面去做?因为Blink是按照任务分别计算,同一个事件或同一个流量可能会在不同的任务里面计算多次,如果把数据增强放到Blink里面做,可能会存在多次补全。另外数据补全体量非常大,成本消耗很大,如果放到Blink里面做,会对Blink造成非常大的压力,并且不好做性能优化。

近线引擎从功能上主要分成四个模块。

业务组件:对风控元素进行封装。在近线风控链路中有很多风控元素,比如事件中心的数据源、对应的下游风控决策或过程中需要用到的模型、算法、策略等。对这些元素进行组件封装,从而使用户使用近线引擎时可以快速使用这些风控元素。
Security-SQL:语法和Blink SQL类似,Blink SQL中会要求写具体的物理实现,阿里希望用户不需要关注这些实现细节,而只关注业务逻辑,所以设计了S-SQL。
语法转义:将S-SQL翻译成Blink SQL。
Blink任务管理:包括任务的上下限、安全生产相关的,做灰度、做测试等。

image

5. 阿里在近线引擎为同学提供的两种模式

算法同学模式—开放式SQL:算法同学模式是开放式SQL。因为算法同学具备较强的数据能力和开发能力,并且经常会针对一些业务场景写个性化很强的算法,如果将其限制的太死反而不方便,所以支持完全用S-SQL来写业务逻辑。下图所示案例是从数据源取出一个字段。左侧是对过程中需要用到的业务组件的封装,中间是S-SQL。可以看到S-SQL写法跟Blink SQL完全不一样,只需要写event.odl_event_ugc。event是数据源的特殊名词,即一个系统保留关键字。用S-SQL来写根本不用关注event是怎么来的等影响研发效率的信息,因为在系统、业务组件里有一套约定告知event从哪里来。

image

运营同学模式—通用能力:运营同学可能有一定的数据能力,但没法自己去研发算法,但运营同学也希望能用上不同的算法来实现自己的业务需求。算法同学会按照不同业务场景开发一些通用能力,比如音频类,视频类,图片类,或文本类的,有基本的,也有具体业务的。每一个通用能力会转换成一个Blink任务。业务同学可以通过交互式的方式配置自己的策略,其中可以引用通用能力用来做风险识别。当业务流量进来,首先进行数据预处理,然后按照引用的通用功能把流量转发到各通用能力对应的任务作相应计算,然后将原始数据和通用数据进行合并,之后再执行自己的策略,并最终将数据分发给下游,比如风险决策系统。整个处理过程拆分的比较细,主要是因为在同一个Blink任务里面,如果代码量特别大或者是任务特别长,性能和运维会是非常大的问题。将任务拆的比较细便于管理运维,性能也会更好。

image

另外,任务之间基本通过两种方式进行数据传递。第一种是MetaQ,上游任务会通过MetaQ分发到下游。第二种是通过HBase,因为HBase的多列加上HLog可以很方便地把多条消息整合到一条消息里面,所以数据合并基本是用HBase来做。

6.业务效果

目前近线引擎用了约2000CU资源,日均处理事件量约300亿,主要覆盖的场景有商品、内容、直播、拉新等多个领域,风险识别在风控领域占比约10%。相信随着模型和算法的进一步发展,产品的进一步完善,比重也会大幅上升。

三、离线引擎

1.为何需要离线引擎

离线引擎基本是和近线引擎同一时间考虑的,起初是发现有很多离线数据会批量导入到实时引擎中处理,非常不利于实时引擎的稳定。随着深入探索和研究,发现很多场景确实需要批处理能力进行风险识别。离线引擎起初是为了解决以下几个问题。第一是新业务的接入,阿里集团规模最近几年发展越来越快,覆盖了非常多的业务领域。大部分新业务的安全水位很比较低,需要接入风控体系。原来会让新业务走实时引擎做对接,对接成本较高,对接速度比较慢。新业务方和安全小二都希望有一种更方便、更快速的对接方式。第二是很多新发现的风险,或在当前时间点漏过的变异风险,在发现之后需要对历史数据进行回捞,需求量很大。第三是很多业务同学在离线做大数据风险之后得到的一些结果,需要有渠道流入到审核或处置等后续环境。第四是业务同学会做策略变更,需要用历史数据来验证其实际影响,否则上线过程会变得非常慢。

image

2.离线引擎的功能框架

语义转译SQL
离线引擎底层主要依赖于MaxCompute,主要过程是将风险语义转换成MaxCompute任务去执行。离线引擎和近线引擎有些地方非常像,比如语义转换和任务管理部分,区别只是近线引擎基于Blink,离线引擎基于MaxCompute。

image

仿真模拟
离线引擎的独特之处是需要对历史数据进行全面处理。一个很大的问题是新特征不能通过事件中心对历史数据进行补全,所以做了仿真模拟,即尽可能在离线上复现风控在实时引擎中用到的特征。按照如何去做将仿真分为三类。

业务原始数据:业务原始数据即业务发过来的数据,按照目前策略,业务原始数据会通过事件中心全量写到MaxCompute中。事件中心使用DataHub 中间件,事件数据会通过DataHub写到MaxCompute。这类数据默认全部都有,不需再做过多操作。

不可模拟的增强数据:第二类是不可模拟的增强数据。比如调用了一个第三方的服务,完全不清楚第三方服务的逻辑是什么,只知道第三方服务给出的数据。因为调用的第三方服务比较多,所以不可能逐一去看,这类数据基本暂时是不可模拟的。目前对于这种数据要预先配置在事件中心里面去做补全,其缺点是如果要在新的事件上做补全,已经属于事后的事情了,那么历史的那部分数据是没办法获取的。所以不可模拟的增强数据目前还有缺陷。

可模拟的增强数据:第三类是可模拟的增强数据,按照模拟方式的不同又分为三种。第一种数据来自MaxCompute,因为很多数据,如离线指标、IP库原来就在MaxCompute上做计算,计算完成后同步到线上,给线上应用使用,对这种数据只需在做SQL翻译时直接采用数据源表即可。第二种是可归档数据。很多数据应用是在自己或周边团队建设的的,如名单库、关键词库等等,非常清楚整个数据逻辑,可以按约定做好数据归档。归档方式多种多样,如直接回流到MaxCompute上,或将其转成文件,在MaxCompute上读取。归档数据体量不会特别大,数据量最多TB级。第三种基本指实时指标,线上几千个实时特征每时每秒产生的数据量都非常大,这些数据全量回流到MaxCompute的成本很高。但好的地方在于,实时计算用到的原始数据基本都是实时引擎流出的,而且这些数据事件中心都会接入,所以MaxCompute上也都有这些原始数据。而且实时指标的逻辑都维护在系统里面,是非常清楚的,所以可以基于原始数据及指标的计算逻辑,在MaxCompute上写一套模拟任务去模拟。阿里写了一套尽可能仿真的仿流式计算的任务模板,结果数据和流计算基本一致,最多会有一分钟或者更小时间窗口的误差。通过这一整套模板,就可以在离线引擎上提供很多与线上一致或接近一致的指标供用户使用。

image

任务调度
Blink无需太多任务调度,流量来了就处理,但离线批处理需要有任务调度。离线引擎的任务调度很大一部分是用DataWorks本身的调度,但也有一些场景没办法使用。目前离线引擎的任务分为两种。

周期性任务:用户需要周期性的对一些增量或者全量的历史数据进行风险识别。周期性任务借助DataWorks的周期任务,因为它的周期任务管理已经做得很好,首先有完善的上下游依赖和调度,其次有丰富的调度参数配置,可以通过很多参数来控制调度。DataWorks周期性任务的缺点是任务结构不建议经常刷新,如果经常刷新任务的上下游结构,可能导致任务调度出问题。比如昨天的任务今天还未调度,如果把调度链路改了,任务就可能有问题甚至报错。但在离线引擎中,为了让一次风控计算任务性能更好,需要将一个任务拆成多个任务,即多个DataWorks周期性任务来处理。比如会先用一个任务做预处理,然后多个任务并行做各种数据增强,之后再进行合并,最后做策略执行,如此一来时效性会很好,执行速度会更快。但是周期任务中这种任务链会在策略变更时需要经常去刷新,为了避免刷新带来的问题,现在将增强数据固定分成了几类,比如无论这一次离线任务里是否使用名单,先将名单增强任务生成好,将任务节点永远保留在任务链中,那么无论怎么刷新,最多是刷新其中的逻辑,而不刷新任务结构,从而让离线引擎任务可以随时更新。

一次性任务:需要对历史数据做一次性回捞,不需要跑多次。一次性任务是利用DataWorks中的触发式任务。触发式任务最大的问题是只支持单个任务做调度。因为一次性任务时效性很重要,用户做一次回捞不可能等几个小时,所以需要对任务进行更细致的分拆,分拆完成后在离线引擎里面自己实现调度,通过周期性轮询任务状态,自己完成任务依赖、任务调度等工作。

image

四、总结

阿里目前有三个引擎,实时引擎、近线引擎和离线引擎,其好处是用户能做的事情变得更多,能力变得更强,坏处是引擎增多,概念增多,用户理解和使用成本会变得更高。所以阿里在引擎设计之初坚持的原则是用同一套元数据,即引擎的元数据都是一样的,可以在最大层面上避免用户对引擎理解的不一致。其次,在很长时间甚至到现在,一直在做的事情都是尽量让引擎用到的是同一套数据。未来希望所有引擎有同一套风控语言,例如S-SQL或比S-SQL更成熟、更抽象的一种语言。这种语言可用于解释风控场景中的各种语义。如果有这样一套风控语言,风控用户对风险的描述、风险场景的落地会更加直观清楚。

本文为阿里云原创内容,未经允许不得转载。

云栖号 - 上云就看云栖号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516770.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataWorks 如何撑起阿里99%的数据开发?

阿里妹导读: DataWorks是阿里巴巴自主研发,支撑阿里巴巴经济体99%数据业务建设和治理,每天数万名数据开发和算法开发工程师在使用。从2010年起步到目前的版本,经历了多次技术变革和架构升级,也遗留了大量的历史包袱。…

实用小技能 | 用 Word 和 Excel 自制一个题库自判断答题系统!

作者 | 杨秀璋责编 | 夕颜来源 | CSDN博客 如果你需要做题库,并且喜欢电子答题的方法,这篇文章或许会对你有所帮助。反正李老师班级的平均成绩高出其他班级的14分,这就是它的好处,希望这篇文章对我今后的学生有所帮助吧&#xff0…

使用canal实现MySQL 8 全量同步数据到 ElasticSearch 7.15.2中 linux

文章目录一、软件安装1. jdk 安装2. ES7.15.2 安装3. Mysql 8.0 安装4. canal下载二、Mysql 配置2.1. 开启binlog2.2. 验证binlog状态2.3. 创建账号2.4. 权限赋予2.5. 刷新权限2.6. 创建数据库2.7. 初始化表结构2.8. 初始化数据三、canal-deployer的配置与使用3.1. 解压deploye…

“数据驱动、智能引领”,打造未来智能小镇“样板间”

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 云栖小镇位于浙江杭州西湖区南部,属杭州之江国家旅游度假区核心区块&#xf…

探索中国广电“智慧城市”未来转型路径

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 引言 东方明珠是上海的传媒旗舰,在文娱领域拓展的同时,也被广电…

使用canal实现MySQL 8 增量同步数据到 ElasticSearch 7.15.2中 linux

文章目录一、清空控制台1. 清空控制台2. 修改数据3. 监控数据4. 数据变化5. 索引查询6. 预期性能评估7. 增量同步分析二、验证方案2.1. 把shop索引删除2.2. 重建shop索引2.3. 修改id取得数据2.4. 查看shop索引数据2.4. 修改分类表数据2.6. 监控2.7. 查看shop索引数据2.8. 总结2…

30岁,真的是程序员迈不过去的坎吗?

经常听到有人在说:“现在技术迭代越来越快,程序员的压力更大了,30岁之后的程序员就不好找工作了......”,这不乏很多人在故意贩卖焦虑,但是也会引起我们对自己发展的思考。尤其刚入行的程序员会迷茫,会思考…

全球加速产品 方便更多学生获得申请名校的机会

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 公司介绍 青岛XX教育科技股份有限公司是英国爱德思考试局(Edexcel&#xff…

如何构建一个可持续的企业级数据赋能体系?

简介: 对于所有企业来说,数据决定了基于算力、算法等能做出哪些场景和应用。在本次首席技术官大数据专享会上,友盟首席产品官林鸣晖围绕业务数据化,数据资产化、资产应用化、应用价值化构建属于企业的可闭环、可沉淀、可持续的数据…

ElasticSearch 7.15.2 使用java canal 接入实现灵活化增量数据准实时同步

前言: ①canal.adapter-1.1.5 支持一对一单表的增量数据同步ElasticSearch 7; ②对于多表聚合场景的SQL满足不了我们的业务需求。 ③采用java canal 接入,可以实现灵活化增量数据准实时同步 文章目录一、java canal 接入1. 依赖导入2. 增加配…

2020 年最厉害的 10 门编程语言

作者 | 沉默王二来源 | 沉默王二对于很多初学编程的人来说,尤其是马上要入学的大一新生来说,选择哪门子编程语言实在是个痛苦的事。选择对了,毕业后顺利找到工作,完美走向职场;选择错了,毕业后受伤的才华无…

MaxCompute客户端在windows命令行下查询中文乱码怎么办?

MaxCompute客户端工具是阿里云大数据计算服务MaxCompue产品官方客户端工具,通过客户端工具可以连接MaxCompute项目,完成包括数据管理、数据上下传、作业执行、用户及授权管理等各项操作。 但有用户会碰到在Windows下的命令行中执行odpscmd后,…

SLS多云日志采集、处理及分析

场景描述 本文根据用户业务场景不同分别采用Logtail和Log producer写入阿里云日志服务,针对未使用其他日志采集服务的用户,推荐在第三方云平台或线下IDC服务器安装logtail采集并使用DCDN安全传输;针对已使用其他日志采集工具并且已有日志服务…

10分钟搭建完成人脸通行系统 百度『乘风』人脸智能化平台了解一下

目前人脸技术已在企业办公、智慧社区、金融保险等多领域多场景中落地应用,发展潜力巨大。8月21日,百度大脑开放日“乘风新基建,加速产业智能化升级”专场活动在乌镇召开。会上,基于百度大脑领先的人脸识别技术,百度智能…

聚焦数字化智慧安防的新型社区

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 引言 现如今,智慧城市建设已成为全球城市发展的必然趋势,全球仅…

Nexus 3.31.1-01搭建 maven 私服 windows

文章目录1. Nexus 3 下载2. 解压后目录3. 前台启动4. 浏览器访问5. 登录1. Nexus 3 下载 nexus3下载地址 2. 解压后目录 3. 前台启动 进行命令窗口,执行以下命令 nexus.exe /run等待出现这个信息 4. 浏览器访问 http://localhost:8081/ 点右上角登录 5. 登…

中邮智递通过数加和datav将系统和服务迁移到大数据平台

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 概述 中邮智递数据平台发展到现在经历了四个阶段: (1) 直接在业务生产系统开发生成报表…

百度大脑“乘风”新基建,“破浪”产业智能化落地

人脸识别技术在AI时代不仅可以带来便利,同时也提高了效率。8月21日,百度大脑开放日在乌镇举办“乘风新基建,加速产业智能化升级”专场,桐乡市经济和信息化局副局长陈再飞、乌镇镇科协秘书长钱永琪、桐乡市工业互联网企业联合会会长…

美柚上云 致力成为最懂女人的互联网企业

云栖号案例库:【点击查看更多上云案例】 不知道怎么上云?看云栖号案例库,了解不同行业不同发展阶段的上云方案,助力你上云决策! 案例背景 美柚以让女人更美更健康为己任,致力成为最懂女人的互联网企业;美柚…

MaxCompute中如何使用OSS外部表读取JSON数据?

一、打开OSS,上传json文件 json文件内容展示: {"id":5644228109524316032,"sourceType":1} {"id":-736866360508848202,"sourceType":3} 二、登录DataWorks,建立外部表 建表语句: CRE…