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.