0%

异常值发现与处理

异常值发现与处理异常值:

==异常值(Outlier)或利离群点:故意、误差和错误==

异常值的发现

1、人工

最有效,但是最费力

2、简单的统计分析

对于一些错误(不可能)的数据或极小概率时间,如身高出现负数或陨石砸到我头上

有时也会有一些矛盾的、重复的数据,也是异常值

3、3$\delta$原则

在数据服从正态分布的时候,$P(|x-\mu|>3\delta)<=0.003$,对于这种极小概率事件可以视为异常值

4、箱型图分析(Tukey test)

一些定义

  • 四分

    • 第一四分位数Q1:

      • (n+1)/4所表示的数,如果没有整除则带加权。如10.25是的${1\over 4}第10个和{3\over 4}第11个$
    • 中位数Q2:顾名思义

    • 第三四分位数Q3:定义类似第一四分位数

    • 四分位距:IQR=Q3-Q1(这个是数值的距离,Q1234都是数值不是位置)

  • 非异常值范围(内限范围):$[Q1-1.5IQR,Q3+1.5IQR]$ ,这里面的是可接受的,之外的是异常值

  • 外限范围:$[Q1-3IQR,Q3+3IQR]$

    • 内外限范围之间的叫做温和异常值
    • 外限范围外的叫做极端异常值

img

如上,变成一个箱子模样的东西

优缺点

  • 优点:
    • 1、与高斯分布的异常值识别一样简单明了,好实现
    • 2、四分位数有一定的抗耐性,就是极端异常数据可以任意远而不影响
    • 3、客观
  • 缺点:
    • 1、假如缺失值大量的集中在一遍,就不能精确衡量
      • 举个很简单的例子,有80%的数据是1,19.9%的数据是2,0.1%的数据是10000。这个时候箱型图会把后20%的数据给扔掉。
      • 可能你会想,对于这种情况把IQR加上一个较小的数是不是能够解决问题。但是假如10%是2,10%是10000,80%是1,这个时候理论上就没有异常值
      • 综上:箱型图适合处理比较散的数据
    • 2、数据量大的时候,用四分位数评价有局限性

pandas中的实现

1
2
3
4
data.boxplot()
plt.ylabel("y")
plt.xlabel("x")
plt.show()

5、基于模型检测

上面的两种方法,一个是已经有了模型,另一个是比较散的时候的普遍模型

类似,我们可以自己建立一个概率模型,低概率的对象视为异常点。

优缺点:

  • 适用于特征值较少的情况,高维数据检测效果不好
  • 有坚实的统计学基础

6、基于聚类

顾名思义,按照聚类的方法,如果一个点不强属于任何一个簇,那么这就是离群点

优缺点:

  • 基于线性和接近线性的聚类方法(k-means)对离群点检测是很有效的
  • 聚类算法产生的簇的质量对离群点的质量影响很大
  • 非常依赖簇的个数(对参数选择敏感)

7、基于邻近度

如knn,如果得到的邻近度比较都比较大,那么就是离群点

优缺点

  • 简单
  • 慢,大数据不适用
  • 对参数选择敏感,如k
  • 不能处理有不同密度的数据集(因为选用的是全局阈值k,不能考虑这种密度的不同)

8、基于密度

从密度上来说,离群点就是低密度的地方。

密度通常用邻近度来定义

  • 法1、找k个邻近点,取他们平均值的倒数作为密度
  • 法2、范围k中的点的个数

优缺点

  • 受到密度区域不同的影响小
  • 参数选择困难

One Class SVM

不会

Isolation Forest

不会

Robust covariance

好像就是用协方差来搞

异常值处理

1、不处理

一定范围内,减小一定的精确度。

因为对当前数据欠拟合,有时可能也会出现有不可思议的泛化能力

2、删除

对于少量的极端的,如$3\delta$范围外的或箱型图中外限范围外的,删掉会比较好

3、均值替换(单变量)

连续值建议不用众数和中位数来处理,这样容易过拟合。但是离散值可以用众数或中位数

平均值有一定的客观性

4、视作缺失值处理

相当于把异常的东西,试图使其不异常

5、去重

对于一些完全一样,又是在不会重复的情况下

6、盖帽法(单变量)

就是把超出范围的点全部修改为边界值

如:超过$3\delta$的数据全部改为$3\delta$时的值

7、分箱法(主要处理噪声数据)

分箱

  • 按深度分箱:每个箱子内的个数一样,按顺序放入
  • 按宽度分箱:每个箱中的数据都在一个范围内,这些范围等宽

处理

由于分箱的方法考虑的是相邻的值,所以这是局部平滑的方法。

目的是去噪,将连续数据变成离散数据

平滑方法

按箱的平均值,中位数,众数,边界值……

优缺点

  • 优点:增加粒度(数据的细化程度),消除边界的影响
  • 缺点:只保留了数据额的宏观特征

8、回归填补法

  • 1、先把非异常的数据的模型建立出来
  • 2、然后再预测异常值

9、多重插补法