问题与不足(KNN算法)

问题与不足

论文题目:k-NearestNeighbors on Road Networks: A Journey in Experimentation and In-MemoryImplementation 

一、主要内容

该论文主要研究了K Nearest Neighbor算法在主存中的应用,介绍了五种解决KNN算法的经典算法,分别是Incremental NetworkExpansion (INE)算法,Incremental Euclidean Restriction(IER)算法,Distance Browsing算法,Route Overlay and AssociationDirectory(ROAD)算法以及G-tree算法。

本人通过查阅一系列资料对上述算法有了一定了解,并总结了上诉算法在实际应用的某些方面中存在的问题。

二、算法中存在的问题

1.Incremental Network Expansion

Incremental Network Expansion(INE)采用了Dijkstra算法中的贪心思想,通过不断搜索与节点q最近的节点来扩展答案。INE算法的优点是思路清晰,实现简单,在数据量较小的情况下可以快速解决问题,并具有较高的准确性。但是该算法在面对海量数据时显得力不从心。特别是实际生活中物体之间的距离大多数需要用欧式距离来描述,遇到与复杂街区中的建筑物相关问题时,衡量建筑物之间的距离本身就是一个复杂的问题,所以难以比较网络中点的“实际距离”。其次,实际生活中抽象出的图往往是极其稠密的完全图,此时INE算法将难以使用优先队列来优化时间复杂度,因为采用存储优先队列存储其他顶点到目标节点q距离时,该算法时间复杂度可以达到O(|W|log|V|),其中V为图中顶点的数量,W为图中边的数量,此时W与V2的数量级相同,优化后的算法复杂度反而高过了朴素算法O(V2)的时间复杂度。

2.Incremental Euclidean Restriction

Incremental Euclidean Restriction (IER) 算法借助了R-tree之类的数据结构来进行预处理,是INE算法的一种优化算法。IER算法在实际数据的测试结果中快于普通的INE算法,但是IER算法无法保证R-tree预处理出来的集合一定包含优化解,极端情况下可能不包含所有的优化解,此时达到算法的最差时间复杂度,其最差时间复杂度与INR算法相同。也就是说,在实际应用中,IER算法可能出现不稳定的情况。

3.Distance Browsing

Distance Browsing(DisBrw)算法利用SILC索引减少了大量的优先队列插入操作,因而有更高的效率。但是采用优先队列存储其他顶点到目标节点q距离时,DisBrw算法依然无法避免部分节点多次重复入队出队的操作,使得部分情况下DisBrw算法对INE算法的优化不明显。

4.Route Overlay & Association Directory

Route Overlay and Association Directory (ROAD)算法通过划分冗余网络子系统和排除无效子系统的搜索剪枝优化了INE算法巨大的搜索空间,时空效率比INE有了明显的提升。

ROAD算法利用捷径的概念避免了INE中大量没有必要的搜索,在一般情况下,ROAD算法具有良好的平均时空复杂度,但是ROAD算法的效率依赖于图划分的优劣,也具有一定的不稳定性。

5.G-tree

       G-tree算法提供了一种新的图区域划分和层次划分方法,并就图的层次结构建立了一颗平稳的G-tree树,拥有稳定而高效的时间复杂度,同时该树空间复杂度也很稳定,为O(|V|log|V|),其中V为顶点数量。

G-tree算法的主要问题在于其使用了复杂的数据结构和模型,其时间效率与算法本身距离矩阵的实现方式密切相关,针对不同规模和分布的数据使用不同的哈希表拥有不同的效率,这意味着G-tree算法的实际应用较为复杂。

点赞