外部征信数据预测能力评估(IV\WOE)

在实际业务处理中为了降低逾期率,通常会使用外部数据,这就需要对外部数据进行评估,通过对某盾的数据结合实际业务分析,计算其IV值和WOE值。

一、离散化数据

1.数据离散化

等宽离散容易导致组别出现数据极多或数据极少的情况,等频离散容易导致同一数值被分到两个组别中,缺点明显,所以选用K聚类离散函数。离散结果图如下:

1.1风险系数分离散结果


离散图

1.2综合关联风险分(复杂网络)


离散图


#聚类离散函数

def k_means_1(df_value,k):

data = df_value

kmodel = KMeans(n_clusters = k)#确定族数

    kmodel.fit(data.values.reshape(len(data),1))#训练数据集

    c = pd.DataFrame(np.sort(kmodel.cluster_centers_))#确定中心并排序

    w = c.rolling(2).mean().iloc[1:]#取移动平均值

    w = [0]+list(w[0])+[data.max()]#加上最大最小值作为边界值

    w =list(np.sort(w))#再次排序

    data_name = pd.cut(data,w,labels =range(k))

print(w)

return data_name

二、评估结果

从评估的结果看,风险系数分 IV值为0.1039,预测能力一般。而关系网络IV值为0.054693,预测能力较低。不适用直接生成规则拒绝,但可用于后续的评分模型中。数据如下:

1.1风险系数分 

woe:


iv: 0.1039

1.2综合关联风险分(复杂网络)

woe:

iv:0.054693

#WOE IV值计算函数

def calcWOE(dataset,col,targe):

subdata=df(dataset.groupby(col)[col].count())

suby=df(dataset.groupby(col)[targe].sum())

data=df(pd.merge(subdata,suby,how='left',left_index=True,right_index=True))

b_total=data[targe].sum()

total=data[col].sum()

g_total=total-b_total

data['bad']=data.apply(lambda x:round(x[targe]/b_total,3),axis=1)

data['good']=data.apply(lambda x:round((x[col]-x[targe])/g_total,3),axis=1)

data['WOE']=data.apply(lambda x:math.log(x.bad/x.good),axis=1)

return data.loc[:,['bad','good','WOE']]

def calcIV(dataset):

dataset['IV']=dataset.apply(lambda x:(x.bad-x.good)*x.WOE,axis=1)

IV=sum(dataset['IV'])

IV=str(IV)

return IV

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。