实习有一段时间了,一直在公司做风控项目。项目的过程中,算法的选择和实现加起来只花了不到一礼拜的时间就搞定了,而期间特征变量的选择以及对数据的各种处理却花了我们大半个月的时间。我觉得,对于一个数据分析人员,最重要的能力不是会用多少算法,编程实现能力有多强,而是数据的预处理。数据预处理,往往对结果会产生很大的影响,不同的处理方式,可能得出完全不同的结论。因此,必须要重视数据。下面是我对这些年做项目以及参加数模比赛在处理数据上的的一些总结:
一、特征选取:
在做数据挖掘之前,选取特征很重要。所选择的特征要能反映我们想要解决的问题。
因此,做项目前首先一定要对相关业务有所了解,熟悉每个特征的内涵,选取那些对目标有影响的特征变量作为我们的初始变量。如风控项目,要找出有风险的交易,首先要了解交易有哪些风险,这些风险是如何产生的等等,选择如交易频率、交易金额、冲正比例等与风险相关的特征,失败交易占比(经业务分析,失败交易主要是由操作不当引起的,不会造成金额损失,从而不会产生风险)等与风险无关的特征则无需选择。
二、删除无关变量
1) 数值变量
对于数值变量,计算变量间的相关矩阵,如果两个变量间相关系数较大,则需进行降维处理。
2) 类别属性的变量
对于类别变量,分别用卡方独立性检验验证每一个类别属性变量与标签变量的相关性,如果无关,直接删除。
三、缺失值的处理
对于缺失值的处理,分为删除存在缺失值的个案和缺失值插补。对于主观数据,人将影响数据的真实性,存在缺失值的样本的其他属性的真实值不能保证,那么依赖于这些属性值的插补也是不可靠的,所以对于主观数据一般不推荐插补的方法。插补主要是针对客观数据,它的可靠性有保证。
(1)删除含有缺失值的变量或样本
如果一个样本或者一个变量中存很多缺失值,在缺失值没有特殊含义的情况下,即使该变量对所要分析的问题很重要,也应该将其删除,因为大部分数值由插补而来的样本或变量将变得不可靠。
如果缺失值有特殊含义,如市场调查中,被访人员拒绝透露相关问题的答案,这时,缺失值