美文网首页程序员
金融风控AI—评分卡模型算法(1)

金融风控AI—评分卡模型算法(1)

作者: hexter | 来源:发表于2020-07-08 20:33 被阅读0次

一、概述

办理过信用卡的朋友知道,开卡需要先申请(筛选好坏用户),可能还会根据你的信用情况会有不同的额度。这就是银行的信用风险计量体系。对于信用卡有4类评分卡:

1)申请评分卡(A卡)

2)行为评分卡(B卡)

3)催收评分卡(C卡)

4)欺诈评分卡(F卡)

这些评分卡算法一样,只是训练的数据不同,所用的参数也就不同。

蚂蚁金服的芝麻信用也是这样的。

二、模型开发

模型的开发主要包含以下几大部分工作:数据获取、数据预处理、探索分析、特征选择、模型训练、模型评估、建立评分系统。

1、数据获取

 本项目数据来源于kaggle竞赛Give Me Some Credit。有训练数据共计15万条。

打开数据文件大概这个样子:

数据

字段描述如下

字段含义

2、数据预处理

这部分主要做2个事情:缺失值处理和异常值处理。

a、缺失值处理

pd的describe()函数,可以了解数据集的缺失值情况。

#载入数据

data = pd.read_csv('cs-training.csv')

#数据集确实和分布情况

data.describe(include='all').to_csv('DataDescribe.csv')#了解数据集的分布情况

打开DataDescribe.csv

我们可以看大部分数据有15万条,其中月收入只有12万条,缺了近3万条,家属数量14.6万条。

对于缺失值,根据不同的情况我们分类处理:

(1) 如果缺失的不多,比如家属数量缺失不多,可以直接删除含有缺失值的样本。用dropna()

(2) 如果缺失较多,不宜直接全部删除,根据样本之间的相似性填补缺失值。比如用平均值

(3)如果缺失较多,不宜直接全部删除, 根据变量之间的相关关系填补缺失值。比如用随机森林法填补。

  (4)如果缺失巨大,就失去分析意义,可以将整个字段删除

平均值填补只要一句话:

data=data.fillna({'MonthlyIncome':data['MonthlyIncome'].mean()})

随机森林法填补:

# 用随机森林对缺失值预测填充函数

def set_missing(df):

    # 把已有的数值型特征取出来

    process_df = df.iloc[:,[5,0,1,2,3,4,6,7,8,9]]

    # 分成已知该特征和未知该特征两部分

    known = process_df[process_df.MonthlyIncome.notnull()].values

    unknown = process_df[process_df.MonthlyIncome.isnull()].values

    # X为特征属性值

    X = known[:, 1:]

    # y为结果标签值

    y = known[:, 0]

    # fit到RandomForestRegressor之中

    rfr = RandomForestRegressor(random_state=0, n_estimators=200,max_depth=3,n_jobs=-1)

    rfr.fit(X,y)

    # 用得到的模型进行未知特征值预测

    predicted = rfr.predict(unknown[:, 1:]).round(0)

    print(predicted)

    # 用得到的预测结果填补原缺失数据

    df.loc[(df.MonthlyIncome.isnull()), 'MonthlyIncome'] = predicted

    return df

调用随机森林:

data=set_missing(data)#用随机森林填补比较多的缺失值

data=data.dropna()#删除比较少的缺失值

b、异常值处理

异常值是指明显偏离大多数抽样数据的数值,或者直接违背常识的数据,比如年龄是负数。对于违背常识的记录直接删除,而对于其他异常数据需要具体分析:

删除。先取出异常记录,看看数据,如果不太多,也没有特别的可以删除。因为异常值可能会影响结论。如果取出的异常记录有明显的相关性,那么这些记录可以总结出一个规则。

放任不管。也许异常值代表的是真实的情况,这些值即使异常,也不会影响模型。

视为缺失值进行填充。如果删除数据可能会损失信息,而如果放任不管可能又影响我们的模型,所以可以考虑用均值、临近值进行填充。

具体采用哪种方式其实最好都试一下,看看最后得到的模型怎么样。因为所有这些操作都是有假设条件的,而你的数据是否满足这些条件,试过才知道。

从图看有异常值不少,不过一般只把异常的0值去掉。

对于RevolvingUtilizationOfUnsecuredLines及DebtRatio都是百分数类型。其中第一项肯定不能大于100%而且统计一下这部分异常数据不多,果断删掉。第二项债务百分比不敢确定是否可债务大于100%,统计了一下有3w多条,而且取出来看了一下不是很特别,同样可以试一下删除或者放入不管或者填充看看最后不同的效果。

这3个逾期不还次数指标意义相似放一起看,发现有2个数据特别显眼,是96,98。虽然按箱型图的含义所有圆圈都是异常值,但仔细分析这三个指标发现正常值绝大部分是0,这就导致了箱型图的1/4线和3/4线都是0,所以我们通常把头顶2个值作为异常值。我把这部分异常值取出来发现数量不多,只有200多条,理论上可以直接删除或者放在里面置之不理。但是我看了这部分数据发现非常异常。这208条数据有125条是违约用户,违约占比62%,而全量数据里面违约占比7%不到,所以我觉得应该把这部分数据作为一条规则来处理,遇到这三个指标有超过90的数值,直接报告警。那么是否可以把这部分数据留着置之不理呢,后面我试了,发现会对变量之间的相关性有很大影响(后面会详细讲)。

同样这个指标我们把50以上作为异常值。

这个指标pass

月收入可以去掉特别高的数据

家庭成员可以剔除特别高的

第一篇完

相关文章

  • 金融风控AI—评分卡模型算法(1)

    一、概述 办理过信用卡的朋友知道,开卡需要先申请(筛选好坏用户),可能还会根据你的信用情况会有不同的额度。这就是银...

  • AI产品经理网课笔记8/18

    1.人工智能=数据+算法+算力;懂算法的产品经理;例子:平安金融AI风控,金融数据+算法工程师+风控算法模型+云服...

  • 金融风控AI—评分卡模型算法(3)

    上一篇 4、模型训练 a、WOE值替换 在上一篇文章我们已经获取了每个变量值的分箱数据和woe值,现在我们用woe...

  • 金融风控AI—评分卡模型算法(2)

    上一篇地址 2、探索分析 探索 数据 分析(Exploratory Data Analysis)是为了更好的了解数...

  • 【金融风控】信用评分卡模型

    本文转载自公众号:大数据风控与机器学习 一、简介 所谓信贷评分卡指的是,将违约概率映射成得分的模型。最传统、应用最...

  • 二元分类特征的选择:IV值

    IV值(Information Value),即信息价值指标,是评分卡模型中的一个常见指标,在金融风控领域得到了广...

  • 开篇:风控评分卡知识总结

    1 基本风控信息 1.1 评分卡的分类: A卡(Application score card)申请评分卡 A卡一...

  • 风控评分卡与机器学习

    在金融风控领域,无人不晓的应该是评分卡,美国fico公司算是评分卡的始祖,始于 20世纪六十年代, 评分卡大致20...

  • 逻辑回归优化技巧总结(全)

    逻辑回归由于其简单高效、易于解释,是工业应用最为广泛的模型之一,比如用于金融风控领域的评分卡、互联网的推荐系统。上...

  • R语言量化投资(2)

    算法的应用 金融领域,算法的作用之一就是风控,另外就是量化投资领域,通过量化算法模型实现赚钱。 金融市场的规则,有...

网友评论

    本文标题:金融风控AI—评分卡模型算法(1)

    本文链接:https://www.haomeiwen.com/subject/cznaqktx.html