金融风控-Task3-特征工程
程序员文章站
2022-06-30 10:29:33
...
首先有一个疑问,关于特征工程部分,是否需要把上面的方法都处理一遍,比如对于有些优秀的树模型对数据处理的要求就相对比较少,所以还是建议先把后续建模阶段的要求理清楚再针对性下手比较好。
这里主要写自己目前在研究的几个点:
1、数据分箱
- 特征分箱的目的:
从模型效果上来看,特征分箱主要是为了降低变量的复杂性,减少变量噪音对模型的影响,提高自变量和因变量的相关度。从而使模型更加稳定。 - 数据分桶的对象:
(1)将连续变量离散化
(2)将多状态的离散变量合并成少状态 - 分箱的原因:
数据的特征内的值跨度可能比较大,对有监督和无监督中如k-均值聚类它使用欧氏距离作为相似度函数来测量数据点之间的相似度。都会造成大吃小的影响,其中一种解决方法是对计数值进行区间量化即数据分桶也叫做数据分箱,然后使用量化后的结果。 - 分箱的优点:
(1)处理缺失值:当数据源可能存在缺失值,此时可以把null单独作为一个分箱。
(2)处理异常值:当数据中存在离群点时,可以把其通过分箱离散化处理,从而提高变量的鲁棒性(抗干扰能力)。例如,age若出现200这种异常值,可分入“age > 60”这个分箱里,排除影响。
(3)业务解释性:我们习惯于线性判断变量的作用,当x越来越大,y就越来越大。但实际x与y之间经常存在着非线性关系,此时可经过WOE变换。 - 特别要注意一下分箱的基本原则:
(1)最小分箱占比不低于5%
(2)箱内不能全部是好客户
(3)连续箱单调
案例上提到三种方法:
1、固定宽度分箱
2、分位数分箱
3、卡方分箱等
以我手边的一份数据为例,但目前我的数据处理已经人为去除的异常值,而且参考相关文献结合高频区间进行了划分,如下,发现案例中的方法似乎没有优于目前我处理的这种方式,所以先保留,继续往下走。
2、特征交互
- 交互特征的构造非常简单,使用起来却代价不菲。如果线性模型中包含有交互特征对,那它的训练时间和评分时间就会从 O(n) 增加到 O(n2),其中 n 是单一特征的数量。
// An highlighted block
#特征交互
for col in ['grade', 'subGrade']:
temp_dict = train.groupby([col])['isDefault'].agg(['mean']).reset_index().rename(columns={'mean': col + '_target_mean'})
temp_dict.index = temp_dict[col].values
temp_dict = temp_dict[col + '_target_mean'].to_dict()
train_data[col + '_target_mean'] = train[col].map(temp_dict)
train_data[col + '_target_mean'] = testA[col].map(temp_dict)
# 其他衍生变量 mean 和 std
for df in [train, testA]:
for item in ['n0','n1','n2','n3','n4','n5','n6','n7','n8','n9','n10','n11','n12','n13','n14']:
df['grade_to_mean_' + item] = df['grade'] / df.groupby([item])['grade'].transform('mean')
df['grade_to_std_' + item] = df['grade'] / df.groupby([item])['grade'].transform('std')
- 关于特征交互,因为目前手头的数据都是结构化数据,相应的处理以及应用可以说是已经烂大街了,所以如果想有所不同,所以可以考虑创建新的特征。
3、特征选择
特征选择技术可以精简掉无用的特征,以降低最终模型的复杂性,它的最终目的是得到一个简约模型,在不降低预测准确率或对预测准确率影响不大的情况下提高计算速度。特征选择不是为了减少训练时间(实际上,一些技术会增加总体训练时间),而是为了减少模型评分时间。
特征选择的方法:
- 1、 Filter
方差选择法
相关系数法(pearson 相关系数)
卡方检验
互信息法 - 2、 Wrapper (RFE)
递归特征消除法 - 3、 Embedded
基于惩罚项的特征选择法
基于树模型的特征选择
这里之前研究过,其实很深,每一小部分都可以单拎出来称为一个研究方向,自己浅尝辄止的了解过一段时间,但是哪个也没有深究。
最后一个疑问,关于特征选择部分有什么好的建议吗?不是说把所有的方法都用上,因为每个方法都用了,还不如把一个方法用精