【算法业务】互联网风控业务中的拒绝推断场景算法应用分享(涉及半监督算法、异常检测、变分自编码、样本权重自适应调整、迁移学习等)
1. 业务目标和任务描述
该项目是很早期的一个工作,属于互联网信贷风控场景,研究并应用信贷中的拒绝推断任务,处理方式也许对于目前的一些业务还有参考意义,因此这里做下分享。拒绝推断是指在信贷业务中,利用已知的接受客户(即通过信贷审批的客户)的信息来推断被拒绝客户(未通过信贷审批的客户)的表现,以更准确地评估信贷风险和建立更有效的信用评估模型。
因此业务的总目标是构建有效的用户评分模型,评估贷款申请者是否有能力如期偿还贷款。具体要做的事情是从已建立的审批体系中拒绝的用户中捞回好用户,更好的管理资产,打标资产。
任务的初始想法:我们往往只能观察到部分用户的贷后行为,无法获取被拒绝的申请者的贷后表现。仅使用部分有贷后的数据,为估计总体而建立的评分模型存在参数估计的偏差,导致好的用户被拒绝,造成损失。也就是我们通常说的二八,20%用户被通过,80%的用户被拒绝,这80%中可能蕴含着数量可观的好用户。在我们当前的场景下,通过的用户比例更少,平均只有5%左右,95%都被拒绝了。因此造成了很大的资源浪费。
基于该思路,再来分析下为什么需要拒绝推断?
首先是样本完整性
- 在实际信贷业务中,通常只有接受客户的完整数据,包括他们的信用特征和还款表现等。而被拒绝客户只有申请时的部分信息,没有后续的还款表现数据。
- 拒绝推断可以弥补被拒绝客户数据的缺失,使样本更具完整性,从而提高信用评估模型的准确性和可靠性。
其次是风险评估准确性
- 仅基于接受客户的数据建立的信用评估模型可能存在偏差,因为它没有考虑到被拒绝客户的潜在风险。
- 通过拒绝推断,可以将被拒绝客户的特征纳入分析,更全面地了解不同风险水平的客户群体,从而提高风险评估的准确性。
2. 任务执行描述
2.1 核心问题
为了能够有效捞回被拒绝的用户,我们需要解决解决两个核心问题:
(1)如何利用被拒绝的用户样本信息,使得能够对总体数据建立较完备的模型。 (2)如何加强模型对坏用户的识别能力。
下图展示了当数据不够完备的情况下,对于模型估计的偏差影响:
可以看出,当有足够更丰富的数据来描述数据分布P(x)时,我们可以获得更加可靠的模型对于真是数据的分布估计。
2.2 样本特征数据及筛选
- 用户基础信息(年龄、学历、身份证所属身份等)
- 信用卡/消费信息(持卡、信用卡账单、线下消费分期等)
- 通讯录及通信行为(手机号归属城市、通讯录亲属信息、注册时长、近期呼入呼出行为及时长等)
- Applist信息(高危app安装、母婴等各类型app安装情况、APP风险分类情况等)
- 设备指纹(设备号相关风险信息、手机型号、设备GPS信息等)
- 申请行为风险(总拒绝次数、同邮箱/号码等关联多idno、短期频繁申请行为、申请时段信息等)
- 案件平台信息(基于关系网络的黑名单、设备共用、几度邻居的逾期情况等)
- 三方分(反欺诈、多头、借款逾期信息、征信、电商等)
采用IV筛选
其中,pyi是这个组中响应客户(风险模型中,对应的是违约客户,总之,指的是模型中预测变量取值为“是”或者说1的个体)占所有样本中所有响应客户的比例,pni是这个组中未响应客户占样本中所有未响应客户的比例,#yi是这个组中响应客户的数量,#ni是这个组中未响应客户的数量,#yT是样本中所有响应客户的数量,#nT是样本中所有未响应客户的数量。 从这个公式中我们可以体会到,WOE表示的实际上是“当前分组中响应客户占所有响应客户的比例”和“当前分组中没有响应的客户占所有没有响应的客户的比例”的差异。
采用随机森林筛选
看每个特征在随机森林中的每棵树上做了多大的贡献,然后取平均值,最后比较不同特征之间的贡献大小。贡献度的衡量指标包括:基尼指数(gini)、袋外数据(OOB)错误率作为评价指标来衡量。
2.3 模型处理流程
2.3.1 初筛模型
存在大量被拒绝的用户,“拒绝(未知贷后表现)的用户”是“有贷后表现用户”的约20倍 模型特征可以全量调取,自有+包年特征 目标:在捞回更多好用户的同时,拒绝一部分逾期风险大的用户。
初筛模型选择以及相应的算法分析讨论:
1. 模型主体采用 半监督架构
2. 将无监督与监督模型有机结合形成半监督框架
模型讨论:
(1)变分自编码(VAE)
(2)标签传播(LP)
(3)异常检测(OD)
3. 监督模型
(1)Stacking(GBDT&LR)
(2)自适应提升模型(AdaXgboost)
2.3.1.1 半监督学习(SSL)
半监督学习有两个样本集,一个有标记,一个没有标记.分别记作 Lable={(xi,yi)},Unlabled={(xi)}.并且数量上,L<<U. 1.单独使用有标记样本,我们能够生成有监督分类算法。 2.单独使用无标记样本,我们能够生成无监督聚类算法。 3.两者都使用,在1中加入无标记样本,增强有监督分类的效果;同样的,在2中加入有标记样本,增强无监督聚类的效果。 在我们的实践中,半监督分类学习侧重于在有监督的分类算法中加入无标记样本/信息来实现半监督分类。也就是在无类标签的样例的帮助下训练有类标签的样本,获得比只用有类标签的样本训练得到的分类器性能更优的分类器,弥补有类标签的样本不足的缺陷,其中类标签yi取有限离散值yi∈{c1,c2,···,cc},cj∈N。
SSL的成立依赖于模型假设,当模型假设正确时,无类标签的样例能够帮助改进学习性能。SSL依赖的两种主要假设:
(1)聚类假设(Cluster Assumption) 当两个样例位于同一聚类簇时,它们在很大的概率下有相同的类标签.这个假设的等价定义为低密度分离假设(Low Sensity Separation Assumption),即分类 决策边界应该穿过稀疏数据区域,而避免将稠密数 据区域的样例分到决策边界两侧.平滑假设有点类似聚类假设,位于稠密数据区域的两个距离很近的样例的类标签相似。
(2)流形假设(Manifold Assumption) 将高维数据嵌入到低维流形中,当两个样例位于低维流形中的一个小局部邻域内时,它们具有相似的类标签。许多实验研究表明当SSL不满足这些假设或模型假设不正确时,无类标签的样例不仅不能对学习性能起到改进作用,反而会恶化学习性能,导致 SSL的性能下降。.
2.3.1.2 流形假设(变分自编码)
变分自编码器(VAEs)是学习低维数据表示的强大模型,将高维的数据映射到低维, 使该低维的数据能够反映原高维数据的某些本质结构特征。关于VAE的算法原理可以参考我们之前的文章《生成式模型与判别式模型对比(涉及VAE、CRF的数学原理详述)》。
2.3.1.3 标签扩散模型(本场景下某种程度上的聚类假设)
标签扩散模型基于图的结构,将已知标签信息从已标记的节点传播到未标记的节点。其核心思想是利用节点之间的相似性或连接关系,通过扩散的方式推断未标记节点的标签。在一个图中,节点代表数据对象,边表示节点之间的关系。如果两个节点之间存在较强的连接或相似性,那么它们更有可能具有相同的标签。标签扩散模型通过在图上进行迭代传播,逐渐将标签信息从已标记的节点传播到未标记的节点,直到达到一定的收敛条件。在仅有部分数据有标签的情况下,标签扩散模型可以利用已标记数据的信息来推断未标记数据的标签,从而提高学习效果。
从某种角度看,标签扩散过程中,如果节点之间的连接紧密且具有相似的标签传播趋势,可能会在一定程度上形成类似聚类的效果。即具有相似标签的节点在传播过程中会逐渐聚集在一起。事实上,基于共同特征、向量相似度等都可以建立图结构。
2.3.1.4 异常检测(结构信息)
异常检测方法介绍【1】
KNN 异常检测
原理:认为异常点距离正常点比较远,通过计算每个数据点的 K 近邻距离(或平均距离),与阈值比较或取距离排序前 n 个最大的作为异常点,计算距离一般使用欧式距离或角度距离。
HBOS(基于直方图的异常检测)
过程类似朴素贝叶斯模型,假设特征相互独立,对每个特征作直方图,连乘样例特征在各个直方图中的频率得到生成概率。优点:速度快,适合大数据情形。缺点:特征相互独立条件强,现实中可能不符合,不适合异常数据过多的情形。
LOF(局部异常因子)
首先找出每个数据点的 K 个近邻,然后计算 LOF 得分,得分越高越可能是异常点。LOF 是一个比值,分子是 K 个近邻的平均局部可达密度,分母是该数据点的局部可达密度。可达密度中,分子是 K - 近邻的个数,分母是 K - 近邻可达距离之和。A 到 B 的可达距离定义为 A 和 B 的真实距离与 B 的 k - 近邻距离的最大值。
OneClassSvm
当训练数据只有一类 positive(或 negative)时,需要学习训练数据的边界。假设最好的边界要远离特征空间中的原点,目标转换到特征空间就是找一个离原点比较远的边界。
iForest(孤立森林)
适用于异常点较少的情况,采用构造多个决策树的方式进行异常检测。对数据集有放回抽样,构建二叉树时随机选取一个特征和分割点,将数据分类,直至达到一定深度或叶子节点只包含一个数据点。数据点在多个二叉树上的平均深度越浅越可能是异常值。只适合检测全局异常点,不适合检测局部异常点。
2.3.1.5 监督模型结合无监督信息(半监督学习架构)
1. 第一种模型结构
Variational autoencoder + Gradient boosting machine + Logistic regression + Class weight
模型优势互补: LR属于线性模型,易处理离散特征,容易并行化,可以轻松处理上亿条数据,但是学习能力十分有限,需要大量的特征工程来增加模型的学习能力。GBDT也是一种经常用来发现特征组合的有效思路。将训练完GBDT的叶子节点对应为LR的每一维特征,由于GBDT从根节点到叶子节点的路径,每个分割节点都是选择使得平方损失误差达到最小的节点和分割点,所以该条路径上特征的组合具有一定的区分性。
2. 第二种模型结构
基于Anomaly detection family模型结构【2】: k-NearestNeighbor , Local Outlier Factor ,Histogram-based Outlier Detection,One class svm ,Isolated forest
3. 第三种模型结构
Adaboost思想结合xgboost、ks在场景中的应用
2.3.1.6 模型应用结论
第三种模型结构结合VAE+OD信息,获得的KS最高,线上应用最佳。
2.3.2 审批模型
拒绝的用户与有贷后表现的用户比例差不多1:1。 模型特征加入了部分按条收费的第三方数据。 目标:尽可能识别出逾期风险大的用户进行排除,特别强调对坏人的识别能力。
审批模型有几种处理方式:
第一种采用多分类:
第二种采用多模型融合思路:
第三种:面向top3 level bad rate & rank order优化的AdaXgboost,能够基于错分的数据进行采样权重的动态调整。
第四种:采用TrAdaBoost(Transfer AdaBoost)【3】迁移学习思路。TrAdaBoost 的基本思想是利用已有的源域数据和少量的目标域数据进行学习,从而提升目标域任务的性能。它通过调整源域样本的权重,使得那些对目标域任务更有帮助的源域样本在后续的学习中起到更大的作用。在每一轮迭代中,TrAdaBoost 会根据当前分类器在目标域数据上的错误率来调整源域和目标域样本的权重。如果一个源域样本被错误分类,那么它的权重会降低;如果一个目标域样本被错误分类,那么它的权重会增加。
3. 参考材料
【1】Anomaly detection and three most used algorithms
【2】XGBOD: Improving Supervised Outlier Detection with Unsupervised Representation Learning
【3】Boosting for Transfer Learning
相关文章:

【算法业务】互联网风控业务中的拒绝推断场景算法应用分享(涉及半监督算法、异常检测、变分自编码、样本权重自适应调整、迁移学习等)
1. 业务目标和任务描述 该项目是很早期的一个工作,属于互联网信贷风控场景,研究并应用信贷中的拒绝推断任务,处理方式也许对于目前的一些业务还有参考意义,因此这里做下分享。拒绝推断是指在信贷业务中,利用已知的接受…...

Windows PowerShell相关笔记
之前我写的一篇,把我的PS(power shell)该了配置文件 pyqt5vscode 配置坑笔记_vscode使用pyqt command failed-CSDN博客 文件里写的自动加载conda #region conda initialize # !! Contents within this block are managed by conda init !!…...
力扣9.24
2207. 字符串中最多数目的子序列 给你一个下标从 0 开始的字符串 text 和另一个下标从 0 开始且长度为 2 的字符串 pattern ,两者都只包含小写英文字母。 你可以在 text 中任意位置插入 一个 字符,这个插入的字符必须是 pattern[0] 或者 pattern[1] 。…...

NRF21540—低功耗蓝牙,蓝牙mesh、Thread和Zigbee和2.4 GHz私有协议范围扩展射频前端模块
nRF21540是一款射频前端模块(FEM),可用于改善短距离无线产品的传输范围和连接鲁棒性。作为一款辅助性设备,nRF21540是一种“即插即用型”的无线传输范围扩展器,可与nRF52和nRF53系列的高级多协议无线SoC搭配使用,所需的外部器件数…...

2024最新Linux Socket编程
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket&am…...
Linux下的驱动开发二
一、IO模型 I/O 模型在操作系统中用于处理应用程序与设备驱动之间的数据传输。I/O 通信模型的核心是解决程序与设备之间如何高效、合理地进行数据通信。不同的模型通过阻塞、非阻塞、同步、异步的方式来控制数据流和处理 I/O 请求。 注:在驱动开发中可以定义一个全…...

【JAVA报错已解决】 Java.lang.ArrayIndexOutOfBoundsException
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...
2024 CSP 游记
J 组 初赛 早上也是五点钟就起来 打游戏 了。 考点在八达小学,除了感觉小、破、旧就没有其他感觉( 我妈也是成功的给我提前一小时到达考场。 拿到试卷后,瞄一眼,咋这么简单,和一本通的模拟卷难度一样?…...

双十一有什么推荐好物?,这些你不能错过的宝藏好物推荐
随着双十一的临近,这场盛大的购物狂欢蓄势待发!为了让大家不在琳琅满目的商品中徘徊,琪琪用心归纳了一份购物清单,分享那些我亲自使用过,觉得必须拥有的商品。 这些商品不仅价格公道,而且质量上乘…...

NSSCTF [HUBUCTF 2022 新生赛]simple_RE(变种base64编码)
文件无壳 拖入IDA中 shiftF12查看可疑字符串 发现两串字符串 一看这两个等于号就猜测是base64编码 进入主函数看看 这段代码是一个简单的 C 语言程序,主要功能是接受用户输入的字符串作为“flag”,然后通过对输入的字符串进行一些处理和比较来验证是否输…...
clickhouse使用extract提取分号之前,之后,中间的内容
Area:‘安徽;宣城;宣州’,要提取分号之前,两个分号之前,最后一个分号之后的内容作为省市区 这是最后得到的正确的结果,感谢chatgpt 刚开始本来想使用splitByString -- 宣城 select splitByString(;,安徽;宣城;宣州)[2…...
Unity3D Compute Shader同步详解
前言 在Unity3D中,Compute Shader是一种强大的工具,它利用GPU的并行处理能力来执行复杂的计算任务,从而减轻CPU的负担,提高游戏的性能和效率。然而,由于GPU的工作方式,对共享资源的访问需要特别注意同步问…...

3D模型在UI设计中应用越来越多,给UI带来了什么?
当前3D模型在UI设计中应用很多,极大地拓展了UI设计的发挥空间,也拓宽了UI的应用领域,本文分享下UI中引入3D模型到底能带来什么价值. 3D模型在UI设计中的应用可以给用户界面带来以下几个方面的好处: 更真实的视觉体验:…...
前端框架的选择与考量:一场技术的盛宴
在当今快速迭代的Web开发领域,前端框架的选择成为了项目启动初期不可忽视的重要环节。随着React、Vue、Angular等主流框架的崛起,以及Svelte、Quasar等新兴力量的加入,开发者们面临着前所未有的选择难题。本文旨在探讨前端框架的选择依据、主…...
第五部分:7---信号的捕捉
目录 信号递达期间,该信号会被屏蔽直到递达完成。 sigaction实现信号的捕捉: 案例:在处理2号信号时屏蔽3号信号。 子进程退出向父进程发送SIGCHLD信号: 信号递达期间,该信号会被屏蔽直到递达完成。 当某个信号的处…...

HarmonyOS鸿蒙开发实战( Beta5.0)页面加载效果实现详解实践案例
鸿蒙HarmonyOS开发实战往期必看文章:(持续更新......) HarmonyOS NEXT应用开发性能实践总结(持续更新......) HarmonyOS NEXT应用开发案例实践总结合集(持续更新......) 一分钟了解”纯血版&…...
计算机网络中的VLAN详解
文章目录 计算机网络中的VLAN详解一、引言二、VLAN的作用与原理1、VLAN的作用2、VLAN的工作原理2.1、VLAN标签(Tag) 三、VLAN的配置与接口类型1、VLAN的配置2、接口类型 四、VLAN的应用场景1、企业网络2、数据中心3、教育网络 五、VLAN间的通信六、总结 …...

Nacos学习
系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…...

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0926)
十四、文章分类添加编辑 [element-plus 弹层] Git仓库:https://gitee.com/msyycn/vue3-hei-ma.git 点击显示弹层 准备弹层 const dialogVisible ref(false)<el-dialog v-model"dialogVisible" title"添加弹层" width"30%">…...

验收测试:从需求到交付的全程把控!
在软件开发过程中,验收测试是一个至关重要的环节。它不仅是对软件质量的把关,也是对整个项目周期的全程把控。从需求分析到最终的软件交付,验收测试都需要严格进行,以确保软件能够符合预期的质量和性能要求。 一、需求分析阶段 在…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...