数据处理--缺失值处理&异常值处理

缺失值处理:

造成数据缺失的原因是多方面的,主要可能有以下几种:

  1. 有些信息暂时无法获取,致使一部分属性值空缺出来。
  2. 有些信息因为一些人为因素而丢失了。
  3. 有些对象的某个或某些属性是不可用的。如一个未婚者的配偶姓名。
  4. 获取这些信息的代价太大,从而未获取数据。
空值处理的重要性:

空值的存在,造成了以下影响:

  1. 系统丢失了大量的有用信息;
  2. 系统的不确定性更加显著,系统中的确定性成分更难把握;
  3. 包含空值的数据会使挖掘过程陷入混乱,导致不可靠的输出。
空值处理的方法:
一、删除元组

将存在遗漏信息属性值的对象(记录)删除,从而得到一个完备的信息表。这种方法在对象有多个属性缺失值、被删除的含缺失值的对象与信息表中的数据量相比非常小的情况下是非常有效的。然而这种方法丢弃了大量隐藏在这些对象中的信息。在信息表中对象很少的情况下会影响到结果的正确性,可能导致数据发生偏离,从而引出错误的结论。

二、数据补齐

这类方法是基于统计学原理用一定的值去填充空值,从而使信息表完备化。数据挖掘中常用的有以下几种补齐方法:

  1. 人工填写
    这个方法产生数据偏离最小,是填充效果最好的一种。当数据规模很大、空值很多的时候,该方法是不可行的。

  2. 特殊值填充
    将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。这样将形成另一个概念,可能导致严重的数据偏离,一般不使用。

  3. 平均值填充
    如果空值是数值属性,就使用该属性在其他所有对象的取值的平均值来填充该缺失的属性值.
    如果空值是非数值属性,就根据统计学中的众数原理,用该属性在其他所有对象出现频率最高的值来补齐该缺失的属性值。

  4. 热卡填充(就近补齐)
    对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题选用不同的标准来对相似进行判定。

  5. K最近邻法
    先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。

  6. 使用所有可能的值填充
    这种方法是用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是当数据量很大或者遗漏的属性值较多时,其计算的代价很大,可能的测试方案很多。

  7. 回归
    基于完整的数据集,建立回归方程(模型)。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。

  8. 期望值最大化方法(EM)
    在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,通过观测数据的边际分布可以对未知参数进行极大似然估计。它一个重要前提:适用于大样本。有效样本的数量足够以保证ML估计值是渐近无偏的并服从正态分布。但是这种方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。

三、不处理

直接在包含空值的数据上进行数据挖掘。这类方法包括贝叶斯网络和人工神经网络等。

异常值处理

异常值,即在数据集中存在不合理的值,又称离群点。

异常值的判别方法:
  1. 简单统计分析
    对属性值进行一个描述性的统计(规定范围),从而查看哪些值是不合理的(范围以外的值)。

  2. 3δ原则
    若数据服从正态分布:根据正态分布的定义可知,距离平均值3δ之外的概率为 P(|x-μ|>3δ) <= 0.003 ,这属于极小概率事件,在默认情况下我们可以认定,距离超过平均值3δ的样本是不存在的。因此,当样本距离平均值大于3δ,认为该样本为异常值。
    正态分布
    计算方法
    根据概率值的大小可以判断 x 是否属于异常值。

  3. 使用距离检测多元离群点
    当数据不服从正态分布时,可以通过远离平均距离多少倍的标准差来判定,多少倍的取值需要根据经验和实际情况来决定。

异常值的处理方法:
  1. 删除含有异常值的记录
  2. 将异常值视为缺失值,使用缺失值处理方法来处理
  3. 用平均值来修正
  4. 不处理