APP下载

基于Flink与Kafka的信贷逾期预测系统的设计与实现

2023-08-26韦海兰黄杰

电脑知识与技术 2023年21期
关键词:大数据

韦海兰 黄杰

关键词:大数据;Flink;Kafka;CatBoost算法

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2023)21-0049-03

1 概述

大数据技术的快速发展,给金融业带来了全新的发展机遇。大数据第三代计算引擎Apache Flink是一个基于内存的分布式处理框架,可对无界和有界数据流进行所有状态计算,在进行实时的流计算方面性能表现优异,是Apache软件基金会目前最活跃的项目之一,为企业不同业务应用场景提供一站式的大数据解决方案[1]。金融行业尤其是银行具备海量的客户交易相关数据,在研究与实施大数据具有先天优势。整合金融单位自身的数据资源优势,从业务的不同属性出发,在大数据平台利用机器学习算法,深入发掘客户的价值和潜在的风险信息,对于提高其经营管理水平和风险防范能力有重要意义。

2 背景

2.1 信贷逾期预测问题

当银行收到贷款申请时,必须根据申请人的个人资料做出贷款审批决定。银行的决策涉及两种类型的风险:一是如果申请人有可能偿还贷款,那么不批准贷款会导致银行业务损失。二是如果申请人不太可能偿还贷款,即他可能违约,那么批准贷款可能会给银行带来信贷风险,解决上述问题的办法是使用历史贷款申请人的信息以及相关申请信息进行分类学习,识别出其中的“逾期”模式,据此做出贷款决策,如拒绝贷款或批准贷款。

2.2 大数据背景下的机器学习

目前传统机器学习算法的特点主要有:一是样本独立分布、离线、假设计算资源不受限制(例如可以把全部训练数据加载到主存);二是训练生成的模型是静态的,要想适应样本数据的变化就要重新进行学习。如今,各种新兴的大数据应用如医疗信息学和军事应用、智能信息检索、自动驾驶等,通过数量不断增长的智能设备生成大量分布式数据。大多数情况下,这些数据是瞬时的,甚至可能不会永久存储。传统离线型的机器学习算法已不适应大数据背景下样本不断变化的机器学习任务。

利用Apache Flink流计算引擎进行机器学习模型训练,一是可以进行在线实时计算,充分利用计算资源;二是可以进行动态模型计算,在线实时增量学习、更新模型状态。目前已有许多Flink实时流计算引擎用户画像系统[2]、分布式实时推荐算法[3]、风险评估系统[4-5]等场景的应用。Apache Flink已提供了Flink平台机器学习库FlinkML,已经实现了基础的机器学习算法,如Kmeans算法、逻辑回归算法和SVC算法等。本文利用CatBoost算法实现大数据背景下的信贷逾期预测问题。

3 应用架构设计及系统流程

3.1 应用架构设计

本系统基于贷款实时数据采用rest-framework体系结构开发,贷款数据通过maxwell实时传输到kafka 主题中,Flink实时流计算引擎实时读取kafka主题中的数据,再调用DataStream算子处理数据流后保存至MySQL中,并利用机器学习算法CatBoost训练数据建立预测模型,最后应用服务器调用模型接口得到实时贷款申请信息的预测结果,并进行可视化展示。应用架构如图1所示。

3.2 系统框架流程

基于大數据的信贷逾期预测计算流程可分为:数据获取及预处理、模型数据的转换、模型训练和模型预测,如图2所示:

4 系统框架的设计与实现

银行向“有风险”的申请人发放贷款是信贷损失的最大来源。信贷损失是指当借款人拒绝还款或带着欠款逃跑时,贷款人损失的金额。违约的借款人给贷款人造成的损失最大。如果能够识别出这些有风险的贷款申请人,就可以减少信贷损失。通过机器学习有利于挖掘贷款违约背后的驱动因素,进一步识别出有风险的申请人。

4.1 样本数据结构的设计

本文以天池金融风控-贷款违约预测赛大赛中提供的信贷数据作为样本数据,选取部分特征进行模型训练,删除了部分与模型不相关的、对一组高度相关的特征进行去重。研究贷款申请人的数据,预测是否可能违约,以此决定是否通过贷款。具体步骤如下:

4.2 数据预处理

通过Maxwell实时数据管道获取MySQL中更新及变化的数据,传入Kafka主题中,Flink连接集群环境创建Kafka消费者读取Kafka主题中的数据,把数据转换成JsonObject类型,再调用DataStream算子对数据流做处理,比如去除重复值、异常值处理和特征转换等,最后再创建一个kafka生产者把DataStream算子处理后的数据保存到Kafka主题中。

4.3 CatBoost 算法应用

4.3.1 模型管理

模型管理模块主要包括模型训练和模型上传两部分,实现步骤主要如下:

1) 从数据管理模块获取通过特征工程筛选下来的特征数据。

2) 设置机器学习参数,通过CatBoost算法训练模型,查看测试集AUC,根据预测结果决定是否保留当前模型。

3) 上传审核通过的模型,将模型信息加入模型信息表中,前端页面可查看模型信息列表。

4) 在Django后端加载模型,调用当前模型进行逾期预测。模型使用的测试集的AUC为0.7385。

4.3.2 模型预测和结果可视化

可使用贷款预测功能来预测本次贷款是否有信用风险,从而判断是否批准这次贷款,主要实现步骤如下:

1) 录入用户数据保存至oAuth_credituser(信贷用户表)中。

2) 通过贷款逾期预测模块进行预测。

3) Django会把预测结果上传到前端。

4) 通过预测结果来决定是否批准这次贷款。

5 系统运行效果展示

5.1 用户管理

系统管理员可以添加用户、修改用户信息、搜索用户和删除用户,如图6所示:

5.2 批量上传信贷数据

系统管理员可以选择上传文件的格式,比如Ex?cel、csv或txt等格式的文件,然后选择导入文件即可上传信贷数据,如图7所示:

5.3 逾期预测结果可视化

单击逾期预测按钮,右上角会弹出预测的结果。如果是0,则代表当前贷款数据信息没有逾期的风险;如果是1,则代表当前用户有逾期的风险。如图8 所示:

6 结束语

随着Flink技术在智能金融领域的落地生根,给大数据技术在金融领域带来更广阔的应用前景和充足的发展动力。大数据技术与智能金融领域融合发展,其应用场景也将愈发丰富,例如典型的场景有金融风控、金融客户画像等。本文应用机器学习算法实现了信贷逾期风险的预测,在今后的研究中会根据评估模型的预测效果进行参数调优,提高预测效果,并应用更多的机器学习算法开发更多的金融智能模型,实现更丰富的功能。

猜你喜欢

大数据
浅谈大数据在出版业的应用
“互联网+”对传统图书出版的影响和推动作用
大数据环境下基于移动客户端的传统媒体转型思路