大数据,数据挖掘
本文提出了一种基于加权KNN的高效离群检测算法,离群点定义为那些具有最大的与第k个邻居的距离和权重的其权重为与最近的k个邻居的平均距离。算法由两部分点,
组成,其首先将数据集划分成互不相交的子集,使用基于划分的算法找到候选子集,然后从候选子集中利用加权的思想寻找离群点,通过一些剪枝方法减少对一些非离群点的计算。
因为B维数比较高的IRCH在聚类数据时对数据量比较大、数据具有较好的时间性能。算法将数据集中的点聚集成一些并用聚类中点的MB聚类小的聚类划分,R来代表这些划分,(后的划分生成一棵索引树C此树结构是一棵平衡树,Free-T除叶子节点外,中间节点都包含指向其孩子节点和父节点的树叶节点是一个聚类,我们这里称为划分)并通过剪枝索引,
方法从这些划分中找到有可能包含离群点的候选划分。第二阶段是寻找离群点,使用加权的方式在候选划分包含的点中找到前n个离群点。3.2 算法描述
3.2.1 候选划分计算阶段
为了找出候选划分,需要计算每个划分P距离的上界值(),和下界值(且对划分中包含的任意点P.uerP.lower)pp
k
(有P.lower≤Duer。因此首先介绍P.uer≤P.p,p)pppp
和P.以MAlower的计算方法:XDIST和MINDIST为标准
2 相关定义
)定义2.1 基于距离的离群点(DistanceasedOutliers-B
k
(表示点p与其最近定义1 对数据集上任意点p,Dp)
的第k个邻居的距离,n表示需要找到的离群点个数,k表示最近邻居数。当且仅当数据集中最多只有n-1个点p′满足
[k6]
,。则点p是DkDk(′)>D(n离群点pp)
性质1 若点p在其D/即N2邻域内的点数大于k,((/))则点p与其D/NbrD2k,2邻域内的所有点均不是>p,离群点。其中D表示前n个离群点Dk距离的最小值,Nbr((/))表示点p的D领域内的邻居,表示点D)N(NbrD2p,p,
)2领域内的邻居数。因为N(Nbr(D)Nbr≥N(p在D/p,(/))即点p与其D领域内的任意点q之间的距离D2k,>p,
本文数据集中各点之间的距离采用欧氏距离dist(≤D,p,q)的平方。
2.2 数据点与最小边界矩形之间距离的定义
[6]
,最小边界矩形(表minimumboundinrectanleMBR) gg
寻找t个最靠近P的划分,t个划分包含的数据点至少达到k个,P.uer为t个划分中离P最远的那个划分到P的最近pp距离,而P.lower为t个划分中离P最远的那个划分到P的最远距离。
(具体计算过程为:输入参数为R包含所有划分的索oot
k
,。首先用两个集合引)离群点的最小D值)minDkDist(
其为lowerHeaerHeap和uppp来保存满足如下条件的划分,与当前划分具有最近的下界值和上界值,且在lowerHeap与
示的是数据集中距离相近点集合的边界值表示的这样的一个…,,集合。δ维下的数据点p表示为p=[δ维下1,2,pppδ]的边界矩形R用其主对角线上的两个端点来表示,两个端点,…,,为r=[且rrrrr′=[r′,r′,r′]r′,1≤1,2,…,12i≤iδ]δ
uerHeaowerHeaer-ppp中降序排列。然后通过lp和upp
更新方式为:如果新扫描Healower与P.uer,p来更新P.pp到的一个划分Q与当前划分P有MINDIST(Q,P)low-<P.
则把划分Q加入l如果ler,owerHeaowerHeap中,p中包含的点多于k个,则删除其中离P最远的划分,此时如果low-则P.erHealower更新为lowerHeap中的数据点多于k个,p中离P最远的划分与P间的最近距离。P.uer的更新也pp,是一样。如果P.则划分Q中不可uer值小于minDkDistpp算法停止。算法首先从根节点开始寻找,如能包含有离群点,
果其不是叶子节点,则把当前节点的孩子节点插入以该节点与划分P间的距离升序排列的链表中。对于链表中的任意节点,如果其与P的最近距离大于P的下界值且与P的最远距离大于P的上界值,则把此节点从链表中删除,这样就可以减少很多不必要的计算。算法具体步骤如下:
k
;输入:离群点的最小D值CFree的根节点Root-T
in。≤
定义2 数据点p与矩形R之间的最小距离当pri-i,i<ip2δ
MINDIST(R)=∑ixxr′,当r′=1i,i=p,i-ii<i。pp其它0,
定义3 数据点与矩形R之间的最大距离
rr′i+i
′-pii,当pi<2δ2。MAXDIST(R)=∑i=1xxi,i=p,其它ri-i,p
定义4 矩形R与S之间的最小距离
rs′,当s′<ri-iii2δ
MINDIST(R,S)=∑ixxr′,当r′<s=1i,i=i-iii。其它0,
定义5 矩形R与S之间的最大距离
2δ{}。MAXDIST(R,S)=∑ixxaxs′-rr′-s||,||=1i,i=miiii
;邻居数k;当前划分P。minDKDist
步骤1 初始化P.lower=P.uer=∞,lowerHeappp=
uerHeappp=Φ。
步骤2 从树的根节点开始生成一个节点链表,如果当前节点是叶子节点,则用叶子节点划分Q计算MINDIST(P,,和MA否则转到步骤6。Q)XDIST(P,Q)
步骤3 如果M则把划分QINDIST(P,Q)lower,≤P.插入以P.如果MAlower降序排列的lowerHeaXDISTp中;(则把当前划分Q中插入以P.P,Q)uer,uer降序≤P.pppp排列的uerHeappp中。
步骤4 如果|则删除llowerHeaowerHea|≥k,pp的队首元素,此时又如果有|则P.lowerHeak,lower=MIND|≥-p,其中Q为l如果IST(P,Q)owerHeap中的当前队首划分;则删除u此时又如uerHeak,erHea||≥pppppp的队首元素,
,果有|则P.其中uerHeak,uer=MAXDIST(P,Q)|≥ppppp
2.3 数据点权重的定义
定义6 对数据集上的点p,其权重定义为Wk(=p)
k
(())/其中n表示离p最近的第i个distnk,∑i=1i(i(p,p)p)
()表示点p到它的最近第i个邻居的距离,邻居,distni(p,p)即点p的权重为其到最近的k个邻居的平均距离。
3 基于加权的离群点检测算法
3.1 算法思想
算法是在大数据集下进行离群点挖掘,其分为两个阶段。第一个阶段是寻找候选划分,由于数据量比较大,为了提高算
[2]法的时间效率,开始阶段采用了B算法进行预聚类,IRCH1
·178·