Saya memiliki matriks jarang pengguna dan item yang mereka sukai (dalam urutan pengguna 1M dan item 100K, dengan tingkat sparsitas yang sangat rendah). Saya mencari cara di mana saya bisa melakukan pencarian kNN di atasnya. Mengingat ukuran dataset saya dan beberapa tes awal yang saya lakukan, asumsi saya adalah bahwa metode yang akan saya gunakan harus paralel atau didistribusikan. Jadi saya sedang mempertimbangkan dua kelas solusi yang mungkin: satu yang tersedia (atau dapat diterapkan dengan cara yang cukup mudah) pada mesin multicore tunggal, yang lain pada cluster Spark, yaitu sebagai program MapReduce. Berikut adalah tiga ide luas yang saya pertimbangkan:
- Dengan asumsi metrik kesamaan kemiripan, lakukan penggandaan penuh dari matriks yang dinormalisasi dengan transposnya (diimplementasikan sebagai jumlah dari produk luar)
- Menggunakan hashing sensitif-lokalitas (LSH)
- Mengurangi dulu dimensi masalah dengan PCA
Saya menghargai pemikiran atau saran tentang kemungkinan cara lain di mana saya bisa mengatasi masalah ini.