一种基于加权KNN的大数据集下离群检测算法_王茜(3)
发布时间:2021-06-07
发布时间:2021-06-07
大数据,数据挖掘
Q为uerHeappp中的队首划分。
,步骤5 如果P.则算法停止,输出uer≤minDKDistpp否则转到步骤3。P.uer与P.lower,pp
步骤6 把当前节点的孩子节点插入节点链表,并以降序排列,转到步骤2。
在候选划分计算阶段,首先对数据集DataSet中的点采用B将数据集中的点聚类成一些划分,并建立一IRCH算法,。通过计算每个划分的上界值(棵索引树CFreeP.uer)-Tpp)和下界值(来寻找候选划分。算法用一个集合S来P.lower临时保存当前找到的这样一些划分:这些划分有最大的下界值并以该值降序排列,且S中至少包含n个点,当S中的点,大于n个时更新m其为S中划分的最小下界值。inDkDist当每个划分都计算完后,以最后得到的minDKDist值找候选划分并用集合candSet存放。candSet中得到的划分为P.
个,则删除其离p最远的对象,并更新p.Dkdist值。此步中有两个减少计算量的优化措施:当寻找到点p的最近的第k个邻居的距离小于m算法则停止计算,此时点pinDkDist时,不可能是离群点;当从节点链表nodeList中循环寻找点p的最近的k个邻居时,如果当前节点与点p间的距离的最小值比当前寻找到的Dk(还大时,则从节点链表中删除此节点,p)即不必再计算该节点和其子节点中所包含的点与点p的距离,因为它们不可能是点p的最近的k个邻居点。
在计算前n个离群点时先用一个集合OutHeap保存当前找到的前n个具有最大Dk的点,然后继续计算候选点的
k
值,如果比当前集合中的点的mDinDK(OutHeap中所有点
的最小的Dk值)值还大,则更新集合O并删除集合utHeap,
k
如果有几个这样的点,则要删除OutPHeap中D最小的点,k
的点为这几个点中w权重)最小的点。计算每个点的D值k(
uer且比minDKDist大的划分。pp
,然后再为c这andSet中的每个划分寻找邻居划分NPSet些邻居划分为与当前划分的最近距离比当前划分的上界值小/的划分。之后根据性质1,这些划分中如果其minDKDist2邻域内的点超过n个,则从candSet和NPSet中删除这些划分,计算候选划分的具体步骤如下:
;输入:数据集D邻居数K;离群点数n。ataSet
步骤1 初始化临时划分集合S和P.lower的最小值
kk
(),()使其S=Φ,minDminD=0。
的具体步骤如下:
k
,输入:邻居数k,离群点的最小DRtree的根节点Root-
,值m当前点p。inDkDist
k
(步骤1 初始化D=∞,w=0,nearHeak(p=Φ。p)p)
步骤2 从树的根节点开始生成一个节点链表。如果当(,前节点是叶子节点,则计算distp,q)q为叶子节点中包含的
数据点。
k
(,步骤3 如果d则把点q加入以Dkist≤D(p,q)p)
(降序排列的集合nearHeap中。p)
步骤4 如果|则删除集合中离p最远的nearHeak,|>pk
((点。此时又如果有|则D且rnearHeak,=distr)|=pp)p,
步骤2 对数据集D并初始化ataSet调用BIRCH算法,。对每个划分P计算其P.一棵CFreeuer和P.lower。-Tpp
k
(),步骤3 如果P.则P并入集合S中。lower≥minD
为nearHeap中离p最远的点。
kkk
(),(步骤5 如果D则返回D算法结in(D≤mp)p)
步骤4 如果|则把S中具有最小P.Slower的划|≥n,分删除。
k
(),步骤5 如果|则更新m转到步骤3,否则Sn,inD|≥
算,否则返回步骤3。
步骤6 把当前节点的子节点加入节点链表,并以降序排列,转到步骤2。
k
(当每点的D计算得到后,则以如下步骤检测出离群p)
转到步骤6。
步骤6 对于数据集D如果其P.ataSet上的每个划分,
k
(),。则cuer≥minDandSet=candSetP}∪{pp
步骤7 对c如果MAandSet上的所有划分,X(P,Q)≤
点:
输入:candSet候选集,NPSet邻居集,k邻居数,n离群点数,p当前点。
,步骤1 初始化离群点集合O其utPHeainDkDistp和m
k
,minDkDist表示所有点最小的DOutPHeaminDkDist=p=Φ,
,,。则NP.uer且P∈canSetQ∈PsetPSet=NPSetQ}∪{pp步骤8 如果|P∪{Q:Q∈candSet∪NPSet且MAX-
/则cDIST(P,Q)inDkDist2}andSet=candSet-≤m|>n,{。P}
。步骤9 输出canSet和NPSet3.2.2 离群点检测阶段
kk
。在计算D为了找到离群点,需要计算每个点的D阶
0。
步骤2 用候选划分计算阶段得到的候选划分集和邻居。集中的点创建一棵Rtree-
k
(。步骤3 计算每个数据点的D和wk(p)p)
k
(,步骤4 如果D则点p有可能是离群inDkDist>mp)
段,先以c此树andSet和NPSet中的点建立一个Rtree结构,-然后再以这个结的结构也是一棵平衡树且与CFree类似,-T
k
构计算每个点的D和权重wk,其计算方法与上阶段计算划
点,插入集合OutPHeap中。
步骤5 如果|则删除集合OOutPHeautPHea|>n,pp中Dk最小的点,如果有几个这样的点,则删除的点为这几个点中Wk最小的点。
步骤6 如果|则更新mOutPHeainDkDist=min|=n,p
k
(),并返回步骤3,否则输出ODutPHeap。
分的上界值和下界值类似。该过程用nearHeap来保存当前
k
(点p的最近k个邻居,用D来跟踪点p与其最近的第kp)
个邻居间的距离,以Rtree结构的根节点Root为入口来寻找-当前点p的最近的k个邻居。首先把Root节点插入一个节如果当前寻找到的节点不是叶子节点,点链表nodeList中,则把当前节点插入以此节点与点p间的最小距离MINDIST升序排列的节点链表nodeList中。算法循环寻找点p的最
k
如果当前点q与点p间的距离d近的k个邻居,ist(<Dp,q)
(,则将点q插入以其与点p间的距离降序排列的集合p)
算法首先计算候选划分,这样可以有效约减数据集中大量的非离群点的数据,在后面计算离群点时就可以有效地避免扫描数据集中大量的数据点。在候选划分中计算离群点时
k
我们引入了数据点权重的概念,对具有相同D值的数据对
象,那些与其最近的k个邻居的平均距离(权重)更大的点更这样就可以更准确地删除输出集合中不可能可能是离群点,
nearHeaearHeap中的相应位置。如果np中的对象数超过k
·179·