金融风控实战第三节:特征工程上 课程笔记


学员号:505476
问题

流程 :准入规则-> preA -> 反欺诈 -> 规则 -> A卡(不同用户可能走B卡)
不同规则和模型会不会选入相同特征:一般不会用相同特征放到不同模块,对用户进行不同模块的筛选,要是不同模块有相同的特征,就会更加造成用户偏移
上节课回顾

怎么做单变量分析(注意去掉灰色人群)
怎么看变量是否有用(连续变量分箱)
树模型
特征工程

业务建模流程

将业务定义为分类or回归问题
定义标签,得到y
选取合适的样本,并匹配出全部的信息作为特征来源
特征工程+模型训练+模型评价与调优
输出模型报告
上线调优
特征工程来源

基础特征构造
数据预处理
特征衍生
特征变换
特征筛选
数据预览

行列查看:df.shape
数据集具体信息:df.info()
计数,均值,分布:df.describe()
箱线图:%matplotlib inline df.boxplot(columns='')
唯一性判断:df.column.unique()
数据预处理

缺失值:df.column.fillna().sample(10)
sklearn.preprocessing import Imputer
判断缺失值有没有必要填充,有些缺失本身有他的含义
数值型变量操作

数值缩放

取对数变换df.columns.apply(lambda x: np.log(x)) 长尾数据取log可改变其分布
最大最小值缩放
正态分布缩放
robust_scale 用在可能会有异常值的地方
normalizer 将同一行数据进行规范化
统计值

最大最小值
分位数极致处理,抹掉前后%1,将后1%的人等于前99%分位点的值
树模型不需要做归一化
四则运算,直接加减
sklearn.preprocessing import PolynomialFeatures 将变量之间进行加减乘除
离散化区/分箱/分桶

等距切分 pd.cut
等频切分 pd.qcut(df.column,10)
BiVar(变量可视化分析) 要求:总体单调;变量趋势符合业务逻辑;变量趋势波动不大(方差);如何把不是很单调的变量变成单调(分箱合并);分箱多少个合适(2-5个)
其他数据操作

类别型变量

one-hot:pd.get_dummies()
分箱,找badrate高的类别做one-hot
时间型

pd.to_datetime()
取关键时间信息
文本型

词袋模型(数一下词出现的次数)
用出现次数代替具体的词,得到样本词向量
tf-idf
特征组合

基于时间序列进行特征衍生

按距今月份计算每月特征(1-12个月),p为距今月份(如距今第一个月,距今第12个月),inv为某特征(如通话次数)
近p个月,inv>0 的月份数
最近p个月,inv=0的月份数
近p个月,inv>0 的月份数是否>1
最近p个月,inv的均值
最近p个月,inv和
最近(2,p+1)个月,inv和
最近p个月,inv最大值
最近p个月,inv最小值
最近p个月,最近一次inv>0 距今月份数
最近p个月,最近一次inv=0 距今月份数
当月inv/最近p个月inv的均值
当月inv/最近p个月inv的最小值
最近p个月,每两个月间的inv的增长的最大值
最近p个月,每两个月间的inv的减小的最大值
最近p个月,inv的标准差
最近p个月,inv的变异系数(均值/方差)
当月inv-最近p个月inv的均值
当月inv-最近p个月inv的最小值
当月inv-最近p个月inv的最大值
(当月inv-最近p个月inv的最大值)/(最近p个月inv的最大值)
最近p个月,inv的极差
最近min(time on book,p)个月中,后一个月相比于前一个月增长了的月份数
最近min(time on book,p)个月中,后一个月相比于前一个月减小了的月份数
最近min(time on book,p)个月中,相邻月份inv相等的月份数
。。。
已邀请:

要回复问题请先登录注册

收藏七月在线,一起向大牛进阶

ctrl+D或command+D可以快速收藏哦~