1. A method for building a visual vocabulary, the method comprising: building a plurality of visual words via unsupervised learning on set of features of a given type; decomposing one or more visual words to a collection of lower-dimensional buckets; and iteratively selecting a sub-collection of buckets from the collection of lower-dimensional buckets, wherein bucket selection during any iteration after an initial iteration is based at least in part on feedback from previously selected buckets.