【金融风控建模系列】数据篇(补充)

第二章 数据



补充内容

数据篇(三)讲解了多客群数据的融合过程。本篇文章是对上章内容的补充,目的是讲解如何更合理的融合数据。
在这里,先抛出一个问题。
若观察到模型在某个客群的表现比较差,直接添加相应客群的表现最好的原数据到样本中是否就可以?
本章就是来解答这个问题。之前有提到过不同客群坏账率不一致的问题,坏账率差距过大将导致客群差距过大,差距较大的客群在不同特征上的表现必然也会不一样并最终会反应到模型上。
下面看一张图:
在这里插入图片描述
这张图反应的是不同特征在各个客群上的IV值(信息价值),可以观察到同一特征在不同客群上的IV值可能存在很大的差异。这也进一步说明客群会直接影响特征的重要性。
所以,在进行多客群样本融合之前,需要额外对数据做一些处理,减小不同客群的差异带来的影响。
数据层面来看,可以选择调整样本的坏账率。如果坏账率很小,且样本数量足够,可以选择适当减少“0”样本,从而提升坏账率。
下面给出调整坏账率的函数

def adjust_bad_rate(pri_data_path, bad_rate_limit, target='y'):
"""
pri_data_path: str 数据源路径
bad_rate_limit:int 目标坏账率
"""
    df_pri = pd.read_csv(pri_data_path)  # 读取想要调整的数据。数据篇(一)有提到我们一般会统一放在一个数据文件夹中
    cnt_all = df_pri.shape[0]
    bad_rate = df_pri[target].sum() / cnt_all
    del_n = int(cnt_all * (1 - bad_rate / bad_rate_limit))  # 需要删除的0样本的个数,和当前坏账和目标坏账率有关
    random_indices = np.random.choice(df_pri[df_pri[target] == 0].index, size=del_n, replace=False)  # 随机挑选指定个数的需要删除的样本
    df_pri = df_pri.drop(random_indices)
    print(df_pri.shape[0], df_pri[target].sum(),
          df_pri[target].sum() / df_pri.shape[0])
    df_pri.to_csv(pri_data_path, index=False)

最终获得处理完之后的样本,并返回到原数据源路径。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

从那开始

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

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

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

打赏作者

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

抵扣说明:

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

余额充值