标签:
在用聚类算法如k-means对数据进行聚类处理的时候,按照一般的处理方法,需要将每个数据跟其他所有的元素进行比较,计算相似度,然后才能聚类。
假定有N个元素,则需计算N*(N-1)/2 次,当N非常大的时候,则非常消耗时间,这种时候,可以使用K-d树数据结构,对所有数据进行重新组织,构成一棵而叉树。
k-d树的构建,最典型的方法如下:
例如有一个20个数据的数据集,每个数据都是一个3维的向量(x,y,z)。在构建k-d树的时候,第一轮,先查看所有数据x的值,取20个x的中位数,将所有数据切分成2个集合,然后分别对两个集合进行处理,取每个集合中元素y的值的中位数,将每个集合进行切割,最后对所得集合进行第三轮处理,每个集合取所有z的值的中位数,对集合进行切割。每次切割,比中位数小的节点构成一个集合,比中位数大的节点构成一个集合。最终这些集合构成一个二叉树。
k-d树最邻近搜索的过程如下:
(1) 如果目前所在点比目前最佳点更靠近输入点,则将其变为目前最佳点。
(2) 检查另一边子树有没有更近的点,如果有则从该节点往下找
标签:
原文地址:http://www.cnblogs.com/yulele/p/4350971.html