2012-03-28 7 views
21

ローカリティセンシティブハッシングによる最近傍検索をサポートする軽量Javaライブラリを探しています。数十万点のデータポイントを持つ高次元(私の場合32)のデータセットにほぼ均等に分布したデータです。JavaのLSHライブラリ

クエリ用のバケット内のすべてのエントリを取得するのに十分です。私が本当に必要なものは、私の問題に含まれるいくつかのフィルタパラメータを考慮して、別の方法で処理することができます。

私はすでにlikelikeを見つけましたが、もう少し小さくなり、他のツール(Apache Hadoopのような場合など)が必要ないことを願っています。

+0

...希望のスピードアップ指標のうち、優れた十分な精度を得ることをもたらす優れたパラメータを、見つけるの?私はkNNのメトリックとしてユークリッド距離で同じものを探していました。 –

+0

本当にありません。しかし、自分で実装する必要があります。しかし、問題はまだ良いハッシュ関数を選択する方法はまだ... – s1lence

+1

http://ttic.uchicago.edu/~gregory/download.htmlでmatlabの実装でハッシュ関数を使い始めることができます –

答えて

1

この1があります:私はそれをテストする時間がなかったが、少なくともそれはコンパイル ​​

1

ここで別の1: https://github.com/allenlsy/knn

それは、KNNのためのLSHを使用しています。私は現在)=それはユーザビリティだ捜査しています

6

たぶん、この1:

「TarsosLSHは、局所性鋭敏型ハッシュ(LSH)、サブリニア時間で動作し、多次元ベクトルのための実用的な最近傍探索アルゴリズムを実装するJavaライブラリですユークリッドハッシュファミリー(L2)、都市ブロックハッシュファミリー(L1)、コサインハッシュファミリーのいくつかの局所性センシティブハッシング(LSH)ファミリーをサポートしています。 LSHの仕組みに関するデモンストレーションとして十分にコンパクトになっています。

コードELKIデータマイニングフレームワークはLSHインデックスが付属していますhere

1

を見つけることができます。これは、含まれているほとんどのアルゴリズム(範囲またはnn検索を使用するもの)で使用でき、時にはうまく機能することがあります。

他のケースでは、LSHは適切なアプローチではないようです。 LSHパラメータを正しく取得するのは非常に難しい場合があります。パラメータを高く設定すると、実行時間が大きくなります(リニアスキャンまで)。あなたがそれらをあまりにも低く選ぶと、指数は近似的になり、多くの隣人に負けます。

これはおそらく、LSHとの最大の課題です:あなたが何かを見つけるか