转载: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的值。