学习目标:
- 学习特征预处理、缺失值、异常值处理、数据分桶等特征处理方法
- 学习特征交互、编码、选择的相应方法
学习内容:
- 数据预处理
- 缺失值的填充
- 时间格式处理
- 对象类型特征转换到数值
- 异常值处理
- 基于3segama原则
- 基于箱型图
- 数据分箱
- 固定宽度分箱
- 分位数分箱
- 离散数值型数据分箱
- 连续数值型数据分箱
- 卡方分箱(选做作业)
- 特征交互
- 特征和特征之间组合
- 特征和特征之间衍生
- 其他特征衍生的尝试(选做作业)
- 特征编码
- one-hot编码
- label-encode编码
- 特征选择
- 1 Filter
- 2 Wrapper (RFE)
- 3 Embedded
学习笔记:
在DSW中导入包并读取数据:
安装包
特征值预处理:
查找出数据中的对象特征和数值特征:
然后我们要对数据的结构有一定的了解,需要对缺失值进行填充,又要处理一些相对无用或者“不干净”的数据
缺失值的填充
-
把所有缺失值替换为指定的值0
data_train = data_train.fillna(0)
-
向用缺失值上面的值替换缺失值
data_train = data_train.fillna(axis=0,method='ffill')
然后我们可以通过命令 data_train.isnull().sum()查看缺失值的情况
时间格式处理
要先转化时间格式(),再构造时间特征 //['issueDate']是时间特征命令
对earliesCreditLine进行预处理
类别特征处理
已知的部分类别特征有 'grade', 'subGrade', 'employmentTitle', 'homeOwnership', 'verificationStatus', 'purpose', 'postCode', 'regionCode', 'applicationType', 'initialListStatus', 'title', 'policyCode'
将这些类别特征写成向量
for f in cate_features:
print(f, '类型数:', data[f].nunique())
异常值处理:
处理异常值,要先了解异常值和什么原因导致的异常值。如果一异常值并不代表一种规律性的,而是极其偶然的现象,或者说你并不想研究这种偶然的现象,这时可以将其删除,如果异常值存在且代表了一种真实存在的现象,那就不能随便删除在现有的欺诈场景中很多时候欺诈数据本身相对于正常数据勒说就是异常的,我们要把这些异常点纳入,重新拟合模型,研究其规律。能用监督的用监督模型,不能用的还可以考虑用异常检测的算法来做。【1】
检验异常值的方法有:均方差、箱型图
根据所学的正态分布我们可以知道,大约99.7%的数值分布在3个标准差内,95%的数值分布在2个标准差内,68%的数值分布在1个标准差范围内,我们可以通过对比数值是否在规定范围内累确定其是否为异常值(一般而言都会以三个标准差为范围)
箱型图检验异常值:四分位数会将数据分为三个点和四个区间,IQR = Q3 -Q1,下触须=Q1 − 1.5x IQR,上触须=Q3 + 1.5x IQR
数据分桶:
目的:降低变量复杂性,提高自变量和因变量的相关度。
对象:将连续变量离散化、将多状态的离散变量合并成少状态
原因:数据的特征内的值跨度可能比较大,对有监督和无监督中如k-均值聚类它使用欧氏距离作为相似度函数来测量数据点之间的相似度。都会造成大吃小的影响,其中一种解决方法是对计数值进行区间量化即数据分桶也叫做数据分箱,然后使用量化后的结果。
分箱原则:最小分箱占比不低于5%、箱内不能全部是好客户、连续箱单调
固定宽度分箱 :
均匀宽度分箱
映射指数宽度
分位数分箱:
特征交互:【2】
特征编码:
label-encode
逻辑回归等模型要单独增加的特征工程
1、对特征做归一化,去除相关性高的特征
2、归一化目的是让训练过程更好更快的收敛,避免特征大吃小的问题
3、去除相关性是增加模型的可解释性,加快预测过程。
特征选择:
任何一个模型都不是越负责越好,对模型中一些无用的特征进行选择删除,降低模型的复杂性,反而提高了回归效率和计算速度。
特征选择的方法:
1 Filter【3】
方差选择法
方差选择法中,先要计算各个特征的方差,然后根据设定的阈值,选择方差大于阈值的特征
from sklearn.feature_selection import VarianceThreshold
VarianceThreshold(threshold=3).fit_transform(train,target_train)
- 相关系数法(pearson 相关系数)
Pearson 相关系数,结果的取值区间为 [-1,1] , -1 表示完全的负相关, +1表示完全的正相关,0 表示没有线性相关。
- 卡方检验
假设自变量有N种取值,因变量有M种取值,考虑自变量等于i且因变量等于j的样本频数的观察值与期望的差距。 其统计量如下: χ2=∑(A−T)2T,其中A为实际值,T为理论值
- 互信息
2.Wrapper (Recursive feature elimination,RFE)
递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,再基于新的特征集进行下一轮训练
3. Embedded
基于惩罚项的特征选择法 使用带惩罚项的基模型,除了筛选出特征外,同时也进行了降维
学习总结与反思:
特征工程是对数据内部特征的深入挖掘,其难度在于复杂性和不定性,不能够通过系统学习或者一般化来对现实问题进行回答,特别是在做回归时,特征值的选取显得尤为重要,对模型是否精确,快速起到关键性作用,个人认为本次学习最重要的内容是对异常值的处理和特征值的选择,这些方法基本对每个评分模型都有作用,也是做金融风控不可或缺的一步。而最难的点是特征交互。
【1】https://blog.csdn.net/wangxingfan316/article/details/79363420