1.本发明涉及计算机数据处理技术领域,特别涉及一种风控数据处理方法和装置。
背景技术:2.随着金融相关技术的发展,数字科技对金融业的赋能越来越成熟,业务越来越庞大,越来越多的风控决策被依赖,进而作为风险评估的重要指标,风控服务的高可用性和高质量变得越来越重要。
3.其中,策略人员对风控决策的实时监控尤为重要,在通过率偏低时需要及时发现,降低拒绝率提升通过率,提升业务量;在通过率偏高时也需要及时发现,提升拒绝率降低通过率,保证每日可控的放款量;因此业务监控非常关键。
4.现有的风控监测均以报表形式,多以天或者小时为单位进行统计,存在t+1或h+1的延迟,并且需要策略人员的人工监控和统计,人力成本过高,业务变化感知延迟;并且由于业务日志的数据量庞大且复杂,即使利用大数据技术进行分析也存在着计算量庞大,统计时间过长的问题,进而风控监测过程难以实现实时性的要求。
5.因此,如何提升风控监测的效率,实现实时性的要求便成为亟待解决的问题。
技术实现要素:6.有鉴于此,本发明提供一种风控数据处理方法和装置,利用流数据处理的实时性优势,提升风控监测的效率,满足风控监测的实时性要求。
7.本发明的技术方案是这样实现的:
8.一种风控数据处理方法,包括:
9.持续接收风控业务日志消息队列mq作为主流数据,其中,所述风控业务日志mq由风控系统发出的业务日志组成;
10.根据所述主流数据中的每条日志记录中的属性节点名称,将所述主流数据拆分成分别针对不同属性节点名称的不同子流数据;
11.在每个所述子流数据中,根据每条所述日志记录中的时间戳按照时间窗口范围,并根据每条所述日志记录中的分组参数,对所述时间窗口范围内的所有分组参数相同的所述日志记录进行属性统计;
12.输出所述属性统计的统计结果。
13.进一步,所述属性节点名称包括:
14.参数校验、年龄拦截、身份四要素验证、外部数据源可用性、黑名单判断、多头判断、模型得分;其中,
15.所述参数校验表示日志记录的内容包含输入参数规范程度的信息;
16.所述年龄拦截表示日志记录的内容包含年龄是否符合要求的信息;
17.所述身份四要素验证表示日志记录的内容包含身份四要素是否一致的信息;
18.所述外部数据源可用性表示日志记录的内容包含风控模型所需要的且并非用户
填写的由所述风控系统以外的数据源提供的数据是否查得的信息;
19.所述黑名单判断表示日志记录的内容包含是否被列为黑名单的信息;
20.所述多头判断表示日志记录的内容包含是否存在同时在多家机构贷款的信息;
21.所述模型得分表示日志记录的内容包含所述风控模型所获得的分数。
22.进一步,所述的根据所述主流数据中的每条日志记录中的属性节点名称,将所述主流数据拆分成针对不同属性节点名称的不同子流数据,包括:
23.对所述主流数据中的每条所述日志记录附加与该条所述日志记录中的属性节点名称相对应的标签;
24.根据所述标签,将所述主流数据拆分成针对于不同属性节点名称的不同子流。
25.进一步,所述分组参数为进行所述属性统计所依据的标准所属的机构的名称数据。
26.进一步,所述时间窗口范围为30秒至1小时。
27.进一步,所述风控数据处理方法基于flink流处理框架,所述主流数据为flink主流数据,所述子流数据为flink子流数据。
28.进一步,所述的输出所述属性统计的统计结果,包括:
29.利用flink的sink输出所述统计结果。
30.进一步,所述方法还包括:
31.根据所述统计结果执行报警流程。
32.一种风控数据处理装置,包括:
33.消息接收模块,用于持续接收风控业务日志消息队列mq作为主流数据,其中,所述风控业务日志mq由风控系统发出的业务日志组成;
34.数据分流模块,用于根据所述主流数据中的每条日志记录中的属性节点名称,将所述主流数据拆分成分别针对不同属性节点名称的不同子流数据;
35.属性统计模块,用于在每个所述子流数据中,根据每条所述日志记录中的时间戳按照时间窗口范围,并根据每条所述日志记录中的分组参数,对所述时间窗口范围内的所有分组参数相同的所述日志记录进行属性统计;以及,
36.结果输出模块,用于输出所述属性统计的统计结果。
37.一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上任一项所述的风控数据处理方法中的步骤。
38.一种电子设备,包括:
39.至少一个处理器;以及,
40.与所述至少一个处理器通信连接的存储器;其中,
41.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如上任一项所述的风控数据处理方法中的步骤。
42.从上述方案可以看出,采用本发明的风控数据处理方法和装置,基于数据流的实时计算,实现了风控数据的实时统计,统计的时间窗口从天或者小时压缩到了以分钟为单位,提升了风控监测的实时性。同时,基于风控监测的实时性,监控的变化趋势为策略人员
及时调整策略提供了准确依据。基于风控监测的实时性,有助于分析风控对象的人群特点,例如年龄通过率过低,可能存在用户偏青年化的趋势,四要素检验通过率偏低可能存在乱填信息的用户较多的情况或者虚假用户的情况;多头较多,即存在同时在多家机构贷款情况,则说明逾期的可能性较大。基于风控监测的实时性,可以实现实时的风险预警,相比于t+1和h+1的传统监控而言,对异常情况能够实现提前发现,及时介入,从而整体降低金融系统风险。基于风控监测的实时性,能够得到细化到分钟级别的业务报表,对于贷前风控、盈利预测等业务提供准确的实时性数据。另外,基于风控监测的实时性,通过风控模型分分段统计绘制出模型分分布的psi变化曲线,可以观察风控模型的稳定性,作为是否更新风控模型的有力依据。
附图说明
43.图1为本发明实施例的风控数据处理方法流程图;
44.图2为本发明实施例的风控数据处理装置的结构示意图;
45.图3为本发明实施例中的电子设备的结构示意图。
具体实施方式
46.为了使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
47.如图1所示,本发明实施例的风控数据处理方法,主要包括以下步骤:
48.步骤1、持续接收风控业务日志mq(message queue,消息队列)作为主流数据,其中,风控业务日志mq由风控系统发出的业务日志组成;
49.步骤2、根据主流数据中的每条日志记录中的属性节点名称,将主流数据拆分成分别针对不同属性节点名称的不同子流数据;
50.步骤3、在每个子流数据中,根据每条日志记录中的时间戳按照时间窗口范围,并根据每条日志记录中的分组参数,对时间窗口范围内的所有分组参数相同的日志记录进行属性统计;
51.步骤4、输出属性统计的统计结果。
52.在可选实施例中,属性节点名称包括参数校验、年龄拦截、身份四要素验证、外部数据源可用性、黑名单判断、多头判断、模型得分等。
53.其中,参数校验表示日志记录的内容包含输入参数规范程度的信息。例如,必填项是否填写,格式是否正确,枚举值等是否规范。
54.年龄拦截表示日志记录的内容包含年龄是否符合要求的信息。例如,若风控系统中设定小于23岁不符合要求,则当年龄小于23岁的用户利用风控系统进行验证时,风控系统发出的对应的日志记录中包含年龄不符合要求的信息,参见后续例1中的日志格式中的“result”:”0”(表示不通过被拦截);当年龄达到23岁的用户利用风控系统进行验证时,风控系统发出的对应的日志记录中包含年龄符合要求的信息,例如对应于后续例1中的日志格式中,“result”的值为“1”(表示通过不被拦截)。
55.身份四要素验证表示日志记录的内容包含身份四要素是否一致的信息。其中,身份四要素是指姓名、身份证号码、银行卡号和手机号码。例如,风控系统接收用户的身份四
要素信息并进行核对:如果姓名、身份证号码、银行卡号和手机号码不一致,则风控系统发出的对应的日志记录中包含身份四要素不符合要求的信息;如果姓名、身份证号码、银行卡号和手机号码一致,则风控系统发出的对应的日志记录中包含身份四要素符合要求的信息。在可选实施例中,可以用“0”作为身份四要素不符合要求的信息(“0”表示身份四要素不符合要求),用“1”作为身份四要素符合要求的信息(“1”表示身份四要素符合要求)。
56.外部数据源可用性表示日志记录的内容包含风控模型所需要的且并非用户填写的由风控系统以外的其它数据源提供的数据是否查得的信息。例如,风控系统根据用户信息从个人征信系统查询用户的个人征信报告:如果查得则表明个人征信系统这一外部数据源可用,风控系统发出的对应的日志记录中包含个人征信系统可用的信息;如果未查得则表明个人征信系统这一外部数据源不可用,风控系统发出的对应的日志记录中包含个人征信系统不可用的信息。在可选实施例中,可以用“0”作为个人征信系统不可用的信息(“0”表示个人征信系统提供的数据不可查得),用“1”作为个人征信系统可用的信息(“1”表示个人征信系统提供的数据可查得)。
57.黑名单判断表示日志记录的内容包含是否被列为黑名单的信息。例如,风控系统根据用户信息查询用户是否被列为黑名单:如果用户被列为黑名单,则风控系统发出的对应的日志记录中包含用户被列为黑名单的信息;如果用户未被列为黑名单,则风控系统发出的对应的日志记录中包含用户未被列为黑名单的信息。在可选实施例中,可以用“0”作为用户被列为黑名单的信息(“0”表示用户被列为黑名单),用“1”作为用户未被列为黑名单的信息(“1”表示用户未被列为黑名单)。
58.多头判断表示日志记录的内容包含是否存在同时在多家机构贷款的信息。例如,风控系统根据用户信息查询用户是否在多家机构贷款(其中用户贷款机构的数量可以进行设定,例如设定用户在三家或者三家以上机构同时存在贷款行为则认定为在多家机构贷款):如果用户在多家机构贷款,则风控系统发出的对应的日志记录中包含用户在多家机构贷款的信息;如果用户未在多家机构贷款,则风控系统发出的对应的日志记录中包含用户未在多家机构贷款的信息。在可选实施例中,可以用“0”作为用户在多家机构贷款的信息(“0”表示用户在多家机构贷款),用“1”作为用户未在多家机构贷款的信息(“1”表示用户未在多家机构贷款)。
59.模型得分表示日志记录的内容包含风控模型所获得的分数。其中,风控模型,是由算法(如逻辑回归)以及大量样本由机器学习技术训练出来的模型,可对用户计算出一个关于贷款方面的风险控制分数。例如,若用户的风控模型得分为99分,则风控系统发出的对应的日志记录中包含风控模型得分为99分的信息,参见后续例2中的日志格式中的“score”:”99”。
60.在可选实施例中,步骤2的根据主流数据中的每条日志记录中的属性节点名称,将主流数据拆分成针对不同属性节点名称的不同子流数据,包括:
61.步骤21、对主流数据中的每条日志记录附加与该条日志记录中的属性节点名称相对应的标签;
62.步骤22、根据标签,将主流数据拆分成针对于不同属性节点名称的不同子流。
63.在可选实施例中,分组参数为进行属性统计所依据的标准所属的机构的名称数据。
64.在可选实施例中,时间窗口范围为30秒至1小时,优选地,时间窗口范围为1分钟。
65.在可选实施例中,在时间窗口范围的基础上,为确保因为mq阻塞导致的接收延迟带来的超出时间窗口范围的数据均能够被统计,增加水位线参数,其中,水位线是指延迟多久到来的数据可以划分到当前时间窗口范围内。例如,假设时间时间窗口范围为1分钟,那么在每个子数据流中,根据每条日志记录中的时间戳按照1分钟的时间窗口范围进行属性统计,然而,当出现mq阻塞时,时间戳本属于前一个1分钟的时间窗口范围的日志记录会出现延迟到当前1分钟的时间窗口范围内时才会被接收到,而前一个1分钟的时间窗口范围的子流数据已经执行了统计,这种情况下,当增加水位线参数后,在当前1分钟的时间窗口范围内时才会被接收到的延迟的日志记录将会在当前1分钟的时间窗口范围内进行统计。其中,水位线参数的大小不超过时间窗口范围,优选地,水位线参数为10秒。当时间窗口范围设定为1分钟并且水位线参数设定为10秒时,若在10:00:00至10:01:00的时间窗口范围内接收到的时间戳在9:59:50至10:00:00的日志记录将会在10:00:00至10:01:00的时间窗口范围内进行属性统计。
66.在可选实施例中,上述风控数据处理方法的各个步骤基于flink流处理框架,其中,主流数据为flink主流数据,子流数据为flink子流数据。
67.其中,flink是一种开源流处理框架,其核心是用java和scala编写的分布式流数据流引擎。flink以数据并行和流水线方式执行任意流数据程序,flink的流水线运行时系统可以执行批处理和流处理程序。
68.在可选实施例中,步骤4的输出属性统计的统计结果,包括:
69.利用flink的sink输出统计结果。
70.其中,sink为sink是flink三大逻辑结构之一,其功能是将flink处理后的数据输出到外部系统。
71.在可选实施例中,上述方法还可进一步包括:
72.步骤5、根据统计结果执行报警流程。
73.例如,当某一个统计结果达到某一设定阈值时,发出报警信息;或者,对某些属性统计的统计结果进行综合分析得到的结果达到某一设定阈值时,发出报警信息。
74.以金融风控为例,风控决策过程包括多个业务环节(对应于属性节点名称),例如参数校验、年龄拦截、身份四要素校验、外部数据源加载、黑名单、多头判断、模型跑分等。本发明实施例的核心在于,在风控系统的不同的业务环节进行业务埋点,风控系统发送业务日志至风控业务日志mq,flink消费风控业务日志mq,对不同业务环节中的日志记录进行分组计算,聚合得到统计结果,再发出统计结果mq,此时的统计结果mq可以理解为监控的指标,之后,可以利用告警引擎消费统计结果mq,实现告警规则监控以及指标落库,由于落库已是经过flink聚合后的指标,因此可视化报表也变的极其容易。
75.本发明实施例还同时提供了一种风控数据处理装置,如图2所示,该风控数据处理装置主要包括消息接收模块1、数据分流模块2、属性统计模块3和结果输出模块4。其中,消息接收模块1,用于持续接收风控业务日志mq作为主流数据,其中,风控业务日志mq由风控系统发出的业务日志组成。数据分流模块,用于根据主流数据中的每条日志记录中的属性节点名称,将主流数据拆分成分别针对不同属性节点名称的不同子流数据。属性统计模块3,用于在每个子流数据中,根据每条日志记录中的时间戳按照时间窗口范围,并根据每条
日志记录中的分组参数,对时间窗口范围内的所有分组参数相同的日志记录进行属性统计。结果输出模块4,用于输出属性统计的统计结果。
76.继续参见图2所示,在可选实施例中,风控数据处理装置还可进一步包括报警模块5,报警模块5用于根据统计结果执行报警流程。
77.利用本发明实施例的风控数据处理方法和装置,通过对不同业务环节的业务埋点,实现了不同业务环节指标的采集,利用flink实现指标的实时计算及聚合,之后,可通过flink消费聚合的结果进行校验规则判断,触发预警,以及指标的全量落库,支撑后续可视化报表。
78.在实际使用场景中使用本发明实施例的风控数据处理方法和装置时,首先通过业务埋点,风控系统将监控的环节以发送mq的方式发出日志消息。其中,消息体标准如下,包括业务环节(service_node)、分组属性(统计的维度,group_key)、业务属性(若需要复杂计算,app_log)、时间戳(timestamp)等。其中,业务环节对应于属性节点名称,分组属性对应于分组参数。
79.flink的任务配置如下:
80.第一步,通过自定义客户端手动消费mq的方式接入mq(一种消息中间件)数据源(例如风控系统),实现flink中的richparallelsourcefunction(并发数据源接口,自定义客户端需继承的父类),编写mq的客户端订阅消费;
81.第二步,消费mq(风控业务日志mq)启动后,flink会拿到数据源的数据流datastream,作为主流(主流数据),因为此时拿到的数据流datastream是所有的埋点消息(包括了多个业务环节);
82.第三步,根据业务环节(对应于业务日志中的属性节点名称)分流,过程是首先处理主流,对消息(主流中的每一条业务日志)进行打标,此时通过业务埋点的业务环节属性进行打标,从打标的主流中分出相应的子流进行后续处理;其中,打标即附加与该条日志记录中的属性节点名称相对应的标签,打标环节是本发明实施例中的必要环节,只有对其中的各条业务日志进行打标后,才能根据所打的标记从主流中分出子流,否则若直接以业务环节(业务日志中的属性节点名称)作为依据则主流无法被复用(从一个主流中同时分出多个子流)。
83.第四步,绑定时间窗口,利用消息传过来的时间戳(事件时间,业务日志记录中的时间戳),而不用处理时间,因为在高并发情况下,mq可能会出现积压,消息被延迟消费,事件时间可能会溢出处理时间的一个时间窗口,导致计算误差,因此绑定时间窗口一定要用事件时间,关于时间粒度,对于金融行业来说1分钟的时间粒度最佳,时间太短则粒度太细,参与计算的数据过少造成聚合效果不好,时间太长则监控延迟过长且对内存要求更高,1分钟的粒度也是告警可能延迟的时间,可基于行业标准对时间粒度进行调整。
84.第五步,按分组属性(分组参数)分组,进行统计计算,例如调用量(申请借款单量)、非法四要素(姓名、手机号、银行卡号、身份证号不匹配)、风控模型分数区间统计(根据分值分为多个等级区间,如优为[100,90]、良为(90,80],在不同分数区间的统计次数)、通过率等等。
[0085]
第六步,构建输出sink,将消息通过mq(统计结果mq)发出,其中,消息体中包含内容如下:
[0086]
业务环节(service_node)、业务维度(group_key)、业务角度(例如参数校验环节可以包括手机格式不正确、银行卡号为空等不同的统计角度)(monotor_type)、统计时间(exectime)、统计次数(该环节该维度该角度该时间窗口内的统计次数)(execcount)。
[0087]
至此flink任务内容完成。
[0088]
将编排好的flink任务部署运行,根据业务体量调整算力资源;风控系统发出的业务日志的消息经过实时计算后发出统计结果mq,已经是一分钟的粒度汇聚完的统计结果。
[0089]
之后,可将相关告警统计结果mq,将相关告警引擎接入上述部署的flink,并接收消费统计结果mq,进行预警处理。首先,在告警引擎中配置好相关告警规则,告警规则基于聚合的结果也就是1分钟的粒度为基础配置,例如,通过率低于80%的普通告警规则、10分钟内出现3次通过率低于80%的复杂告警规则等。
[0090]
告警引擎的实现方案如下,将消费到的消息(统计结果mq)进行匹配是否参与某一个告警规则的判断,若参与,则进行告警规则处理,对于普通规则,直接进行阈值判断,超过阈值即触发告警;对于复杂告警规则,则从分布式缓存中获取前几分钟的数据,进行规则判断,如取前十分钟的数据点,超过阈值的数量是否超过规则设置,超过即触发报警,并将当前的数据点存入分布式缓存中,支撑后续的预警使用。
[0091]
例1:
[0092]
以下以年龄的业务环节(属性节点名称)为例对本发明实施例的风控数据处理方法和装置进行说明。
[0093]
下游的资产方或者app(例如网贷软件)在贷出资金前需要查询用户的风险等级,此时需要调用风控系统,调用风控服务传入用户资料(其中包括年龄),在风控系统的处理中,其中一个业务环节是年龄的拦截,例如age(年龄)<23周岁会被拦截,风控系统的年龄校验完后会发送mq日志消息到风控业务日志mq中,日志格式例如:
[0094]
{
[0095]“service_node”:”年龄拦截”,//代表环节
[0096]“group_key”:”**信托”,//统计的维度,每个资产方或者每个app的维度去统计,每个维度之间是隔离的
[0097]“timestamp”:1608112572,//拦截的时间
[0098]“result”:”0”//拦截的结果,这是业务属性,可以自己定制,这里result代表拦截的结果,1代表通过,0代表不通过
[0099]
…
[0100]
}
[0101]
基于flink编写mq的客户端自动消费风控业务日志mq(继承flink中的richparallelsourcefunction实现mq的客户端)。
[0102]
flink从风控业务日志mq获取到大量消息,包括各个环节、各个资产方(或app)的消息,之后进入以流计算过程:
[0103]
flink从风控业务日志mq获取到大量消息称为主流(主流数据)。
[0104]
下一步,针对年龄的风控,需要从主流中筛出年龄拦截环节的相关日志记录,将与年龄拦截环节不相关的日志记录过滤掉。首先对主流中的每条日志记录打上用于标识年龄的标签,以便于后续对数据的辨识。
[0105]
相关代码例如:
[0106]
outputtag<t>agetag=new outputtag<t>("我是age的标签"){};
[0107]
singleoutputstreamoperator<t>processedstream=streamoperator.process(new processfunction<t,t>(){
[0108]
@override
[0109]
public void processelement(tt,context context,collector<t>collector)throws exception{
[0110]
………
[0111]
context.output(agetag,t);
[0112]
}
[0113]
});
[0114]
之后,从带标签的数据流中筛出年龄拦截的数据,相关代码例如:
[0115]
datastream<t>agetagstream=processedstream.getsideoutput(agetag);
[0116]
这样流出的数据流agetagstream即为年龄拦截环节的数据。
[0117]
下一步,指定水位线以及时间窗口依据的时间字段,时间窗口依据的时间指定“事件时间”,意思就是通过事件发生的时间作为划分窗口的依据,水位线是指延迟多久到来数据可以划分到当前窗口,例如指定水位线是10秒,有一条数据由于mq阻塞等情况晚来了几秒,本应该在上一个时间窗口进行处理,但上一个时间窗口中并未接收到,如果不设置水位线则本窗口会丢弃这条数据,然而在指定水位线为10秒时,在10秒内的这条数据就保留在当前时间窗口中进行处理。相关代码例如:
[0118][0119]
下一步,指定维度(分组),按维度分组统计,因为不同维度(分组)的数据在一起统计没有意义,例如建设银行和农业银行的总的通过率是80%,而实际上可能是农行的通过率为100%,而建行的通过率为60%,所以要按维度(分组)隔离。在本发明实施例中,维度(分组)是指所参照的评估方,其中评估方例如上述说明中的银行,评估方也包含互联网金融平台,如京东金条、蚂蚁借呗等。相关代码例如:
[0120]
.keyby(t::getgroup_key)
[0121]
下一步,指定时间窗口大小,多长时间作为一个时间窗口,针对数据量大的系统时间窗口尽量小些,否则一个时间窗口内积压的数据量太大会对服务造成压力,优选地,对于金融风控领域取1分钟,即每分钟做一次统计,计算前一分钟的数据流最为理想。相关代码例如:
[0122]
.window(tumblingeventtimewindows.of(time.seconds(60)))
[0123]
下一步,关于年龄拦截环节的分流数据的流处理。相关代码例如:
[0124][0125]
如上述代码内容,这里设计了计数器的相关逻辑,其中设置两个字段,一个是总调用量total,一个是通过量succsum,重写计数器add方法时,判断result=1,total和succsum都+1,否则只有total+1,计算完后输出一个行row,第一个字段是调用总次数,第二个字段是通过次数,第三个字段是通过率(通过次数/总次数)。
[0126]
下一步,通过sink将管道输出的row,发到指定的地方,例如发到mq(统计结果mq),或者直接落库。优选地,发到mq。本发明实施例采用消费mq和发送到mq的方式能够实现系统之间的解耦并降低系统开销成本,基于此,告警引擎直接消费统计结果mq进行预警即可。
[0127]
下一步,告警引擎消费到消息后,根据告警规则进行预警,对于年龄拦截的告警,在已知通过率的情况下,直接判断是否低于设定的阈值就可以触发预警了,例如通过率低于80%就报警。例如在当前1分钟的时间窗口内的年龄高于23岁的人数不足总人数的80%时就触发报警。
[0128]
报警手段可采用现有技术实现,例如报警引擎可以接入各种即时通讯类软件,或者通过短信、邮件形式发送。
[0129]
例2:
[0130]
以下以模型分的业务环节(属性节点名称)对风控模型分分布统计为例对本发明实施例的风控数据处理方法和装置进行说明。
[0131]
下游的资产方或者app(例如网贷软件)在贷出资金前需要查询用户的风险等级,此时需要调用风控系统,调用风控服务传入用户资料,在风控系统的处理中,其中一个业务环节是模型分,例如某个用户的风控模型分为score=99,风控系统将运行风控模型产生的得分以mq日志消息发送到风控业务日志mq中,日志格式例如:
[0132]
{
[0133]“service_node”:”模型分”,//代表环节
[0134]“group_key”:”**信托”,//统计的维度,每个资产方或者每个app的维度去统计,
每个维度之间是隔离的
[0135]“timestamp”:1608112572,//拦截的时间
[0136]“score”:”99”//风控模型分[0,100]
[0137]
…
[0138]
}
[0139]
基于flink编写mq的客户端自动消费风控业务日志mq(继承flink中的richparallelsourcefunction实现mq的客户端)。
[0140]
flink从风控业务日志mq获取到大量消息,包括各个环节、各个资产方(或app)的消息,之后进入以流计算过程:
[0141]
flink从风控业务日志mq获取到大量消息称为主流(主流数据)。
[0142]
下一步,针对模型分的风控,需要从主流中筛出模型分环节的相关日志记录,将与模型分环节不相关的日志记录过滤掉。首先对主流中的每条日志记录打上用于标识模型分的标签,以便于后续对数据的辨识。
[0143]
相关代码例如:
[0144]
outputtag<t>scoretag=new outputtag<t>("我是模型分的标签"){};
[0145]
singleoutputstreamoperator<t>processedstream=streamoperator.process(new processfunction<t,t>(){
[0146]
@override
[0147]
public void processelement(tt,context context,collector<t>collector)throws exception{
[0148]
………
[0149]
context.output(scoretag,t);
[0150]
}
[0151]
});
[0152]
之后,从带标签的数据流中筛模型分的数据,相关代码例如:
[0153]
datastream<t>scoretagstream=processedstream.getsideoutput(scoretag);
[0154]
这样流出的数据流scoretagstream即为模型分环节的数据。
[0155]
下一步,指定水位线以及时间窗口依据的时间字段。相关代码例如:
[0156][0157]
下一步,指定维度(分组),按维度分组统计。相关代码例如:
[0158]
.keyby(t::getgroup_key)
[0159]
下一步,指定时间窗口大小。相关代码例如:
[0160]
.window(tumblingeventtimewindows.of(time.seconds(60)))
[0161]
下一步,关于模型分环节的分流数据的流处理。相关代码例如:
[0162][0163][0164]
如上述代码内容,这里设计了计数器的相关逻辑,其中设置11个字段,totle(总次数)、score90(90至100分段)、score80(80至90分段)、
…
、score0(0至10分段),重写计数器add方法时,总次数每次都加1,判断score>=90则score90增加1,判断score>=80并且score<90则score80增加1,以此类推,计算完后输出一个行row,第一个字段是90至100分段的占比,第二个字段是80至90分段的占比,以此类推,得到每个分段的占比。
[0165]
下一步,通过sink将管道输出的row,发到指定的地方,例如发到mq(统计结果mq),或者直接落库。优选地,发到mq。本发明实施例采用消费mq和发送到mq的方式能够实现系统之间的解耦并降低系统开销成本,基于此,告警引擎直接消费统计结果mq进行预警即可。
[0166]
下一步,告警引擎消费到消息后,根据告警规则进行预警。对于模型分psi的告警,在已知样本训练时各分段占比(预期占比)的情况下,计算出当前消息中各分段的占比与训练时占比的psi值,psi=sum[(ac
‑
ex)*in(ex/ac)]。其中,sum[]表示对所有分数段的[]中的数求和,举例来说,对90至100分数段进行(ac
‑
ex)*in(ex/ac)计算,对80至90分数段进行(ac
‑
ex)*in(ex/ac)计算,以此类推,最后对所有分数段的(ac
‑
ex)*in(ex/ac)计算结果进行求和。其中,ac为实际的占比,ex为预期的占比,in()表示以常数e为底对()中的数取对数,如果得到的psi小于10%,则无需更新风控模型,如果得到的psi在10%至25%,则需要进行检查,发出关于检查风控模型的报警,如果得到的psi大于25%,则需要更新风控模型,发出更新风控模型的报警。
[0167]
报警手段可采用现有技术实现,例如报警引擎可以接入各种即时通讯类软件,或者通过短信、邮件形式发送。
[0168]
基于打标分流的技术,例1和例2是可以编程在一个flink任务中的,在此为说明计算逻辑,故分开举例。
[0169]
本发明实施例还同时提供一种非易失性计算机可读存储介质,该非易失性计算机可读存储介质存储指令,该指令在由处理器执行时使得所述处理器执行如上述说明中的风控数据处理方法中的各个步骤。
[0170]
本发明实施例还同时提供一种执行风控数据处理方法的电子设备,如图3所示,该电子设备包括:至少一个处理器10以及存储器20。存储器20和至少一个处理器10通信连接,例如存储器20和至少一个处理器10通过总线连接。存储器20存储有可被至少一个处理器10执行的指令,所述指令被至少一个处理器10执行,以使至少一个处理器10执行如上述说明中的风控数据处理方法中的各个步骤。
[0171]
采用本发明实施例的风控数据处理方法和装置,基于数据流的实时计算,实现了风控数据的实时统计,统计的时间窗口从天或者小时压缩到了以分钟为单位,提升了风控监测的实时性。同时,基于风控监测的实时性,监控的变化趋势为策略人员及时调整策略提供了准确依据。基于风控监测的实时性,有助于分析风控对象的人群特点,例如年龄通过率过低,可能存在用户偏青年化的趋势,四要素检验通过率偏低可能存在乱填信息的用户较多的情况或者虚假用户的情况;多头较多(存在同时在多家机构贷款情况),说明逾期的可能性较多。基于风控监测的实时性,可以实现实时的风险预警,相比于t+1和h+1的传统风控而言,对异常情况能够实现提前发现,及时介入,从而整体降低金融系统风险。基于风控监测的实时性,能够得到细化到分钟级别的业务报表,对于贷前风控、盈利预测等业务提供准确的实时性数据。另外,基于风控监测的实时性,通过风控模型分分段统计绘制模型分分布的psi变化曲线,可以观察风控模型的稳定性,作为是否更新风控模型的有力依据。
[0172]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。