1. A computer-implemented method for estimating a nearest neighbor to a target data vector in a dataset, comprising: determining a preliminary clustering of the dataset, the preliminary clustering comprising multiple preliminary clusters; redistributing data vectors between at least two of the preliminary clusters to produce at least two redistributed clusters, the target data vector included in a first of the at least two redistributed clusters; and estimating a nearest neighbor of the target data vector within the first of the two redistributed clusters.