PRIM(Patient Rule Induction Method)规则发现算法在风控中的应用

本文介绍了PRIM(Patient Rule Induction Method)算法在风控领域的应用,通过规则发现来解决高维变量中的子群识别问题。PRIM算法以支持度、正样本浓度和提升度为关键指标,通过迭代剔除样本来逐步提高坏人浓度。与CART决策树相比,PRIM更注重人机交互和控制剔除比例,适用于寻找局部最优规则。实际风控案例展示了如何利用PRIM制定高精度的拒绝规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在风控策略迭代过程中,我们通常需要从高维变量中搜索组合得到规则集(RuleSet),但是单纯依靠画格子、CART决策树等常规手段具有很高的挑战。此时,我们需要一种更为智能、更自动化的方法,从大量变量(高维空间)里找到最优规则集,这就是规则发现。
本文主要介绍一种规则发现算法,即病人规则归纳方法(Patient Rule Induction Method -PRIM),并紧密结合信贷风控业务知识,详细介绍理论和实践应用。

Part 1. 规则发现的概念

很多机器学习二分类问题抽象为 f(y|x) ,根据输入特征空间 X,预测个体发生目标事件的概率 P(y=1|X) 。然而,很多时候我们的目的不在于训练一个全局模型,而更为关注 y 值浓度很高(或很低)的某个局部空间。

现有 N个样本 {xi,y}^N ,我们希望从 M 维变量空间寻找一个子空间,使得这个子空间的目标变量浓度尽可能高。这个问题被称为子群识别(Subgroup Identification)。

为更容易理解子群识别的概念,我们以削苹果 为例。如图1所示,我们在苹果这个三维空间里横竖切几刀,找出了目标区域(芯),予以剔除(Peeling)。

而随着规则可解释性越来越受到大家关注,我们迫切需要找寻一些搜索过程透明、易于理解的智能算法来帮助我们进行规则发现。
在这里插入图片描述
为便于后文理解,我们定义如下概念:

#支持度(support):子群样本量相对于总体样本量的比例,反映规则命中率(hit rate)。

#正样本浓度:子群里正样本量相对于子群样本量的比例,反映坏人浓度(bad rate)。

#提升度(lift):子群正样本浓度相对于总体正样本浓度的提升,反映规则的提升杠杆。通常越大越好。

Part 2. 单维变量空间规则发现:巧用分位数

在贷前授信风险策略中,一般都会设置内部准入规则、反欺诈规则、外部准入规则、定额定价等环节。从更为抽象的角度,我们可将风控规则分为两种:

1、硬规则(hard rule):严拒规则,一般阈值固定下来后不再改变。典型的规则,包括严重多头借贷、高危设备行为等。

2、软规则(soft rule):信用模型分可归类于此。为控制通过率稳定,我们一般可调整模型分数的阈值cutoff。

那么,我们如何快速发现一些硬规则呢?假设变量具有一定的排序性,那么通常在两端的人群是目标群体。暂不考虑某些变量呈现两端风险低,而中间取值段风险高的情况,我们将实际场景简化为两种情况:

1、取值越小,坏人浓度越高
2、取值越大,坏人浓度越高

如图2所示, seg1 和 seg2 是潜在的目标子群体,分别对应分位数 x1-α 和 xα 。目标群体的规模可通过分位数 α 进行控制。
在这里插入图片描述
我们将目标子群体圈定出来,并评估坏人浓度,以及相对于总体的提升度(Lift)等指标。
在这里插入图片描述
我们可以暴力枚举出所有的变量规则,并结合业务含义筛选出满足要求的规则。对于排黑硬规规则的制定,这是一种颇为有效的方法。

rule_discover(input_df=df, var='score', target='is_bad')

在这里插入图片描述
在图3中,我们同样需要兼顾hit_rate和hit_bad_rate的关系,当hit_size过小时,计算hit_bad_rate容易发生波动,从而导致结果不可靠。

实现图3统计结果的Python代码如下所示:

def rule_evaluate(selected_df, total_df, target):
    """规则评估"""
    # 命中规则的子群体指标统计
    hit_size = selected_df.shape[0]    
    hit_bad_size = selected_df[target].sum()
    hit_bad_rate = selected_df[target].mean()
 
    # 总体指标统计
    total_size = total_df.shape[0] 
    total_bad_size = total_df[target].sum()
    total_bad_rat
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fantasticString

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值