Kullanıcıların ve beğendikleri öğelerin büyük bir seyrek matrisine sahibim (1M kullanıcıları ve 100K öğelerinde, çok düşük bir seviyede sparlite ile). Üzerinde kNN araması yapabileceğim yolları araştırıyorum. Veri setimin boyutu ve yaptığım bazı ilk testler göz önüne alındığında, benim kullanacağım yöntemin ya paralel ya da dağıtılmış olması gerektiği varsayımıdır. Bu yüzden iki olası çözüm sınıfını düşünüyorum: biri ya çok çekirdekli bir makinede ya da bir Spark kümesinde, yani bir MapReduce programı olarak mevcut (ya da oldukça kolay bir şekilde uygulanabilir). İşte düşündüğüm üç geniş fikir:
- Bir kosinüs benzerlik metriği varsayarsak, normalize edilmiş matrisin devriyle (dış ürünlerin bir toplamı olarak uygulanır) tam çarpımını gerçekleştirin
- Yere duyarlı karma (LSH) kullanma
- Önce bir PCA ile sorunun boyutsallığının azaltılması
Bu sorunla başa çıkabileceğim diğer olası yollar hakkında düşüncelerinizi veya önerilerinizi takdir ediyorum.