基于密度的局部离群数据挖掘算法研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于密度的局部离群数据挖掘算法研究
许琳;赵茂先
【摘要】In order to study the outliers mining algorithm,we combined K-means algorithm with influenced local outlier factor (referred to as INFLOF)algorithm,and generated an algorithm which based on the K-means and influenced local outlier factor (referred to as K-INFLOF). Firstly,this method removed normal data from the dense areas near the center of the class,then called INFLOF algorithm excavate remaining data,thereby reducing storage of the intermediate results,greatly reduced the running time of the algorithm.Finally the accuracy and efficiency of K-INFLOF algorithm in data mining is verified by random data and real data experiments respec-tively.%为了研究局部离群数据挖掘方法,将K均值聚类算法和基于影响空间的局部离群因子算法相结合,构造了一种基于 K 均值和影响空间的局部离群因子的方法。
该方法首先通过聚类把靠近簇中心密集区域的正常数据剔除,然后再调用 INFLOF 算法对剩余数据进行挖掘,从而减少了中间结果的存储,大大减少了算法的运行时间。
最后分别通过随机数据和实际数据实验,验证了K-INFLOF算法在离群数据挖掘中的准确性和运行效率。
【期刊名称】《山东理工大学学报(自然科学版)》
【年(卷),期】2016(030)006
【总页数】5页(P7-11)
【关键词】离群数据挖掘;INFLOF算法;K-means算法;时间复杂度
【作者】许琳;赵茂先
【作者单位】山东科技大学数学与系统工程学院,山东青岛 266590;山东科技大学数学与系统工程学院,山东青岛 266590
【正文语种】中文
【中图分类】TP301.6
数据挖掘是在诸多实际问题中挖掘出隐藏在内的有效信息的过程[1].数据挖掘的研究主要聚焦在寻求数据集中大部分数据遵从适用的模式,但是,现实中那些偏离正常数据模式的数据点往往隐藏了更多有价值的信息,更值得去挖掘.离群数据挖掘在很多领域中得到应用,比如入侵检测[2]、金融欺诈检测[3]、医疗与公共卫生检测[4]、工业损检[5]等.自20世纪以来,各学术领域的专家提出了众多离群数据挖掘方法,最经典的方法有:基于统计的方法、基于聚类的方法、基于距离的方法和基于密度的方法.基于统计的方法[6]是假设待测数据符合已知特定的分布模型,凡是与该模型不吻合的数据点被当作离群数据.该方法需事先获得待测数据的分布模型,现实中这个条件往往无法满足.基于聚类的离群数据挖掘方法[7]是把离群数据挖掘当做聚类过程的附属工作,离群数据则是聚类过程中产生的副产品.该方法比较直观,而且有较长的研究历史,理论体系完整.基于距离的离群数据挖掘方法[8]是诺尔等人在20世纪90年代年提出的,该方法对离群点定义如下:如果待测数据中的某个对象o与大部分数据的距离较远,那么这个对象o被当作离群点.该方法不能挖掘出那些位于两个簇中间的离群点,即局部离群点.为了解决这个问题,21世纪初Breunig[9]提出了局部离群因子LOF (Local Outlier Factor)的方法,该方法是以待测数据中每个数据对象的最近邻居为出发点,计算每个对象的邻居与该对象的密度比,即LOF值,数据对象的离群程度随着LOF值的增大而增大. 但
是,当待测数据集中两个密度差别较大的簇靠近时,位于簇之间的临界数据点就会被容易误判成离群点.2006年Jen等人[10]提出了一种基于影响空间的局部离群挖掘INFLOF(Influenced Local Outlier Factor)方法. 该方法不仅考虑了数据点的最近邻居,还考虑了数据点的逆最近邻居,最近邻居和逆最近邻居的并集称为影响空间,然后再考察影响空间中数据与该数据的密度之比,即INFLOF值.数据对象的
离群程度随着INFLOF值增大而增大.由于INFLOF算法需要计算每个数据点的INFLOF值,所以增加了中间计算结果的存储,降低了算法的运行效率.为提高算法效率,本文提出一种K均值和INFLOF算法相结合的方法.
1.1 K均值算法
K均值算法也称作K-means算法,是目前最经典的聚类算法[11]. 该算法是假定数据集D,聚类的个数k和目标函数,首先随机生成k个最初的类中心,然后计算
剩下n-k个数据点到每一个类中心的距离,并比较距离的大小,把这n-k个对象
分配到与类中心距离最小的类中,然后再计算每个新生成的类均值. 不断重复上述过程,当目标函数最小时终止. 算法目标函数为d(oj,mi),其中oj表示数据集D
中第j个(j∈{1,2,...,k})数据,mi为第i(i={1,2,...,k})个类Ci的中心.类Ci的半径表
示为,n表示数据集D中的数据总数, ni为类Ci中的数据个数,ei为类Ci中的
数据对象[12].
1.2 INFLOF算法的基本概念
下面给出关于 INFLOF算法的相关概念,为了叙述方便,公式中符号定义如下:D 为假定的数据集,n表示数据集D的数据个数,o和p为数据集D中的对象.
定义1[10] 对象p的k距离.对象p和它的k个距离最近的对象中距离最远的点
o的距离,称为对象p的k距离,记作k-distance(p),对象o需要符合两个条件:(1)至少有k个对象o′∈D,满足;(2)至多有k-1个对象o″∈D,满足.
定义2[10] 对象p的距离邻域.数据集D中所有与对象p距离小于等于k-
distance(p)的对象的集合,叫做对象p的k距离邻域,记作Nk(p).
定义3[10] 对象p的逆k距离邻域. 数据对象p的逆k距离邻域为数据集D中k 距离邻域含有数据对象p的数据集合,记作RNNk(p),用符号表示为:
RNNk(p)={q|q∈D,p∈Nk(p)}.
定义4[10] 对象p的影响空间.对象p的影响空间的定义是对象p的k距离邻域和逆k距离邻域的合并,记作ISk(p),即
定义5[10] 对象p的局部密度.对象p的局部密度为对象p的k距离的倒数,记作den(p),即
根据上述定义,对象p的INFLOF值的计算公式定义如下:
如果对象p的影响空间中数据点的密度比对象p的局部密度大,那么INFLOF值越大,那么对象p成为离群点的几率越大.
由此可以得出INFLOF算法基本思想为:首先计算数据集中每个数据oi的INFLOF 值,然后将对象oi的INFLOF值进行降序排序,排在前面的数据对象oi离群性更强.
INFLOF算法是一种典型的基于密度的离群数据挖掘方法,该方法不仅可以有效挖掘出“局部”[13]和“全局”离群点,也可以挖掘出密度相差很大的数据集彼此靠近情况下的临界离群点.但INFLOF算法在对数据挖掘的过程中需要遍历整个数据集以计算每个数据点的INFLOF值,然而实际上具有较高密度的数据点一般不是离群点,所以算法运行过程中会产生庞大的结果存储,使算法的运行效率较低. K-INFLOF算法从这一点出发,由两个算法组成.首先调用K-means算法对数据集聚类,将那些非离群点剪枝,从而提高INFLOF算法的运行效率.剪枝规则为:对于每个类的数据对象计算其到类中心的距离,如果距离大于等于类半径Ri,相应的数据就被提取出来,组成离群数据候选集Q.其中,离群数据筛选条件为
综上所述,K-INFLOF算法步骤如下:
(1)在数据集D中的n个数据对象中选取k个数据点当做最初类中心;
(2)计算每一个数据对象到类均值的距离,并根据最小距离对相应数据进行划分;
(3) 重新计算每个类的均值,更新为类中心;
(4) 重复步骤(2)、(3),直到目标函数最优;
(5)将数据集D中每个类中的对象按照公式(3)进行剪枝,得到离群候选集Q;
(6) 遍历数据集Q,求得每个数据对象的距离,从而得到相应的k距离邻域和逆k 距离邻域;
(7) 遍历每个数据对象的k距离邻域和逆k距离邻域得到数据对象的影响空间;
(8) 根据公式(1)计算离群候选集中数据对象的局部可达密度;
(9)根据公式(2)计算离群候选集中数据对象的INFLOF值;
(10)对所有对象的INFLOF值降序排序,得到前m个INFLOF值最大的数据点. 本文算法时间复杂度由两部分组成,K-means聚类算法的时间复杂度为,w为分类的个数,t为聚类中的迭代次数,而n为数据集D中数据对象的个数,通常
w<<n且t<<n. INFLOF算法的时间复杂度为O(n2+nk2+nk).K-INFLOF算法的时间复杂度为O(wnt+N2+Nk),N为离群数据候选集Q中数据对象的个数,由于离群数据点个数远少于正常点个数,因此N≤n/2,假设N=n/2,那么K-INFLOF算法的时间复杂度为O((wt+n/4+k)n),所以K-INFLOF算法的时间复杂度小于INFLOF算法的时间复杂度.
数值实验分别采用模拟数据集和实际数据集验证,将K-INFLOF算法、传统的LOF算法和INFLOF算法进行对比.所有算法均在Matlab2013a中实现,运行环境为Win8系统下Intel Core i3CPU 2.90Hz,4.00GB内存.
3.1 模拟数据实验
模拟数据实验采用随机生成的模拟数据集,如图1所示,待测数据集包括两个密度不同的随机生成的正态分布簇,其中“十字星”数据点簇有1 500个数据点,
“八角星”数据点簇有500个数据点,5个“四角星”代表的是离群点.
算法首先要对模拟数据集进行聚类,聚类数目k值选取2~5分别运行K-means 算法,当k取3时K-means算法运行效率最高,并且与数据集的拟合度最好. 因此,在本次实验中,聚类个数k取值为3.
为了验证K-INFLOF算法的准确性,首先假定取离群值最大的5个数据点,即m 的值为5.下面引出算法准确性的评价指标,即检测误差率ρ,且
由表1可得,当最近邻居取值较小时,K-INFLOF算法的检测误差率较小,由此可得K-INFLOF算法使挖掘结果更为精准.
然后在该数据集上运行INFLOF算法和K-INFLOF算法.由表2可知,本次实验中数据集被剪枝掉1 189个数据后,K-INFLOF算法的运行时间要远小于INFLOF算法的运行时间.
图2展示的是两种算法的运行时间的对比,由图2可知,K-INFLOF算法和INFLOF算法的运行时间都随着参数Minpts的增长而增长,但是K-INFLOF算法的运行时间远小于INFLOF算法.
3.2 实际数据实验
本次实验数据是美国NBA2014-2015常规赛季球员技术数据,实验将取3个属性(分别是场均三分球命中率,场均三分球得分和场均总得分),共369个数据进行研究. 在运行K-INFLOF算法时,聚类数目选取3~7,分别进行5次独立重复的实验,最终结果取5次实验结果的平均值. 为了便于比较,取每种算法离群因子值最高的前五名球员进行对比[14],最近邻居个数取17.表3~表5为三种算法的运算结果.
通过三种算法的挖掘结果发现,在LOF算法中,排名前五的球员,都是某一个属性表现了离群性,例如排名第一的拉塞尔-维斯布鲁克和排名第五的德里克-罗斯都是场均总得分高的球员,说明该类型球员不善于投三分球,但是其他得分方式更为
高效,同时有效地避开了自己的弱项;排名第二的J.J.-雷迪克和排名第四的安东尼-莫罗在场均三分命中率上表现突出,说明该类球员是一名优秀的三分球投手,较
高的场均三分得分也表明了他们优秀的投篮选择;排名第三的马克-加索尔场均三
分球命中率和场均三分得分都非常低,但是场均得分较高,他作为一名内线球员把主要的攻击点放到了内线,并没有开发自己的射程.而在INFLOF和K-INFLOF算
法中除了能将LOF算法中各种类型的球员挖掘出来外,还可以挖掘专业三分球投手,例如在两个算法中均排名第一的凯里-欧文,该类型的球员三项数据都比较高,在球队中表现出一定的离群性,是一名典型的球队当家球星.由此可得,K-INFLOF 算法相较于LOF算法可以挖掘出更多类型的球员.
图3是三种算法运行时间对比图,K-INFLOF算法将231个数据剪枝掉,由图3
可以看出,K-INFLOF算法的运行时间远小于LOF算法和INFLOF算法,说明K-INFLOF算法的复杂度大大减少.
本文在经典INFLOF算法的基础上加入了K-means聚类算法,得到K-INFLOF算法.该方法先将类中心非离群点剪枝掉,得到离群候选集,然后再运用INFLOF算法,从而提高了算法的有效性.模拟数据实验表明,K-INFLOF算法分别在算法准
确性和算法的运行效率方面高于LOF算法和INFLOF算法.实际数据实验表明,K-INFLOF算法不仅能比LOF算法挖掘出类型更加多样性的球员,而且离群因子差
异较大,使离群数据更为明显;通过三种算法运行时间的对比,可以明显地看出
K-INFLOF算法运行时间远小于LOF算法和INFLOF算法.因此,K-INFLOF算法
在离群数据挖掘中与传统的基于密度的离群数据挖掘算法相比,提高了算法的运行效率和所挖掘数据的准确性、多样性.。