论文部分内容阅读
在现实生活的各种领域中,经常会出现一些与数据集的一般行为或模型不一致的数据对象,这些对象称为孤立点,它们可能包含某些重要的隐藏信息。因此有必要对孤立点进行挖掘,对孤立点的识别就是对数据集小模式的研究。随着数据挖掘技术的迅速发展,孤立点检测算法研究已经成为数据挖掘研究领域中非常活跃的研究课题。
传统的孤立点检测算法——局部孤立因子(LOF)算法的时间复杂度比较高,达到O(kn<2>),k是给定的数据点邻居的数目,n是数据点的总数目。在LOF算法的基础上,有人提出基于网格的LOF算法(GridLOF算法),但是没有明确指出网格划分的方法,仅仅给出合理划分的理论证明,因此本算法无法实现。
针对LOF和GridLOF算法存在的缺陷,本文借鉴了GridLOF算法中的网格划分思想,提出了新的算法——基于网格的局部k-距离孤立因子算法。本算法的时间复杂度可以大大降低。本算法的创新点有:
(1) 重新定义了相邻网格的概念;
(2) 明确给出了一种网格划分的方法;
(3) 给出了对处于区间边界的数据点的处理方法;
(4) 使用关联容器存储网格的信息;
(5) 提出了局部k-距离孤立因子的概念。
本文使用Visual C++6.0实现基于网格的局部k.距离孤立因子算法。并且在实验数据集上做了大量的对比实验来验证此算法的合理性和效率。实验结果表明,基于网格的局部k-距离孤立因子算法能够提高执行效率,并且在存储结构、孤立点检测效果等方面有一定的优越性。将此算法应用于分析财政系统的数据,可以发现财政收入、支出、增长率等方面的异常情况,为财政决策者做出决策提供了依据。基于网格的局部k-距离孤立因子算法也存在着缺陷:本算法对数据集有一定的要求,即数据点的分布要比较集中,如果数据点的分布比较分散,则本算法的时间复杂度可能会提高到O(kn<2>);本算法也会受到参数k的影响,不同的k值可能会造成不同的结果;本算法需要求出数据点之间的距离,因此可能不适合用于处理高维数据集;本算法只能处理数值型的数据,不能处理符号型的数据。针对上述不足,今后作者将继续对孤立点检测技术进行深入研究,努力改进和完善孤立点检测方法。