Hàng xóm gần nhất tìm kiếm dữ liệu rất cao


17

Tôi có một ma trận người dùng thưa thớt và các mặt hàng họ thích (theo thứ tự 1 triệu người dùng và 100 nghìn mặt hàng, với mức độ thưa thớt rất thấp). Tôi đang khám phá những cách mà tôi có thể thực hiện tìm kiếm kNN trên đó. Với kích thước của tập dữ liệu của tôi và một số thử nghiệm ban đầu tôi đã thực hiện, giả định của tôi là phương pháp tôi sẽ sử dụng sẽ cần phải song song hoặc phân phối. Vì vậy, tôi đang xem xét hai loại giải pháp khả thi: một loại có sẵn (hoặc có thể thực hiện theo cách dễ dàng hợp lý) trên một máy đa lõi, loại kia trên cụm Spark, tức là chương trình MapReduce. Đây là ba ý tưởng rộng lớn mà tôi đã xem xét:

  • Giả sử một số liệu tương tự cosin, thực hiện phép nhân đầy đủ của ma trận chuẩn hóa bằng chuyển vị của nó (được thực hiện như một tổng của các sản phẩm bên ngoài)
  • Sử dụng băm nhạy cảm cục bộ (LSH)
  • Trước tiên, giảm tính chiều của vấn đề với PCA

Tôi đánh giá cao bất kỳ suy nghĩ hoặc lời khuyên nào về những cách khác có thể mà tôi có thể giải quyết vấn đề này.


1
Tôi vừa mới điều tra khu vực này và đã viết một bài đăng trên blog về những gì tôi tìm thấy. Tôi đã sử dụng LSH, nhưng tôi nghĩ mức độ thưa thớt của tôi cao hơn bạn đang tìm kiếm. tttv-engineering.tumblr.com/post/109569205836/ từ
Philip Pearl

Câu trả lời:


15

Tôi hy vọng rằng các tài nguyên sau có thể giúp bạn có thêm ý tưởng để giải quyết vấn đề:

1) Tài liệu nghiên cứu "Hàng xóm K-gần nhất hiệu quả tham gia thuật toán cho dữ liệu thưa thớt chiều cao" : http://arxiv.org/abs/1011.2807

2) Tài liệu dự án lớp "Hệ thống khuyến nghị dựa trên lọc cộng tác" (Đại học Stanford): http://cs229.stanford.edu/proj2008/Wen-RecommendationSystemBasingOnCollaborativeFiltering.pdf

3) Dự án cho Cuộc thi Giải thưởng Netflix ( dựa trên k-NN ) : http://cs.carleton.edu/cs_comps/0910/netflixprize/final_results/knn/index.html

4) Tài liệu nghiên cứu "Các trung tâm trong không gian: Hàng xóm gần nhất phổ biến về dữ liệu chiều cao" về lời nguyền của hiện tượng chiều và mối quan hệ của nó với học máy , nói chung và thuật toán k-NN , nói riêng: http://jmlr.org / con / vololume11 / radovanovic10a / radovanovic10a.pdf

5) Phần mềm để phân loại k-NN thưa thớt (miễn phí, nhưng dường như không phải là nguồn mở - có thể làm rõ với các tác giả): http://www.autonlab.org/autonweb/10408.html

6) Một số chủ đề thảo luận trên StackOverflow :

7) Hãy chú ý đến GraphLab , một khung công tác song song mã nguồn mở cho máy học ( http://select.cs.cmu.edu/code/graphlab ), hỗ trợ phân cụm song song thông qua MapReducemô hình: http: //select.cs.cmu. edu / code / graphlab / clustering.html

Bạn cũng có thể kiểm tra câu trả lời của tôi ở đây trên Data Science StackExchange về hồi quy thưa thớt cho các liên kết đến các Rgói và CRAN Task Viewtrang có liên quan : /datascience//a/918/2452 .


4

Nếu bạn đang làm việc về lọc cộng tác, bạn nên đặt vấn đề là xấp xỉ ma trận thứ hạng thấp, trong đó cả hai người dùng đều là các mục được nhúng vào cùng một không gian có chiều thấp. Tìm kiếm tương tự sẽ đơn giản hơn nhiều sau đó. Tôi khuyên bạn nên sử dụng LSH, như bạn đề xuất. Một con đường hiệu quả khác để giảm kích thước chưa được đề cập là chiếu ngẫu nhiên .


1

Bạn nên sử dụng: PySparNN , một triển khai gần đây của Facebook trong python vốn rất nhanh. Nó cũng dễ sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.