论文部分内容阅读
近年来,数据挖掘逐渐成为各类研究者争相研究的热门课题。其中KNN分类算法由于其简单、易于实现等特性已经被广泛应用于金融分析等各个领域。但是传统KNN算法需要当前待分类样本点与所有训练样本点做相似度计算,才能得出前K个最近邻点,从而得到待测点的类别。然而当数据量增大或数据维度较大时,算法将产生巨大的计算开销。另外,如果K值选择过大,最近邻点中可能会包含相似度较低的样本点,从而导致分类准确率降低及计算量增加等问题;如果K值选择过小,尚未分类样本点可能会缺失一些相似度较高的样本点,同样也会导致准确率较低的问题。针对上述问题,本文在训练点数量的削减及K值选择上做了以下研究:针对KNN算法中存在冗余计算的问题,本文提出了基于聚类的环形KNN算法(Clustering-based Annular K-Nearest Neighbor Algorithm,AKNN)。该算法主要由数据处理、更新训练点与簇心之间的距离、构建环形过滤器及KNN分类四个部分构成。在数据处理过程中,算法可以根据训练集的实际情况选择不同的聚类算法进行聚类,从而得到合适的簇心点。其中算法的核心是为每个测试点构建一个环形过滤器,进而通过过滤器将当前待测点周围的训练点分为外围训练点和内围训练点。当执行分类操作时,算法使用内围训练点代替原始的训练点,从而降低冗余的计算量。最后通过9组公开数据集对所提出的AKNN算法进行了实验验证。实验结果表明,本文提出的AKNN算法比LC-KNN和RC-KNN算法在准确率上平均提高3%,而在计算量上比KNN算法平均减少51%。针对K值固定的问题,本文提出了基于环形过滤器的K值自适应KNN算法(K-value Adaptive KNN Algorithm Based on Annular Filter,AAKNN)。该算法主要由数据处理、更新训练点与簇心之间的距离、构建环形过滤器、构建稀疏向量及KNN分类五个部分构成。其核心思想是利用稀疏向量能够较好的表达数据之间的相似度信息来动态选择每个测试点的K个最近邻点,从而提高算法的准确率。该算法不仅能够根据不同测试点的实际情况来选择不同的K值,而且利用环形过滤器避免了内存占用过大的问题。最后通过6组公开数据集对所提出的AAKNN算法进行了实验验证。实验结果表明,AAKNN与CM-KNN算法相比较于其余四种算法(KNN,AKNN,LC-KNN,及RC-KNN)在准确率上平均提高2%,其中AAKNN算法相比较CM-KNN算法可以平均减少79%的内存消耗。