第九章 异常检测 数据挖掘:概念与技术 教学课件1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
例如,设NL算法用50%的缓冲区。数据集被分成A、B、 C、D 四个逻辑块。每个阵列和块能容纳1/4数据集的对象 数。数据块和阵列如下图所示。
9
数据块填充阵列的顺序为:
序号 第一阵列 第二阵列
1. A
B、C、D
2. D
A、B、C
读4块(A、B、C、D) 读2块(B、C)
3. C
D、A、B 读2个块(A、B)
单击此处编辑母版标题样式
第九章 异常检测
1
9.1.3 异常检测方法
对于不考虑数据空间或时间的基本异常检测 方法大致可以分成四类:
基于统计分布的异常检测(Distribution-based outlier detection)
基于偏差的异常检测(Deviation-based outlier detection)
4. B
C、A、D 读2个块(A、D)
循环4次,总共读了10个块,遍历数据库的次数总计为 10/4=2.5次。
NL算法的复杂性为O(kN2)。NL算法不受数据集大小和维数的 限制,但是当数据集较大时,NL算法需要多次遍历数据库。 如果数据集被划分为n=200/B个块(B是缓冲区的百分比), 那么(i)算法NL需读的块的总数为n+(n-2)(n-1),(ii)遍 历数据库的次数≥n-2。
将数据集中的数据划分成块,每块大小为0.5B%。对 象以块为单位读入阵列中,然后直接计算数据对象间的 距离。第一阵列中的每个对象都有一个计数器,用于记 录对象dmin邻域内的对象数目。某个计数器的值一旦大 于一个异常的dmin邻域内最多对象数目M=N(1-pct) ,该 计数器就停止计数。
6
算法:嵌套-循环(NL)算法(D,dmin,M) 输入:数据对象集合D,邻域半径dmin,一个异常的dmin邻域内最多对象
(3.1)用另一个数据块填充第二阵列,将那些从未填充过第一阵列的数据 块记录下来
7
(3.2)for第一阵列中未标记的每个数据对象ti
Baidu Nhomakorabea
(3.2.1)for第二阵列中的每个对象tj
if dist(ti,tj)dmin,then counti+1
if counti>M,则标记ti不是一个异常,处理下一个ti
12
性质1:同一单元中两个对象间的最远距离为dmin/2,即 m d a ( t i i x ,t s j) ( t t i, ) tj C x ,y d m / i 2 n 性质2:若Cu,v是Cx,y的L1邻域,那么Cu,v中的对象ti与Cx,y中
对象tj间的最大距离为dmin,即
m d a ( t i i,t x j s )ti t ( ) C u ,v ,tj C x ,y ,C u ,v L 1 ( C x ,y ) d m
这是因为相邻单元中对象间的最远距离不会超过单元对角 线长度的2倍。
13
2)2层邻域L2
单元Cx,y的2层邻域L2的定义为:
L2(Cx,y)={ Cu,v|u=x3, v=y3, Cu,v L1(Cx,y), Cu,vCx,y} 每个非边界单元有72-32=40个L2邻域。
y+3 L2
L2
L2
L2
L2
(4)输出第一阵列中每一个未被标记的对象ti,表示它是一个异常
(5)if第二阵列曾经充当过第一阵列,then stop
else交换第一阵列和第二阵列的角色,转(2)
算法(2)考察了第一阵列中对象间的距离,(3)考察第一和第二阵 列中对象间的距离,(5)保证数据集中的每个对象都能被作为中心进行考 虑。
基于距离的异常检测(Distance-based outlier detection)
基于密度的异常检测(Density-based outlier detection)
4
当考虑对象间的空间关系时,常用的异常 检测方法有两种:
(1)基于图的异常检测(Graph--based outlier
detection) (2)基于多维空间的异常检测(Multi-
11
1. 相关概念
1)1层邻域L1
单元Cx,y的1层邻域L1是按通常意义定义的Cx,y的直 接邻域,即
L=1(Cx,y)={ Cu,v|u=x1, v=y1, Cu,vCx,y}
图9.2所示的是非边界单元的8个L1邻域。
L1
L1
L1
y
L1
L1
Cx,y
L1
L1
L1
x
l dmin 22
单元Cxy的1层邻域L1
dimensional space-based outlier detection)
5
9.2 基于距离的异常检测
9.2.1 嵌套-循环(Nested-Loop,NL)算法
基于距离的异常:没有“足够多”近邻的对象。
主要思想:假设N是数据集中对象数,缓冲区的大小 为数据集大小的B%,算法将整个缓冲区分成两个阵列, 分别称为第一阵列和第二阵列。
L2
L2
y+2 L2
L2
L2
L2
L2
L2
L2
y+1 L2
L2
L1
L1
L1
L2
L2
y L2
L2
L1
Cx,y L1
L2
L2
y-1 L2
L2
L1
L1
L1
L2
L2
y-2 L2
L2
L2
L2
y-3 L2
L2
L2
L2
x-3 x-2 x-1
x
L2
L2
L2
L2
L2
L2
x+1 x+2 x+3
图9.3 单元的2层邻域L2
10
9.2.2 基于单元(Cell-Based)的算法
基于单元的算法将空间区域划分为矩形单元,通过使 用单元-单元的处理来代替NL算法中对象-对象的处理, 避免了复杂性中的N2项,从而提高效率。
基于单元的算法分为两个:FindAlloutsM和 FindAlloutsD。FindAlloutsM适用于检测存储于主存的 数据集中的异常,FindAlloutsD适用于处理大型、磁盘 数据集。
14
性质3:假如Cu,v Cx,y,Cu,v既不是Cx,y的L1邻域,也不是
数目M
输出:D中的异常对象
步骤:
(1)用数据集D中的一个数据块填充第一阵列
(2)for 第一阵列中每个数据对象ti,do
(2.1)counti=0
(2.2)for第一阵列中的每个对象tj (2.2.1)if dist(ti,tj)dmin,then counti+1 //dist()是距离函数 (2.2.2)if counti>M,then 标记ti不是一个异常,处理下一个ti (3)当第一阵列中的对象都比较完后,do
相关文档
最新文档