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


但无论哪种情况,如果变量的缺失率过高,都会影响数据的整体质量,因为数据所反映的信息实在太少,很难从中挖掘到有用的东西 。
对于不允许缺失的变量来说,如果存在缺失情况,就必须进行相应的处理 。如果一个变量的缺失程度非常大,比方说达到了70%,那就考虑直接踢掉吧,估计没救了 。如果缺失比例还可以接受的话,可以尝试用缺失值插补的方法进行补救 。
插补的目的是使插补值能最大可能的接近其真实的取值,所以如果可以从其他途径得到变量的真实值,那一定优先选择这种方法 。比如某个公司的财务信息中缺失了“最终控制人类型”和“是否国家控股”这两个取值,这些可以通过网上的公开信息得到真实值;再比如缺失了“净利润率”这个指标的取值,但是却有“净利润”和“总收入”的取值,那就可以通过变量间的关系得到相应的缺失值,即净利润率=净利润/总收入 。
当然,更多的时候,我们无法得到缺失值的真实信息,这时就只能借用已有的数据来进行插补了 。对数值变量来说,可以用已观测值的均值、中位数来插补缺失值;对分类型变量来说,可以用已观测数据中出现比例最高的类别取值来进行插补 。这些方法操作起来非常简单,但它们都是对所有缺失值赋予了相同的取值,所以当缺失比例较大时,可能会扭曲被插补变量与其余变量的关系 。
更复杂一点的,我们可以选择模型插补方法,即针对被插补变量和其它自变量之间的关系建立统计模型(如回归、决策树等),将模型预测值作为插补值 。
如何处理缺失值是一个很大的研究课题,我们这里只是介绍了最简单可行的方法,有兴趣的读者可以参阅和Rubin 2002年的专著“withData” 。欢迎加入大数据学习交流分享群:一起吹水交流学习(?点击即可加入群聊)
【变量取值合理性检查】
除了缺失外,我们还要考察每个变量的取值合理性 。每个变量都会有自己的取值范围,比如“用户访问量”、“下载次数”一定是非负的,“投资收益率”一定在0~1之间 。通过判断变量的取值是否超出它应有的取值范围,可以简单的对异常值进行甄别 。
除了根据变量的取值范围来检查变量质量外,还可以根据变量之间的相互关系进行判断 。例如一家公司的“净利润率”不应该大于“总利润率”等 。只有通过了各个方面检测的数据才是一份高质量的数据,才有可能带来有价值的模型结果 。
四、实例分析——电影票房分析
最后,我们给出一个实例分析 。在这个例子中,我们的目标是研究电影哪些方面的特征对电影票房有影响 。
我们有两方面的数据,一是描述电影特征的数据,二是描述电影票房的数据 。由于我们关注的是北美的票房市场,所以描述电影特征的数据可以从IMDB网站得到,它是一个关于演员、电影、电视节目、电视明星和电影制作的在线数据库,里面可以找到每部上映电影的众多信息;电影每天的票房数据可以从美国权威的票房网站BoxMojo得到,上面记录了每部电影上映期间内每天的票房数据 。
我们将从IMDB得到的数据放到“.csv”文件中,将从BoxMojo中得到的数据放到“.csv”文件中 。这里,我们以2012年北美票房市场最高的前100部电影为例进行讲解 。下表给出了这两个数据集中包含的所有变量以及相应的解释 。

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

文章插图
两个数据集中包含的所有变量以及相应的解释
在这两个数据中,.csv数据的记录是精确到每部电影的,而.csv数据精确到了每部电影中每天的票房数据,是精确到天的 。上表中给出的变量中,除了电影名称和ID外,“电影类型”“MPAA评级”(美国电影协会对电影的评级)和“星期几”是分类型变量;“放映时长”、“制作预算”、“电影每天的票房”和“每天放映的影院数”是数值型变量 。两份数据都不存在缺失值 。