如何向大家展示自己的工作成果-风控引擎
风控引擎是什么?
风控引擎需要有哪些功能?
如何评估一款引擎的优劣?
业务接入
规则判定
执行决策
总体架构
表达式是
规则引擎的应用场景主要包括以下特点:
流程分支非常复杂,条件判断非常多,常规的(if…else)编码难以实现,维护成本高。
不确定性需求非常多,频率非常高,随时都可能发生业务变更。
业务规则变更要求实时生效。
业务变更不依赖开发人员,可以由相关业务人员直接进行业务变更。
Groovy脚本引擎
选择核心的规则表达语言和规则执行引擎
进行策略的执行顺序:
在资源充足的前提下,一般来说策略的执行都是并行执行的,但是在一些情况下也会要求策略有先后的执行顺序。比如有些策略会依赖一些第三方数据源,这些数据在调用的时候就会产生成本,我们常见的有银行卡四要素、手机三要素等等。
所以有的时候为了节省成本,会将这些策略执行顺序后置,当前面的策略已经足够产出明确的结论时(比如拒绝这次申请/发帖等),就无需执行后续策略。在运算资源上也是同理,会优先执行对运算资源消耗小的策略。
Drools介绍
例子:
事实
今天12:00,mid为10的用户购买了大会员,当时的IP地址为127.0.0.1
基本概念:
场景
在一个场景(Scene)下,会持续不断的发生风险事件(Event)。
这些风险事件
风险事件
风险等级
规则
因子
决策
特征(因子)类型
- 参数因子
- 最
- 表达式因子
- 由参数因子以及其他因子衍生而来
- 累计因子
- 事件在时间纬度上的聚合
风控的一些基本概念
风控引擎的总体架构
在线打击与离线打击如何协作
执行决策
第二部分 Gaia管理后台展示
系统设计部分
引擎与策略同学的协作流程
有哪些模块,以及模块之间调用关系?
rule(规则), factor(因子)
lib(名单库), finger-job(设备指纹)
decisions-job(决策) filter-job(过滤)
gaia-job (异步)
第三部分 规则&因子的预编译 与 执行
开发期间遇到的问题:
多个规则并行执行时,如何减少
AST(抽象语法树)
定义:
任何一个表达式,都可以解析为一棵AST
生成:
- 词法分析(对表达式进行Scan, 切分为Token数组)
- 语法分析(将词法分析出来的Token数组转换成树形结构)
例子:
抽象语法su
生成:
预编译:将因子表达式处理为叶节点为参数因子的AST数
A = B + 10
B = C + 10
AST的几种节点类型:
identifier符号 (函数 + 变量)
表达式递归展开成为AST
- 如果节点为符号,并且符号为变量,则递归
- 否则,后序遍历
- AST的递归展开
- AST后序遍历,计算Hash值
- 将AST转换为DAG
- 顶点:树节点的hash值
- 边:节点与节点之间有依赖关系
- 顶点的入库:该顶点有几个依赖的节点
执行阶段
基于Hash值的图合并
合并图的拓扑排序
图的分层执行与结果缓存
因子的值获取
累计抽象
指标计算可以抽象总结出以下几个固有特征:
时间窗口
事件
过滤条件
主属性
副属性
聚合逻辑
第四部分 未来规划
实时数据的拓宽
- 因子特征的精细化监控
(1)细化因子的类型
(2)因子的完整度
以数据为中心
泰山感知
定期输出各指标的性能、数据量、成本等情况,指导实时指标计算系统优化的方向。对于不再使用的指标,及时进行下线清理。
中长周期累计因子
挑战:低区分度,长周期,UV类型聚合
Flink…
累计因子超出阈值后的回扫操作
规则优先级
特征获取成本 与 执行耗时 的权衡
https://www.jianshu.com/p/f4d4e2a4f88c
《Scikit-Learn与TensorFlow机器学习实用指南》
https://tensorflow.google.cn/tutorials/structured_data/time_series#baselines
tensorflow教程