风控模型及特征的上线部署方法

序言:
作为年后的首篇实操干货文章,番茄风控一如既往向业内小伙伴输出相关的干货文章。有实操能落地,有数据可撸码,继续将会是番茄风控提供给各位小伙伴的业内标配内容。

近期,我们花费了时间容整理了目前业内各位小伙伴关心的内容,本次文章是其中一个问题就是模型跟规则在现有的风控系统内是如何规范上线的,基于此,我们给大家带来了这样的一篇内容。本次文章内容翔实,章节就有四大部分,内容绝对干货满满,实操性十足。老规矩,文章中提及的更详情(数据集+代码内容)可以直接到知识课堂中下载学习。

本文有理论,有方法,有实操,还有数据集跟代码。此外在知识星球中更会手把手讲解具体的实操内容,包括数据展示(excel)、数据案例跟代码(python),基本一看就懂,一跑就会。

因为完整内容较长,本次整体的内容将分成六大部分跟大家介绍,整体目录如下:
第一部分.特征的上线计算
1.1.特征离线计算
1.2.特征实时计算

第二部分.模型的上线部署
2.1.模型离线部署
2.2.模型实时部署

第三部分.特征和模型的一致性校验
3.1.模型正式启用前的一致性校验
3.2.上线后的监控和校验

第四部分.实操–pmml文件转换和一致性校验
4.1.PMML文件的转换
4.2.特征和模型分的一致性校验

正文:
风控模型线下开发好后,接下来就是上线部署的流程,上线部署关系到模型的稳定性和可控性,是需要去规范化,细心做的一个环节。本文主要介绍的就是模型和特征常见的上线方式,以及上线后如果做数据校验,如何监控等问题。在介绍各种方法时,我们会分适用的场景,部署的步骤和细节,以及方法的优缺点等进行阐述。

Part 1.特征的上线计算
模型上线分为特征计算和模型部署两部分,特征计算好才能跑模型进行预测打分,其中特征计算又分为实时计算和离线计算,模型部署分为实时部署和离线部署。特征是否要实时计算取决于是否需要实时调用收费数据源或使用当天的实时数据,若特征为实时计算,则模型必须要实时部署,若特征为离线计算,模型可根据需求选择实时还是离线部署。下面先讲一下特征的上线计算的方法:

一.特征离线计算
特征离线计算不需要用到当天的实时数据,只需要往前回溯的历史数据,例如贷中的B卡分一般用T+1的申请贷后数据,贷后的C卡一般用T+7的催收贷后行为数据。

1.用sql进行计算,即使用sql进行离线的特征开发。sql中的count,sum,case when等用法可开发一些统计类的特征(如下图所示),这种方式相当于把底层数据源清洗,创建中间表,特征开发都放在数仓里进行,建模同学在数仓里完成开发工作后,可以让管理数仓的同学设置定时跑批任务,例如每天(T+1)在凌晨跑出一批用户的特征供当天风控使用。用sql的好处在于可大批量定时自动的进行特征计算,且可保存每天的记录供后面回溯使用,但缺点在于sql这种查询语言,在开发一些复杂逻辑的特征时比较吃力,逻辑校验起来也不如python灵活,另外如果跑批量很大,会占用一定的数仓资源。
在这里插入图片描述
2.本地python计算,相比于sql,用python做特征开发会更加省力,可减少代码工作量,能衍生出各种计算逻辑的特征,当然缺点在于很难能像数仓那样设置定时跑批任务,且受到本地内存,CPU,python处理速度等限制,跑大批量样本时比较耗时间。所以此方法不适合线上调用数据的场景,适合根据线下不定期的需求来做特征计算。

二.特征实时计算
前面提到如果需要调用实时的数据,就必须用实时计算的方式,那对于T+1这种历史数据,其实也可以用实时计算,比如每天定时准备好特征计算需要的数据源,当天用这个数据源来做实时计算,想当于数据源是离线准备好的,特征是实时算的。

1.用java做实时计算,相当于线下用python开发的特征,再用java来实现一遍,这么做看起来很麻烦,还得重写一遍逻辑,其实是为了考虑计算的性能,面对大的数据量和特征维度,python处理数据的速度不如java,哪怕只是多个一两秒,对于线上的风控都有很大影响。这种计算方式一定要做好特征的一致性比对,包括数据源,计算逻辑,特征缺失映射逻辑,数值精度等。另外这种方式不仅增加了开发的工作量,其实也影响了后面新增特征的上线及时性,建模同学每次要加新的特征,还得先提需求,再进行开发,最后校验上线,非常影响模型上线的进度。

2.用python计算特征。对于轻量化的特征计算显然用python更合适,我们可以利用flask,django等框架在外部搭建一个python服务,在这个服务里进行特征计算,建模同学线下开发特征的代码可以直接移值到这个服务中,省去了二次开发的工作量。然后创建一个API接口,让java直接通过接口来调用计算好的特征值。这种方法不仅减少了开发资源,也可以省去计算逻辑的一致性校验,并且灵活程度更高,每次要增加新的特征,建模同学可直接在python服务里进行操作,不过此方法要求建模同学有较强的工程开发能力,或者通过开发同学协助上线。

Part2.模型的上线部署
一.模型离线部署
离线部署适用的场景有这么几个:
1.贷中环节的审批和额度管理,例如B卡用到的是用户历史信用数据,可在离线环境跑好T+1的模型分供当天审批或额度决策使用。

2.贷后环节的催收场景,例如常用的迁徙率模型,还款预测模型,这些只需要T+1,或者根据使用需求离线跑出模型分即可。

常见的离线部署方式:
1.用sql在数仓里部署,这种方式只适合逻辑回归(LR)传统评分卡,由于LR评分卡的跑分逻辑为每个特征对应评分的加总,所以可用sql来实现这种逻辑(如下图所示),利用sql里的case when…then…的语法写出特征在每个箱体对应的分数,最后加上基础分即得出模型分。
在这里插入图片描述
这种方式特征+模型都在数仓里进行部署,具体的步骤为:

1)对底层数据源做清洗,合并等操作,生成可供特征衍生的中间表。
2)用sql对中间表做特征开发工作,生成一张特征宽表。
3)对这张特征宽表用case when的方法得到每个特征对应的分数,最后对分数进行加总得到模型分。
4)让数仓同学根据以上逻辑配置跑批任务,例如每天定时跑出所有目标用户的模型分。

用sql来做模型部署最大的好处在于简单,不需要额外的开发能力。但这种方法只适合LR这种传统评分卡,对于机器学习模型不适用,并且在上一part也提到用sql做特征开发有局限性,一些逻辑复杂的特征sql实现起来很麻烦。

2.本地python部署,具体的步骤为:
1)数据准备,在本地对一批用户进行取数,跑特征,生成入模特征变量宽表。
2)模型载入,读取python的model或者pkl文件。
3)预测打分,对这批用户进行打分,然后交给交给业务方使用。
这种方法因为在python环境里部署,所以对任何算法都适用,且实现起来简单,跟线下开发模型步骤类似。但它的问题跟离线计算特征一样,很难做到定时跑批,并且本地内存资源有限,跑大批量用户的模型分时非常耗时间,所以一般用在线下决策场景,例如跑一批目标用户的B卡分给策略同学做提额,或者在催收场景,每周对入催用户跑分做催收等级划分,给贷后同学做参考等。

二.模型实时部署
实时部署的使用场景在实时审批阶段,例如授信和支用审批,常见的A卡,反欺诈模型都需要实时部署在线上。
常见的实时部署方式:
1.跨平台部署–PMML
线下我们开发模型是在python环境中,那怎么把模型移植到线上的生产环境,例如java环境,这时候就要用到pmml的方法。pmml是数据挖掘的一种通用规范,是使用XML格式来描述我们生成的机器学习模型,简单说就是先在python环境里将模型转成pmml格式文件,然后用java代码来加载读取这个模型做预测。具体的部署步骤为:
1)在python环境里开发好模型。
2)在自己的本地配置java环境,安装JDK,并在python里安装sklearn2pmml包
3)利用sklearn2pmml将python的model文件转成pmml文件
4)将pmml文件交给开发同学,开发同学用java来读取pmml并做预测

pmml是目前跨平台部署模型最常用的方法,无论你的模型是sklearn,R还是sparkMLlib生成的,都可以转成pmml格式,具有广泛的支持性,同时具有可读性,用文本编辑器可直接打开pmml文件查看里面的内容。不过pmml也有以下两个缺点,在使用时需要注意:
1)pmml为了实现跨平台,牺牲了很多平台独有的优化,pmml文件要比在python环境的模型文件大很多,并且pmml文件的加载速度也比python文件慢很多。尤其对于大规模的机器学习模型,lightgbm,xgboost这种,生成的pmml文件很容易达到几百MB,导致在java环境加载预测会非常慢,所以在训练模型时,很有必要限制入模特征的数量和模型复杂度来减小文件容量。
2)pmml文件和python的model文件在预测时会有一点偏差,这是由于pmml用的是64位浮点,python用的是32位浮点,会在预测概率的小数4-6位上有稍许偏差。不过这个偏差并不大,且出现的概率也比较小。如果必须要保证两者结果一致,可以在做分数转换时将概率四舍五入至4位小数,这样可接近100%一致。

2.利用flask,django等框架创建python的API接口,跟上文提到的特征实时计算一样,模型的预测在python环境里进行,然后通过API接口输出预测结果,开发同学通过这个接口用java来调用。这种部署方式就不需要跨平台了,可以让特征衍生,模型预测都在python环境里进行,不会出现pmml的精度偏差和文件加载速度的问题,在预测效率和结果一致性上都有保障。

3.风控决策平台或算法平台部署,例如蚂蚁金服的PAI机器学习平台,可通过workflow的方式自助式搭建模型,实现快速部署。并且可以跟阿里云的Dataworks实现无缝打通,建模同学可完成数据处理,特征开发,模型训练,到部署上线的一站式建模,降低了开发和业务部门的沟通成本和开发资源。另外有些公司可通过外购或自己研发一套决策平台,在决策平台上可实现LR评分卡这种简单模型的部署。
在这里插入图片描述
以上3种部署方法我们更倾向于推荐创建API接口这种方式,它实现了线下开发和线上部署都在同一套环境中进行,相当于一整套从数据处理到模型预测的外部服务,在可扩展性,灵活性,数据校验一致性,稳定性等方面都比较好。
剩余部分Part 3与Part 4的部分,主要包括的还有特征跟模型的一致性校验问题以及实操部分,实操部分为模型特征的上线部署监控及使用csv格式的文件实现pmml文件转换等内容。

Part 3.特征和模型的一致性校验
一.模型正式启用前的一致性校验
当特征和模型部署完成后,需要做特征和模型线下结果和线上结果的一致性校验,上线前先用一批离线测试样本校验,校验没有问题后模型上线进行空跑,等空跑一段时间积累了线上样本,再用线上的样本做一次校验,校验两次都没问题模型才能正式启用。对于校验一致性的维度,我们主要关注这三个:数据层,特征层,模型层。
1)数据层:XXXX
2)特征层:XXXX
3)模型层:XXXX

二.上线后的监控和校验

线上环境会发生各种异常问题,如数据源API接口调用失败,入模变量误操作,三方数据源出问题等,为了保证及时发现线上问题,我们还需要采取一些监控手段。
XXX

Part 4.实操–pmml文件转换和一致性校验
一.PMML文件的转换
二.特征和模型分的一致性校验
XXX
在这里插入图片描述
在这里插入图片描述
关于本次文章更详细的内容,欢迎大家到知识星球中查看:
在这里插入图片描述
另外关于本文进一步的实操内容,更有相关的数据集提供给大家练习,详细的数据可以到星球进行下载学习:
在这里插入图片描述

~原创文章

end

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

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

相关文章

金融风控实战——社交网络分析

社交网络分析 上节课有同学希望能讲一些设备指纹的内容,所以这节课我们先讲一下设备指纹,作为反欺诈图谱的基础。 设备指纹 可以把手机设备理解成一个人,像人一样有身份证号和名字(设备序列号等),没有化…

风控数据测试概要

数据测试简介 简而言之,数据测试就是对数据的质量进行测试,查看该质量能不能被我方接受。在风控中,数据测试的主要目的是测试对方数据源是否可以较好地区分出我方申请用户的好坏,衡量质量的指标主要包括:Lift-Chart、A…

三分钟看懂大数据风控中用户行为数据的采集、分析及应用( 转 )

据统计,目前银行传统的风控模型对市场上70%的客户是有效的, 但是对另外30%的用户,其风控模型有效性将大打折扣。 大数据风控作为传统风控方式补充,主要利用行为数据来实施风险控制, 用户行为数据可以作为另外的30%客…

CAR-T药物|疗法适应症|市场销售-上市药品前景分析

对患有癌症的人来说,能够幸运地度过5年大关是一种成功,而能够成功地度过10年大关则是一种奇迹。Emily作为全球第一个接受CAR-T治疗成功的白血病儿童患者,至今已成功摆脱癌症11年之久。 ①CAR-T细胞治疗(Emily Whitehead治疗案例时…

股票数据分析查询接口,股票数据接口,沪深港股,股票api查询

一、接口介绍 查询历史数据的分析统计。本接口数据仅用于学习分析,不得用于对外展示!根据股票代码、日期获取股票历史数据及相关分析,返回日期、开盘价、收盘价、最高价、最低价、成交量、成交额、换手率、涨跌幅等,可绘制相应日…

微信AI助手

首先,感谢GitHub上的开源大佬!对微信AI助手项目我修改了少许部分,以实现在自己服务器上部署。这里是我的项目地址。 1、准备服务器 1.1 服务器密码及安全组规则修改 这里我是用的是腾讯云国内服务器,有条件的同学可以直接选择国…

Andrew Ng和OpenAI教你写prompt

课程地址: https://learn.deeplearning.ai/chatgpt-prompt-engb站搬运: https://www.bilibili.com/video/BV1No4y1t7Zn 教学人员:Lsa Fulford, Andrew NG LLM的两种样式 Base LLM:基于文本训练数据预测下一个词的概率&#xff0…

Android之输入银行卡号判断属于哪个银行

一&#xff1a;效果图&#xff1a; 二&#xff1a;实现步骤&#xff1a; 1.xml布局实现&#xff0c;两个edittext就行了 <LinearLayoutandroid:id"id/lin_yhkh"android:layout_width"fill_parent"android:layout_height"48dp"android:layou…

[项目管理-6]:软硬件项目管理 - 项目沟通管理(渠道、方法)

作者主页(文火冰糖的硅基工坊)&#xff1a;文火冰糖&#xff08;王文兵&#xff09;的博客_文火冰糖的硅基工坊_CSDN博客 本文网址&#xff1a;[项目管理-6]&#xff1a;软硬件项目管理 - 项目沟通管理 &#xff08;沟通渠道&#xff09;_文火冰糖的硅基工坊的博客-CSDN博客 目…

一键定制个性化语音,微软的AI语音落地实践

近日&#xff0c;微软与周迅AI语音红丹丹公益项目发起人鹿音苑文化传播公司、以及来自微软及各界的150名余志愿者&#xff0c;将创作的首批人工智能有声内容&#xff0c;包括鲁迅、老舍、萧红、朱自清等作家的一系列经典作品、红丹丹文化期刊&#xff0c;正式捐赠给北京市红丹丹…

Python 深度学习AI - 声音克隆、声音模仿、模拟特朗普声音唱《See You Again》,Real-Time-Voice-Cloning项目的安装与使用

Python 深度学习AI - 声音克隆、声音模拟 第一章&#xff1a;环境准备与安装① Real-Time-Voice-Cloning 项目源码下载② requirments 必要库安装③ TensorFlow 安装④ PyTorch 安装⑤ FFmpeg 下载环境变量配置⑥ 下载训练包第二章&#xff1a;效果测试① 命令行合成音频测试&a…

微软小冰的服务器在哪,微软小冰解锁三大小米入口

原标题&#xff1a;微软小冰解锁三大小米入口 微软小冰与小米小爱加深合作&#xff0c;解锁更多小米入口。具体内容请关注今天的小熊微科技【每日必读】栏目。 微软小冰解锁三大小米入口 好闺蜜&#xff0c;就是要形影不离。9月4日&#xff0c;微软小冰宣布解锁更多小米入口&am…

关于微软小冰

今天在微博上看到微软小冰的一篇博文&#xff0c;原文如下&#xff1a; 小冰是什么&#xff1f;参见百科&#xff1a; 微软Bing搜索中国团队2014年5月29日发布一款智能聊天机器人&#xff0c;并取名“微软小冰”。添加这个机器人的微信账号为好友之后&#xff0c;便可以与这个…

【小沐学NLP】Python实现聊天机器人(ALICE)

&#x1f37a;NLP开发系列相关文章编写如下&#x1f37a;&#xff1a;1&#x1f388;【小沐学NLP】Python实现词云图&#x1f388;2&#x1f388;【小沐学NLP】Python实现图片文字识别&#x1f388;3&#x1f388;【小沐学NLP】Python实现中文、英文分词&#x1f388;4&#x1…

微软小冰 | 接入微信公众号平台初体验

文章目录 智能回复&#xff08;聊天&#xff09;基础设置行业知识自主学习智能知识库需求识别引擎什么是需求识别引擎智能知识库与需求识别引擎区别 技能插件语音翻译功能介绍体验 拍照翻译功能介绍体验 测关系功能介绍体验 拼颜值功能介绍体验 人工客服推荐阅读 微软小冰人工智…

沈向洋回归,从微软独立的小冰要弯道超车了

文 | 静静 定西 出品 | 网易科技《态℃》栏目组 一条消息&#xff0c;让沈向洋在八个月后再次“刷屏”。 微软今日宣布&#xff0c;将人工智能小冰业务分拆为独立公司运营&#xff0c;并委任沈向洋为新公司董事长&#xff0c;李笛为首席执行官。 大佬明星产品&#xff0c;会带来…

基于ZelinAI的周报小助手

ZelinAI是一家领先的人工智能公司&#xff0c;专注于创新的AI解决方案。ZelinAI团队由科学家、工程师和领域专家组成&#xff0c;拥有丰富的经验和专业知识。提供自然语言处理、计算机视觉、数据分析和智能助理等领域的解决方案&#xff0c;帮助客户实现业务增长和效率提升。在…

微信小程序bindtap与catchtap的区别

1、什么是事件 (1) 事件是视图层到逻辑层的通讯方式。 (2) 事件可以将用户的行为反馈到逻辑层进行处理。 (3) 事件可以绑定在组件上&#xff0c;当达到触发事件&#xff0c;就会执行逻辑层中对应的事件处理函数。 (4) 事件对象可以携带额外信息&#xff0c;如 id,dataset,touch…

国内镜像版4.0上线啦

chatGPT国内中文镜像官方原版在线免费体验A conversational AI system that listens, learns, and challengeshttps://chatx.taiyangyukeji.com

基于ChatGPT API的PC端软件开发过程遇到的问题的分析

如果喜欢本文章&#xff0c;记得收藏哦&#xff01; 关注我&#xff0c;一起学Java。 一、基于ChatGPT API的PC端软件开发过程遇到的问题的分析 最近这个OpenAI公司推出的GPT-4.0模型真是太火了。当然由于OpenAI目前还没有正式全面对外开放GPT-4.0 API&#xff0c;所以本次使用…