深度解析数据挖掘中的数据理解和预处理

很多人说,数据准备工作真是个“体力活”,耗时耗力不说,还异常的枯燥无味 。建模之前的数据处理确实是平淡的,它往往不需要多高的智商,多牛的编程技巧,多么高大上的统计模型 。但是,它却能时时触发你的兴奋点,因为它需要足够的耐心和细心,稍不留神就前功尽弃 。在这次的内容里,我首先会从“数据理解”、“变量类型”和“质量检查”三个方面进行阐述,然后会以一个自己做过的实际数据为例进行展示 。
一、数据理解
拿到数据后要做的第一步就是理解数据 。什么是理解数据呢?不是简单看下有多少Excel表,有多少行,多少列,而是要结合自己的分析目标,带着具体的业务需求去看 。
首先,我们需要明确数据记录的详细程度,比方说某个网站的访问量数据是以每小时为单位还是每天为单位;一份销售数据记录的是每家门店的销售额还是每个地区的总销售额 。
其次,我们需要确定研究群体 。研究群体的确定一定和业务目标是密切相关的 。比方说,如果我们想研究用户对产品的满意度与哪些因素有关,就应该把购买该产品的所有客户作为研究群体;如果我们想研究用户的购买行为受哪些因素影响,就应该同时考察购买人群和非购买人群,在两类人群的对比中寻找关键因素 。
研究群体的确定有时也和数据的详细程度有关 。比如我们想研究“观众影评”对“电影票房”的影响,我们既可以把“每部电影”看成一个个体,研究“影评总数”对“电影总票房”的影响,也可以把“每部电影每天的票房”看成一个个体,研究“每天的影评数”对“每天的电影票房”的影响 。具体选择哪一种取决于我们手上有什么样的数据,如果只有总票房和总影评数的数据,那我们只能选择第一种;如果有更详细的数据,那就可以考虑第二种方案 。
需要注意的是,这两种方案还会影响我们对于模型的选择 。例如,如果研究“每天的影评数”对“每天电影票房”的影响,那每部电影又被细分为很多天,同一部电影不同时间的票房会有较高的相似性,这就形成了一种层次结构,可以考虑使用层次模型( model)进行分析 。
最后,当我们确定了研究目标和研究群体后,我们需要逐一理解每个变量的含义 。有些变量和业务目标明显无关,可以直接从研究中剔除 。有些变量虽然有意义,但是在全部样本上取值都一样,这样的变量就是冗余变量,也需要从研究中剔除 。还有一些变量具有重复的含义,如“省份名称”和“省份简称”,这时只需要保留一个就可以了 。
【深度解析数据挖掘中的数据理解和预处理】二、变量类型
所有变量按其测量尺度可以分成两大类,一类是“分类变量”,一类是“数值变量” 。不同类型的变量在处理方法和后期的模型选择上会有显著差别 。
【分类变量】
分类变量又称属性变量或离散变量,它的取值往往用有限的几个类别名称就可以表示了,例如“性别”,“教育程度”,“收入水平”,“星期几”等 。细分的话,分类变量又可分为两类,一类是“名义变量”,即各个类别间没有顺序和程度的差别,就像“手机系统”中ios和安卓并没有明显的好坏差别,“电影类型”中“动作片”和“科幻片”也都是一样的,说不上哪个更好或更差 。另外一类是定序变量,即不同类别之间存在有意义的排序,如“空气污染程度”可以用“差、良、优”来表示、“教育程度”可以用“小学、初中、高中、大学”来表示 。
当研究的因变量是分类变量时,往往对应特定的分析方法,我们在后面的章节会陆续讲到,这里暂且不谈 。当研究中的自变量是分类变量时,也会限制模型选择的范围 。有些数据挖掘模型可以直接处理分类自变量,如决策树模型;但很多数据挖掘模型不能直接处理分类自变量,如线性回归、神经网络等,因此需要将分类变量转换成数值变量 。