En yakın komşular çok yüksek boyutlu veriler arar


17

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.


1
Bu alanı araştırdım ve bulduğum şey hakkında bir blog yazısı yazdım. Bir LSH kullandım, ancak bence seyreklik seviyem aradığınızdan daha yüksek. tttv-engineering.tumblr.com/post/109569205836/…
Philip Pearl

Yanıtlar:


15

Umarım aşağıdaki kaynaklar size sorunu çözme konusunda ek fikirler verebilir :

1) Araştırma makalesi "Verimli K-En Yakın Komşu Yüksek Boyutlu Seyrek Veriler için Algoritmalara Katıl" : http://arxiv.org/abs/1011.2807

2) "İşbirlikçi Filtrelemeye Dayalı Öneri Sistemi" Sınıfı proje belgesi (Stanford Üniversitesi): http://cs229.stanford.edu/proj2008/Wen-RecommendationSystemBasedOnCollaborativeFiltering.pdf

3) Netflix Ödül Yarışması Projesi ( k-NN tabanlı) : http://cs.carleton.edu/cs_comps/0910/netflixprize/final_results/knn/index.html

4) Araştırma kağıt "Uzayda Merkezleri: Yüksek Boyutlu Verilerin Popüler En yakın komşular" üzerine boyutluluk laneti olgusu ve ilişkisi makine öğrenme genel olarak, ve k-NN algoritması , özellikle: http://jmlr.org /papers/volume11/radovanovic10a/radovanovic10a.pdf

5) Seyrek k-NN sınıflandırması için yazılım (ücretsiz, ancak açık kaynak olarak görünmüyor - yazarlarla açıklığa kavuşabilir): http://www.autonlab.org/autonweb/10408.html

6) StackOverflow ile ilgili birkaç tartışma konusu :

7) Model yoluyla paralel kümelemeyi destekleyen makine öğrenimi için açık kaynaklı bir paralel çerçeve olan ( http://select.cs.cmu.edu/code/graphlab ) GraphLab'a dikkat edin :MapReduce http: //select.cs.cmu. edu / kod / graphlab / clustering.html

Ayrıca , ilgili paketler ve sayfalara bağlantılar için seyrek regresyondaki Veri Bilimi StackExchange'teki cevabımı da kontrol edebilirsiniz : /datascience//a/918/2452 .RCRAN Task View


4

İşbirlikçi filtreleme üzerinde çalışıyorsanız, sorunu düşük seviyeli bir matris yaklaşımı olarak ortaya koymalısınız, burada her iki kullanıcı da öğeler aynı düşük boyutsal alana gömülüdür. Benzerlik araması o zaman çok daha kolay olacaktır. Önerdiğiniz gibi LSH kullanmanızı öneririm. Boyutsallığın azaltılması için henüz bahsedilmeyen bir başka verimli yol rastgele projeksiyondur .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.