2012-03-28 195 views
21

我正在尋找一個支持一個高維的局部敏感哈希近鄰查詢近均勻分佈的數據(在我的情況下,32),還有一些幾十萬個數據點的數據集一個輕量級的Java庫。LSH圖書館在Java中

這完全是足以讓在查詢一個桶中的所有條目。考慮到我的問題所包含的一些過濾器參數,我可以以不同的方式處理哪些是我真正需要的。

我已經找到了likelike,但希望有一些小的東西,不需要任何其他工具(比如像Apache Hadoop那樣的情況)。

+0

你有沒有發現?我正在尋找與歐幾里得距離一樣的我的kNN度量。 – 2012-03-31 08:58:41

+0

不是。但我想我必須自己提出一個實施方案。然而,問題仍然是如何選擇好的散列函數... – s1lence 2012-04-01 18:40:31

+1

你可以從http://ttic.uchicago.edu/~gregory/download.html的matlab實現中的散列函數開始 – 2012-04-02 02:52:07

回答

1

有這樣一句: ​​

我還沒有時間來檢驗,但至少它編譯。

6

也許這一個:

「TarsosLSH是一個Java庫實現局部性敏感散列(LSH),對於在次線性時間運行的多維矢量的實際近鄰搜索算法它支持多個局部敏感散列(LSH)系列:歐幾里得散列家族(L2),城市塊散列族(L1)和餘弦散列族,圖書館試圖在能夠完成真正任務的能力中達到最佳狀態,並且足夠緊湊以作爲LSH工作的示範。「

代碼可以發現here

1

ELKI數據挖掘框架配備了一個LSH索引。它可以與大多數算法一起使用(任何使用範圍或nn搜索的算法),有時效果很好。

在其他情況下,LSH似乎不是一個好方法。正確地獲取LSH參數可能非常棘手:如果選擇的參數太高,運行時會增加很多(一直到線性掃描)。如果你選擇它們太低,那麼這個指數就會變得過於接近並失去許多鄰居。

這可能與LSH最大的挑戰:尋找優秀的參數,即產生所需的加速獲得足夠好的精度列的索引...