一、项目介绍
这是拍拍贷举办的一个风控算法比赛,目标是根据用户历史行为数据来预测用户在未来6个月内是否会逾期还款。评价指标为AUC。
然后给出的数据有贷款记录、借款人登录信息,借款人修改信息,主要进行的工作是:
1.数据预处理
1.1缺失值的处理
按列统计:作图分析各列缺失值的比例
缺失值比例过高的偶直接弃用(90%),缺失值比较多的(一半左右)类型变量把缺失值当做一种类型进行处理,用-1进行填充,数值型用均值或者最大值,最小值(根据具体情况,这里是类型变量),缺失值比较小的用中值进行填充。
按行统计:用折线图统计每个样本缺失值的个数,发现有一些样本缺失值太多,基本不包含信息,相当于离群点,将其剔除。而且缺失特征个数可以作为一个特征,因为信息的完善程度在信贷领域的话,也可以作为预测用户信用的一个信息。
1.2.剔除变化小的变量
在数值类型中,通过计算每个数值型特征的标准差,剔除变化很小的特征,在190个特征中,有15个的标准差接近0,将其剔除
1.3.字符串相关处理:大小写转换,空格的处理,城市名的处理
二、特征工程
2.1特征编码
地理位置处理:one-hot encoding加上特征选择,原数据中有7个字段是地理位置,包括省份和城市,针对省份的方法是统计了违约最多的几个省份
然后把这几个省份做成二值特征,这样处理更具有判别性。城市的处理是先进行独热编码,然后用sklearn中的
sklearn.feature_selection import SelectKBest,选取前100个城市留下。
成交时间特征:通过作图发现拍拍贷的业务量随时间增加,守约和违约量也随之增加,从第一天到最后一天每十天编为一个码,1,2,3...
其他的类别型数据用one-hot encoding
2.2特征组合
通过特征重要性分析我得出其中一个ThirdParty_Info_Period_XX”的 feature score 得分很高,然后用这个特征中的属性两两相除得到7000个特征,然后用xgboost对这些特征进行单独训练,然后get_fscore方法得到特征重要性得分,取了其中500个,通过这500个特征的加入,最后的AUC从0.75提高到了0.77。
2.3特征提取
从用户修改信息和登录信息中提取了信息修改次数,登录天数,每种操作的次数,平均登录间隔等特征
2.4特征选择
2.5类别不平衡的处理
给出的数据正负本的比例是13:1,采用过采样的方法:SMOTE:通过对训练集中的小类数据进行插值来产生额外的小类样本数据。产生新的少数类样本,产生的策略是对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。
三、模型设计
初赛训练数据3万条,测试数据2万条,复赛训练数据8万条,测试数据1万条。原始特征加上构建的特征1500维左右
3. 1 LR+L1正则,采用L1是因为数据比较高维
单模型验证集AUC是0.74
3.2 XGBoost
交叉验证的AUC平均在0.76左右