【总结】数据预处理

来源:互联网 发布:php的框架有哪些 编辑:程序博客网 时间:2024/06/04 19:33

实习有一段时间了,一直在公司做风控项目。项目的过程中,算法的选择和实现加起来只花了不到一礼拜的时间就搞定了,而期间特征变量的选择以及对数据的各种处理却花了我们大半个月的时间。我觉得,对于一个数据分析人员,最重要的能力不是会用多少算法,编程实现能力有多强,而是数据的预处理。数据预处理,往往对结果会产生很大的影响,不同的处理方式,可能得出完全不同的结论。因此,必须要重视数据。下面是我对这些年做项目以及参加数模比赛在处理数据上的的一些总结:

一、特征选取:

在做数据挖掘之前,选取特征很重要。所选择的特征要能反映我们想要解决的问题。

因此,做项目前首先一定要对相关业务有所了解,熟悉每个特征的内涵,选取那些对目标有影响的特征变量作为我们的初始变量。如风控项目,要找出有风险的交易,首先要了解交易有哪些风险,这些风险是如何产生的等等,选择如交易频率、交易金额、冲正比例等与风险相关的特征,失败交易占比(经业务分析,失败交易主要是由操作不当引起的,不会造成金额损失,从而不会产生风险)等与风险无关的特征则无需选择。

二、删除无关变量

1)        数值变量

对于数值变量,计算变量间的相关矩阵,如果两个变量间相关系数较大,则需进行降维处理。

2)        类别属性的变量

对于类别变量,分别用卡方独立性检验验证每一个类别属性变量与标签变量的相关性,如果无关,直接删除。

三、缺失值的处理

对于缺失值的处理,分为删除存在缺失值的个案和缺失值插补。对于主观数据,人将影响数据的真实性,存在缺失值的样本的其他属性的真实值不能保证,那么依赖于这些属性值的插补也是不可靠的,所以对于主观数据一般不推荐插补的方法。插补主要是针对客观数据,它的可靠性有保证。

(1)删除含有缺失值的变量或样本

如果一个样本或者一个变量中存很多缺失值,在缺失值没有特殊含义的情况下,即使该变量对所要分析的问题很重要,也应该将其删除,因为大部分数值由插补而来的样本或变量将变得不可靠。

如果缺失值有特殊含义,如市场调查中,被访人员拒绝透露相关问题的答案,这时,缺失值可以反映被访人员一些心理状态,可以用此作分析。又比如,在申请信用卡时,可能要求申请人提供驾驶执照号,没有驾驶照的申请者可能自然的不填写该字段。

(2)插补缺失值

当缺失值较少时,以最可能的值来插补缺失值比全部删除不完全样本或变量所产生的信息丢失要少。在数据挖掘中,面对的通常是大型的数据库,它的属性有几十个甚至几百个,因为一个属性值的缺失而放弃大量的其他属性值,这种删除是对信息的极大浪费,所以产生了以可能值对缺失值进行插补的思想与方法。常用的有如下几种方法:

a)        均值(众数、中位数)插补。数据的属性分为分类和连续型属性。对于连续型数据,就以该属性存在值的平均值(或者中位数,具体看情况而定)来插补缺失的值;对于分类属性的数据,就根据统计学中的众数原理,该属性的众数(即出现频率最高的值)来补齐缺失的值。

b)        利用同类均值插补。用层次聚类模型预测缺失变量的类型,再以该类型的均值插补。假设X=(X1,X2…Xp)为信息完全的变量,Y为存在缺失值的变量,那么首先对X或其子集行聚类,然后按缺失个案所属类来插补不同类的均值。如果在以后统计分析中还需以引入的解释变量和Y做分析,那么这种插补方法将在模型中引入自相关,给分析造成障碍。

c)        极大似然估计(Max Likelihood ,ML)。在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的(总体分布已知),那么通过观测数据的边际分布可以对未知参数进行极大似然估计(Little and Rubin)。这种方法也被称为忽略缺失值的极大似然估计,对于极大似然的参数估计实际中常采用的计算方法是期望值最大化(Expectation Maximization,EM)。该方法比删除个案和单值插补更有吸引力,它一个重要前提:适用于大样本。有效样本的数量足够以保证ML估计值是渐近无偏的并服从正态分布。但是这种方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。

d)        多重插补(Multiple Imputation,MI)。多值插补的思想来源于贝叶斯估计,认为待插补的值是随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。根据某种选择依据,选取最合适的插补值。

 

多重插补方法分为三个步骤:①为每个空值产生一套可能的插补值,这些值反映了无响应模型的不确定性;每个值都可以被用来插补数据集中的缺失值,产生若干个完整数据集合。②每个插补数据集合都用针对完整数据集的统计方法进行统计分析。③对来自各个插补数据集的结果,根据评分函数进行选择,产生最终的插补值。

假设一组数据,包括三个变量Y1,Y2,Y3,它们的联合分布为正态分布,将这组数据处理成三组,A组保持原始数据,B组仅缺失Y3,C组缺失Y1和Y2。在多值插补时,对A组将不进行任何处理,对B组产生Y3的一组估计值(作Y3关于Y1,Y2的回归),对C组作产生Y1和Y2的一组成对估计值(作Y1,Y2关于Y3的回归)。

当用多值插补时,对A组将不进行处理,对B、C组将完整的样本随机抽取形成为m组(m为可选择的m组插补值),每组个案数只要能够有效估计参数就可以了。对存在缺失值的属性的分布作出估计,然后基于这m组观测值,对于这m组样本分别产生关于参数的m组估计值,给出相应的预测即可,这时采用的估计方法为极大似然法,在计算机中具体的实现算法为期望最大化法(EM)。对B组估计出一组Y3的值,对C将利用 Y1,Y2,Y3它们的联合分布为正态分布这一前提,估计出一组(Y1,Y2)。

上例中假定了Y1,Y2,Y3的联合分布为正态分布。这个假设是人为的,但是已经通过验证,非正态联合分布的变量,在这个假定下仍然可以估计到很接近真实值的结果。

多重插补和贝叶斯估计的思想是一致的,但是多重插补弥补了贝叶斯估计的几个不足。(1)贝叶斯估计以极大似然的方法估计,极大似然的方法要求模型的形式必须准确,如果参数形式不正确,将得到错误得结论,即先验分布将影响后验分布的准确性。而多重插补所依据的是大样本渐近完整的数据理论,在数据挖掘中的数据量都很大,先验分布将极小的影响结果,所以先验分布的对结果的影响不大。(2)贝叶斯估计仅要求知道未知参数的先验分布,没有利用与参数的关系。而多重插补对参数的联合分布作出了估计,利用了参数间的相互关系。

以上四种插补方法,对于缺失值的类型为随机缺失的插补有很好的效果。两种均值插补方法是最容易实现的,也是经常使用的,但是它对样本存在极大的干扰,尤其是当插补后的值作为解释变量进行回归时,参数的估计值与真实值的偏差很大。相比较而言,极大似然估计和多重插补是两种比较好的插补方法,与多重插补对比,极大似然缺少不确定成分,所以越来越多的人倾向于使用多值插补方法。

一般小数据用前两种方法比较简单,企业中大数据的缺失值处理可以用后两种方法。

四、去噪

1.      噪声的识别

“什么是噪声?”噪声是被测量的变量的随机误差或方差。可以使用基本统计描述技术(如盒图和散点图)和数据可视化方法来识别可能代表噪声的离群点。

①  盒图识别离群点:

四分位数极差(IQR):IQR=Q3-Q1。Q1,Q3分别为第一三四分位数。

盒图识别可疑离群点的规则是:落在第3个四分位数之上或第1个四分位数之下至少1.5*IQR处的值。在分析数据之前,可以先画出该变量的盒图,可以看出落在1.5倍四分位数极差之外的数的多少,如果离群点比较多,则需对该变量做进一步的处理。

②  方差标准差识别离群点

标准差度量均值的发散。一般来说,一个观测值一般不会远离均值超过标准差的数倍。超过均值的正负3倍的标准差的样本可以看成离群点。(数值分布在(μ—σ,μ+σ)中的概率为0.6526,数值分布在(μ—2σ,μ+2σ)中的概率为0.9544,数值分布在(μ—3σ,μ+3σ)中的概率为0.9974)

③  数据可视化

④  聚类检测离群点

将类似的值组织成群或簇,直观地,落在簇集合之外的值被视为离群点。

2.      光滑数据,去掉噪声

①  分箱

通过考察数据的近邻(即周围的值)来光滑有序数据值。可以用箱均值、箱中位数、箱边界光滑。对于用箱均值光滑,箱中的每一个值都被替换为箱中的均值,中位数同理。对于用箱边界光滑,给定箱中的最大值和最小值同样被视为边界,而箱中的每一个值都被替换为最近的边界值。(用分箱离散化的时候可以用)

②  回归

即用一个函数拟合数据来光滑数据。

五、归一化、标准化的区别

(1)      归一化

常用的方法是对原始数据进行线性变换把数据映射到[0,1]之间。注意在数据流场景下最大值与最小值是变化的。另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。

归一化的依据非常简单,不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。比如两个人体重差10KG,身高差0.02M,在衡量两个人的差别时体重的差距会把身高的差距完全掩盖,归一化之后就不会有这样的问题。

(2)      标准化

常用的方法是z-score标准化,经过处理后的数据均值为0,标准差为1,计算时,可以通过现有样本对均值和方差进行估计。在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

标准化的原理比较复杂,它表示的是原始值与均值之间差多少个标准差,是一个相对值,所以也有去除量纲的功效。同时,它还带来两个附加的好处:均值为0,标准差为1。均值为0可以使数据以0为中心左右分布,而数据以0为中心左右分布会带来很多便利。比如在去中心化的数据上做SVD分解等价于在原始数据上做PCA。每个变量的重要程度正比于这个变量在这个数据集上的方差。如果我们让每一维变量的标准差都为1(即方差都为1),每维变量在计算距离的时候重要程度相同。

(3)      两种方法的选择

在涉及到计算点与点之间的距离时,使用归一化或标准化都会对最后的结果有所提升,甚至会有质的区别。如果把所有维度的变量一视同仁,在最后计算距离中发挥相同的作用应该选择标准化,如果想保留原始数据中由标准差所反映的潜在权重关系应该选择归一化。另外,标准化更适合现代嘈杂大数据场景(标准化要求服从正态分布,所依据的原始数据的信息多于归一化)。

(参考http://www.cnblogs.com/zhaokui/archive/2016/01/08/5112287.html)

 

 

原创粉丝点击