硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

携程是如何把大数据用于实时风控的

  • 2020-04-24
  • 本文字数:3601 字

    阅读完需:约 12 分钟

携程是如何把大数据用于实时风控的

目前携程利用自主研发的风控系统有效识别、防范这些风险。携程风控系统从零起步,经过五年的不断探索与创新,已经可以有效覆盖事前、事中、事后各个环节。也从原来基于“简单规则+DB”,发展到目前能够支撑 10X 交易增长的智能化风控系统,基于规则引擎、实时模型计算、流式处理、M/R、大数据、数据挖掘、机器学习等的风控系统,拥有实时、准实时的风险决策、数据分析能力。

一、Aegis 系统体系


主要分三大模块:风控引擎、数据服务、数据运算、辅助系统。


风控引擎:主要处理风控请求,有预处理、规则引擎和模型执行服务,风控引擎所需要的数据是由数据服务模块提供的。


数据服务:主要有实时流量统计、风险画像、行为设备数据、外部数据访问代理,RiskGraph。数据访问层所提供的数据都是由数据计算层提供


数据运算:主要包括风险画像运算、RiskSession、设备指纹、以及实时流量、非实时运算。


数据运算所需的数据来源主要是:风控 Event 数据(订单数据、支付数据),各个系统采集来的 UBT、设备指纹、日志数据等等。


除了这些,风控平台还有非常完善的监控预警系统,人工审核平台以及 报表系统。

二、Aegis 系统架构

三、规则引擎

规则引擎包含 3 大功能,首先是适配层。


由于携程的业务种类非常多,而且每种业务都有其特性,在进入风控系统(Aegis)后,为了便于整个风控系统对数据进行处理,风控前端有一个适配器模块,把各个业务的数据都按照风控内部标准化配置进行转换,以适合风控系统使用。


在完成数据适配后。风控系统要进行数据的合并。


举个例子,当有一笔支付风控校验,支付 BU 只抛过来支付信息(支付金额、支付方式、订单号等)。但是不包含订单信息,这个时候就必须根据支付信息快速的查找到订单信息,并把这两个数据进行合并,以便规则、模型使用。大家知道,用户从生成订单到发起支付,其时间间隔从秒到天都有可能,当间隔时间短的时候,就会发生要合并的数据还没有处理完,所以订单数据从处理到落地要非常快。第二部就是要快速查找到订单数据,我们为订单信息根据生成 RiskGraph,可以快速精确定位到所需要的订单明细数据。


预处理在完成数据合并后,就开始准备规则、模型所需要的变量、tag 数据,在准备数据时,预处理模块会依赖后面我们要讲解的数据服务层。当然,为了提高性能,我们为变量、tag 的数据合理安排,优先获取关键规则、模型所需要的变量、tag 的数据。


大家知道,欺诈分子的特点就是一波一波的,风控系统需要能够及时响应,当发现欺诈行为后,能及时上规则防止后续类似的欺诈行为。所以,制定规则需要快速、准确,既然这样,那么就需要我们的规则能够快速上线,而且规则人员自己就可以制定规则并上线。还有就是规则与执行规则的引擎比较做到有效隔离,不能因为规则的不合理,影响到整个引擎。那么规则引擎就必须符合这些条件。


我们最后选择了开源 Drools,第一它是开源,第二它可以使用 Java 语言,入门方便,第三功能够用。


这样携程风控引擎 ,实现了 规则上线的高效携程风控实时引擎 通过使用 规则引擎 Drools,使其具有非常高的灵活性、可配置性,并且由于是 java 语法的,规则人员自己就可以制定规则并迅速上线。


由于每个风控 Event 请求,都需要执行数百个规则,以及模型,这时,风控引擎引入了规则执行路径优化方法。建立起并行+串行,依赖关系+非依赖关系的规则执行优化方法,然后再引入短路机制,使上千个规则的运行时间控制在 100ms。



规则的灵活性非常强,制定、上线非常快,但是单个规则的覆盖率比较低,如果要增加覆盖率就需要非常多的规则来进行覆盖,这个时候规则的维护成本就会很高,那么这个时候就需要使用模型了,模型的特点就是覆盖率覆盖率可以做到比较高,其模型逻辑可以非常复杂,但是其需要对其进行线下训练,所以携程风控系统利用了规则、模型的各自特点进行互补。


在目前的风控系统中主要使用了:Logistic Regression、Random Forest。两个算法使用下来,目前情况为:LR 训练变量区分度足够好的情况下,加以特征工程效果比较好。RF 当变量线性区分能力较弱的时候,效率比较高。所以使用 RF 的比例比较多。

四、数据服务层

数据服务层,主要功能就是提供数据服务,我们知道在风控引擎预处理需要获取到非常多的变量和 tag,这些变量和 tag 的数据都是由数据访问层来提供的。该服务层的最重要的目的就是响应快。所以在数据服务层主要使用 Redis 作为数据缓存区,重要、高频数据直接使用 Redis 作为持久层来使用。


数据服务层的核心思想就是充分利用内存(本地、Redis)


1、本地内存(大量固定数据,如 ip 所在地、城市信息等)


2、充分利用 Redis 高性能缓存


由于实时数据流量服务、风险画像数据服务的数据是直接存储在 Redis 中,其性能能够满足规则引擎的要求,我们这里重点介绍一下数据访问代理服务。


数据访问代理服务,其最重要的思想就是该数据被规则调用前先调用第三方的服务,把数据保存到 Redis 中,这样当规则请求来请求的时候,就能够直接从 Redis 中读取,既然做到了预加载,那么其数据的新鲜度及命中率就非常重要。我们以用户相关维度的数据为例,风控系统通过对用户日志的分析,可以侦测到哪些用户有登陆、浏览、预定的动作,这样就可以预先把这些用户相关的外部服务数据加载到 Redis 中,当规则、模型读取用户维度的外部数据时,先直接在 redis 中读取,如果不存在然后再访问外部服务。


在某些场景下,我们还结合引入 DB 来做持久化,当用户某些信息发生变化的时候,公共服务会发送一个 Message 到 Hermes,我们就订阅该信息,当知道该用户的某些信息发生修改,我们就主动的去访问外部服务获取数据放入 Redis 中,由于风控系统能够知道这些数据发生变化的 Message,所以这些数据被持久化到 DB 中也是 ok 的,当然,这些数据也有一个 TTL 参数来保证其新鲜度。在这种场景下,系统在 Redis 没有命中的情况下,先到 DB 中查找,两个地方都不存在满足条件的数据时,才会访问外部服务,这个时候,其性能、存储空间就可以得到优化。

五、Chloro 系统

Chloro 系统是数据分析服务也是整个风控系统的核心,数据服务层所使用到的数据,都是由 Chloro 系统计算后提供的。


主要分析维度主要包括:用户风险画像,用户社交关系网络,交易风险行为特性模型,供应商风险模型。



可以看到数据的来源主要有 hermes、hadoop、以及前端抛过来的各种风控 Event 数据。Listener 是用来接收各类数据,然后数据就会进入 CountServer 和 Real-Time Process 系统,其中和 RiskSession 的数据就先进入 Sessionizer ,该模块可以快速进行归约 Session 处理,根据不同的 key 归约成一个 session,然后再提交给 实时处理系统进行处理。当 Real Time Process 和 CountServer 对数据处理好后,这个时候分成了两部分数据,一部分是处理的结果,还有一份是原数据,都会提交给 Data Dispatcher,由它进行 Chloro 系统内部的数据路由,结果会直接进入到 RiskProfile 提供给引擎和模型使用。而原始数据会写入到 Hadoop 集群。


Batch Process 就利用 Hadoop 集群的大数据处理能力,对离线数据进行处理,当 Batch Process 处理好后,也会把处理结果发送给 Data Dispatcher,由它进行数据路由。


Batch Process 还可以做跨 Rsession 之间的数据分析。



RiskSession 的定义:量化、刻画 用户的行为,任何人通过任何设备访问携程的第一个 event 开始,我们认为 Rsession start 了,到他离开的最后一个 event 后 30 分钟之内没有任何痕迹留下,我们认为 Rsession end。


风控系统通过比较用户信息:Uid, 手机号, 邮箱,设备信息:


Fp(Fingerprint), clientId, vid, v, deviceId 来判断其是否是同一个用户,通过其行为信息:浏览轨迹, 历史轨迹来判断其行为相似度。


比如:用户在 PC 端下单、然后在手机 APP 里完成支付,这个对于 Chloro 是一个会话,这个会话我们称之为风控 Session,通过 Risksession 的定义,风控系统使用户的行为可以量化,也可以刻画。这样 Risksession 实际上可以作为用户行为的一个 Container。使用 RiskSession 就可以做到跨平台,更加有利于分析用户特征。



Risk Graph 是根据携程风控系统的特点开发出来的,Risk Graph 是一个基于 HBase 进行为存储介质的系统,比如,以用户为节点其值就是 HBase 用户表的 key,其每个列就是特性,然后根据用户的某个特性再创建一个 hbase 表,这样就创建了一个基于 HBase 的类 Graph 的架构。


所以该系统的一个核心思想是先创建各个维度的数据索引,然后根据索引值再进行内容的查找。目前风控系统已经创建了十几个维度的快速索引。

六、Aegis 其它子系统


Aegis 还有配置系统,用户可以在上面进行各种配置,如规则、规则运行路径,标准化、tag、变量定义、已经数据清洗业务罗辑等等,当然监控系统也是非常重要的,风控研发秉承着监控无处不在的设计理念,使其能够在第一时间发现系统的任何细小变化。


本文转载自技术锁话公众号。


原文链接:https://mp.weixin.qq.com/s/zk54_-DGyH5i7RUDRMIZCA


2020-04-24 17:252840

评论

发布
暂无评论
发现更多内容

TRAE 自定义模型服务商新增 Kimi,国际版现已支持超级模型 Grok-4(Beta)

火山引擎开发者社区

AI Agent热潮还能火多久?

Techinsight

再添荣誉!嘉为蓝鲸斩获可信云技术典型实践大奖,彰显智能运维实力

嘉为蓝鲸

AIOPS 智能运维 cmp 可信云大会

CMeas效能洞察平台:10分钟,从数据到研发度量报表

嘉为蓝鲸

DevOps 智能运维 效能洞察

TRAE SOLO Early Access 活动圆满落幕:四城联动,产品进化再加速!

火山引擎开发者社区

银行 / 证券 / 保险 RPA 怎么选?实操指南看这篇

Techinsight

RPA评测

制造业RPA选型全攻略

Techinsight

制造业

面试官:聊聊RAG的执行流程?

王磊

Canvas X Draw for Mac 矢量插图设计软件

晨光熹微

7月25日 矩阵起源亮相深圳DA数智大会,解读多模态大模型驱动的数据处理新方法

MatrixOrigin

嘉为蓝鲸 WeOps+Microsoft Teams:提升跨国运维信息传递精准度

嘉为蓝鲸

智能运维 #WeOps 一体化运维

Seed 端到端同声传译大模型:3s 延迟,实时声音复刻;昆仑万维 Mureka TTS 更新,支持音色设计丨日报

声网

【深入解剖Spring事务管理】原理、传播机制与12大失效场景避坑指南

不在线第一只蜗牛

spring

海淀“小孩哥”用文心快码打造少年编程开源社区

Comate编码助手

少儿编程 代码自动生成 AI 代码助手 AI 编程 文心快码

免费不限量,通义灵码已经全面支持 Qwen3-coder 模型,“效果很惊艳”

阿里巴巴云原生

通义灵码

「宇树科技」启动IPO,29家产业链公司齐飞!

机器人头条

特斯拉 人形机器人 具身智能 宇树科技 智元机器人

2025 制造业必看!当 RPA 遇上 AI Agent,这 5 类流程将被彻底重构

Techinsight

智能化

传奇IP续作:融合创新技术 数字娱乐产业迎来新发展机遇

江湖老铁

第十六章 Seo最简单的赚钱方式-广告

溪抱鱼

SEO

Data Agent:超越BI与AI的边界

字节跳动数据平台

Web前端入门:JavaScript 哪些地方需要 try...catch 异常捕获

量贩潮汐·WholesaleTide

前端 Web

微服务的10大问题

不在线第一只蜗牛

JavaScript 微服务

MyEMS能源管理系统后台配置-车间管理

开源能源管理系统

开源 能源管理系统

硬核来袭!「AI 进化论:智算时代 OS 的破局之路」首期直播上线

OpenAnolis小助手

centos AI 操作系统 龙蜥社区 智算时代

OpsPilot 动态知识图谱上线:让企业知识具备“理解力”与“关联力”

嘉为蓝鲸

智能运维 #WeOps OpsPilot

免费不限量,通义灵码已经全面支持 Qwen3-coder 模型,“效果很惊艳”

阿里云云效

KWDB多副本集群保姆级部署

KaiwuDB

嘉为蓝鲸CTeam敏捷协同平台:一站式实现Jira迁移与研发管理升级

嘉为蓝鲸

DevOps 智能运维 敏捷协同平台

C#解析JSON数据全攻略

量贩潮汐·WholesaleTide

C# json

Bonree ONE 发布直通车 | Bonree ONE多地多中心版本首发!全行业部署与应用深度解析

博睿数据

直播精彩回顾 | 拆解金融行业“隐形风险”,可观测性守护核心业务生命线

博睿数据

携程是如何把大数据用于实时风控的_语言 & 开发_技术琐话_InfoQ精选文章