Neighbor-Sensitive Hashing
Matlab
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
SphericalHashing.m demo added Nov 21, 2015
compactbit.m demo added Nov 21, 2015
compressSH.m demo added Nov 21, 2015
compressSPH.m demo added Nov 21, 2015
computeRecall.m demo added Nov 21, 2015
distMat.m demo added Nov 21, 2015
hammingDist.m demo added Nov 21, 2015
readme.markdown Update readme.markdown May 6, 2016
runDemo.m minor Jul 27, 2016
trainNSH.m demo added Nov 21, 2015
trainSH.m demo added Nov 21, 2015

readme.markdown

Neighbor-Sensitive Hashing

Overview

Neighbor-Sensitive Hashing is a state-of-the-art approximate k-Nearest Neighbor search algorithm in high-dimensional space. The searching capability in high-dimensional space enables us to search images or documents, both of which can be represented by high-dimensional vectors.

Our work is based on the intuition that we do not have to capture the distances to distant objects (i.e., the objects that are not likely to be queries' k-nearest neighbors). Instead, we use the limited resource (hash bits) for more accurately discerning the comparative distances to close objects (i.e., the objects that are likely to be queries' k-nearest neighbors). Counter-intuitively, this is possible by increasing the distances between nearby objects in a hashed-space (or equivalently, Hamming space), which contrasts to the objectives of many existing algorithms.

Superior Performance

Our work has shown superior performances over other state-of-the-art techniques such as Spectral Hashing, Spherical Hashing, Complementary Projection Hashing, and so on, according to our comprehensive experiments. Our experiments not only include "codesize vs. recall" analysis in many machine learning literatures, but also include "latency vs. recall" analysis. Find more detail in our paper published in PVLDB 2016.

Demonstration (only in 10 secs)

Anyone who has Matlab installed on her machine can download and run our code in less than 10 seconds. For comparison, we also ship our code with two state-of-the-art learning-based hashing-algorithms.

Download code in this repository, and run a demo by typing runDemo in Matlab console. A simple example of using our module.

% train our model for b-bit hashcode
model = trainNSH(X, b);

% compress a dataset and a query set
% note: a single byte holds eight bits; so may be hard to interpret
XB = model.hash(X);
QB = model.hash(Q);

Misc.

Link to author's website