2012-03-28 39 views
21

Tôi đang tìm thư viện Java gọn nhẹ hỗ trợ Tìm kiếm lân cận gần nhất bằng tính năng Phân tích nhạy cảm cục bộ cho dữ liệu được phân phối gần như trong bộ dữ liệu chiều cao (trong trường hợp của tôi 32) với hàng trăm nghìn điểm dữ liệu.Thư viện LSH trong Java

Hoàn toàn đủ tốt để nhận tất cả các mục nhập trong một nhóm cho truy vấn. Mà những người tôi thực sự cần sau đó có thể được xử lý theo một cách khác nhau đang xem xét một số thông số bộ lọc vấn đề của tôi bao gồm.

Tôi đã tìm thấy likelike nhưng hy vọng rằng có gì đó nhỏ hơn một chút và không cần bất kỳ công cụ nào khác (như Apache Hadoop trong trường hợp tương tự).

+0

Bạn đã tìm thấy bất cứ điều gì? Tôi đã tìm kiếm cùng với khoảng cách Euclide như số liệu của tôi cho kNN. –

+0

Không thực sự. Nhưng tôi nghĩ tôi sẽ phải tự mình thực hiện. Tuy nhiên, câu hỏi vẫn là cách chọn hàm băm tốt ... – s1lence

+1

Bạn có thể bắt đầu với hàm băm trong triển khai MATLAB tại http://ttic.uchicago.edu/~gregory/download.html –

Trả lời

6

Có lẽ đây nhất:

"TarsosLSH là một thư viện Java thực hiện Băm Địa phương nhạy cảm (LSH), một thuật toán tìm kiếm hàng xóm gần nhất thiết thực cho vector đa chiều mà hoạt động này trong thời gian sublinear Nó hỗ trợ một số gia đình địa phương nhạy cảm băm (LSH): gia đình băm Euclide (L2), gia đình băm khối thành phố (L1) và gia đình băm cosin. Thư viện cố gắng để đạt được vị trí ngọt ngào giữa đủ khả năng để có được thực hiện nhiệm vụ thực sự, và đủ nhỏ gọn để phục vụ như một minh chứng về cách thức hoạt động của LSH. "

Mã có thể được tìm thấy here

1

Khung khai thác ELKI dữ liệu đi kèm với một chỉ số LSH. Nó có thể được sử dụng với hầu hết các thuật toán được bao gồm (bất kỳ thứ gì sử dụng các tìm kiếm phạm vi hoặc nn) và đôi khi hoạt động rất tốt.

Trong các trường hợp khác, LSH dường như không phải là một cách tiếp cận tốt. Nó có thể khá phức tạp để có được các thông số LSH ngay: nếu bạn chọn một số tham số quá cao, thời gian chạy sẽ tăng lên rất nhiều (tất cả các cách để quét tuyến tính). Nếu bạn chọn chúng quá thấp, chỉ mục trở nên quá gần đúng và mất nhiều người hàng xóm.

Đó có lẽ là thách thức lớn nhất với LSH: tìm các thông số tốt, đó mang lại tăng tốc mong muốn nhận được một độ chính xác đủ tốt ra khỏi chỉ số ...