离群点检测:cell-based挖掘DB(r,p)离群点

离群点检测:cell-based挖掘DB(r,p)离群点

Background

循环嵌套发现$DB(r,\pi)$离群点在离群点数目较少时,表现出线性的性能,因为循环经常提前退出,尽管它的算法复杂度为$O(N^2)$。当数据集很大时,开销主要来源是不能将数据集放入主存,而对检查每个对象都需要潜在地遍历整个数据集

Content

将数据空间划分为$l$维网络,网络单元格对角线长度为$\frac r2$,边长为$\frac{r}{2\sqrt l}$;

对于单元格$c$,其余单元可以分为两类:

  • $C_1$层:直接与$c$连接的单元;
  • $C_2$层:$c$任意方向远离1格/2格的单元;

image-20240527152616912

有两条几何上的先验性质(凸包):

  • $\forall x\in c,y\in C_1$,必有$dis(x,y)\le r$;
  • $\forall x\in c, dis(x,y)\ge r$,必有$y\in C_2$

那么有两条相应的启发式剪枝规则:

  • $|c|+|C_1|>\left \lceil \pi N \right \rceil$,说明$c$内对象均不离群的;
  • $|c|+|C_1|+|C_2|<\left \lceil \pi N \right \rceil+1$,说明$c$内对象均离群的;

大部分点经过两个规则的判断都可以确定是否是离群点了;

算法如何降低空间开销?

答案是三次数据集的扫描;

  • 第一次扫描:忽略掉空间内没有对象的单元格;
  • 第二次扫描:排除掉已经可以剪枝确认是否离群的点;
  • 第三次扫描:检查剩下的单元,找到所有离群点,