金融评分卡风控模型及其特征工程

转载:https://blog.csdn.net/starzhou/article/details/78930490

采用逻辑回归的评分卡分控模型:

数据来源:三张表

master table  
idx: 每一笔贷款的unique key,可以与另外2个文件里的idx相匹配
UserInfo_*: 借款人特征字段 
WeblogInfo_*:Info网络行为字段 
Education_Info*: 学历学籍字段 
ThirdParty_Info_PeriodN_*: 第三方数据时间段N字段 
SocialNetwork_*: 社交网络字段 
ListingInfo: 借款成交时间 
Target: 违约标签(1 = 贷款违约,0 = 正常还款)
借款人的登陆信息表   
ListingInfo: 借款成交时间 
LogInfo1: 操作代码 
LogInfo2: 操作类别 
LogInfo3: 登陆时间 
idx: 每一笔贷款的unique key

客户在不同的时间段内有着不同的操作,做个时间切片,在每个时间切片内统计一些特征。从而衍生出一些特征。

时间切片的一些方法:

两个时刻间的跨度:    申请日期之前30天内的登录次数,申请日期之前第30天至第59天内的登录次数;

基于时间切片的衍生:申请日期之前180天内,平均每月(30天)的登录次数;

常用的时间切片:        (1、2个)月,(1、2个)季度,半年,1年,1年半,2年;

时间切片的选择:       不能太长,保证大多数样本都能覆盖到;不能太短,丢失信息。

import pandas as pd
import datetime
import collections
import numpy as np
import random
import matplotlib.pyplot as plt

def TimeWindowSelection(df, daysCol, time_windows):
    '''
    :param df: the dataset containg variabel of days
    :param daysCol: the column of days
    :param time_windows: the list of time window,可分别取30,60,90,,,360
    :return:
    '''
    freq_tw = {}
    for tw in time_windows:
        freq = sum(df(daysCol).apply(lambda x:int(x<=tw)))   #统计在tw时间切片内客户操作的总次数
        freq_tw[tw] = freq/float(len(df))                    #tw时间切片内客户总操作数占总的操作数比例
        return freq_tw

data1 = pd.read_csv('PPD_LogInfo_3_1_Training_Set.csv', header = 0)

data1['logInfo']     = data1['LogInfo3'].map(lambda x:datetime.datetime.strptime(x,'%Y-%m-%d'))
data1['Listinginfo'] = data1['Listinginfo1'].map(lambda x: datetime.datetime.strptime(x,'%Y-%m-%d'))
data1['ListingGap']  = data1[['logInfo','Listinginfo']].apply(lambda x: (x[1]-x[0]).days,axis = 1)

timeWindows = TimeWindowSelection(data1, 'ListingGap', range(30,361,30))

fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(list(timeWindows.keys()),list(timeWindows.values()),marker='o')
ax.set_xticks([0,30,60,90,120,150,180,210,240,270,300,330,360])
ax.grid()
plt.show()

  由上图可以看出,在0-180天的时间切片内的操作数占总的操作数的95%,180天以后的覆盖度增长很慢。所以我们选择180天为最大的时间切片。凡是不超过180天的时间切片,都可以用来做个特征衍生。

  选取[7,30,60,90,120,150,180]做为不同的切片,衍生变量。1.统计下LogInfo1和LogInfo2在每个时间切片内被操作的次数m1;2.统计下LogInfo1和LogInfo2在每个时间切片内不同的操作次数m2;3.

  • 统计下LogInfo1和LogInfo2在每个时间切片内m1/m2的值。

猜你喜欢

转载自www.cnblogs.com/wzdLY/p/9646667.html