最近的邻居搜索非常高维的数据


17

我对用户和他们喜欢的项目有一个稀疏的矩阵(按100万个用户和100K个项目的顺序排列,稀疏程度很低)。我正在探索可以对其执行kNN搜索的方法。考虑到数据集的大小和我执行的一些初始测试,我的假设是我将使用的方法必须是并行的或分布式的。因此,我正在考虑两类可能的解决方案:一种可以在单个多核计算机上使用(或以相当容易的方式实现),另一种可以在Spark集群上使用,即作为MapReduce程序。我考虑了以下三个主要思想:

  • 假设一个余弦相似性度量,通过其转置(作为外部乘积之和来实现)对归一化矩阵进行完全乘法
  • 使用位置敏感的哈希(LSH)
  • 首先使用PCA降低问题的维度

对于任何其他可以解决此问题的方式的想法或建议,我将不胜感激。


1
我一直在研究这个领域,并写了一篇关于我发现的博客文章。我使用了LSH,但我认为我的稀疏度比您想要的要高。 tttv-engineering.tumblr.com/post/109569205836/…–
菲利普·珀尔

Answers:


15

我希望以下资源可以为您提供解决问题的其他思路

1)研究论文“针对高维稀疏数据的有效K最近邻连接算法”http : //arxiv.org/abs/1011.2807

2)课堂项目论文“基于协同过滤的推荐系统”(斯坦福大学):http : //cs229.stanford.edu/proj2008/Wen-RecommendationSystemBasedOnCollaborativeFiltering.pdf

3)Netflix奖项竞赛项目基于k-NNhttp : //cs.carleton.edu/cs_comps/0910/netflixprize/final_results/knn/index.html

4)关于维度现象的诅咒及其与机器学习的关系(通常与k-NN算法有关)的研究论文“空间中的胡闹:高维数据中最近的邻近邻居”,尤其是:http : //jmlr.org /papers/volume11/radovanovic10a/radovanovic10a.pdf

5)用于稀疏k-NN分类的软件(免费,但似乎不是开源的-可能需要作者澄清):http : //www.autonlab.org/autonweb/10408.html

6)关于StackOverflow的几个讨论线程

7)注意GraphLab,这是一个用于机器学习的开源并行框架http://select.cs.cmu.edu/code/graphlab),它通过以下模型支持并行聚类MapReducehttp://select.cs.cmu。 edu / code / graphlab / clustering.html

您也可以在稀疏回归的 Data Science StackExchange上查看我的答案,以获取相关R软件包和CRAN Task View页面的链接:https : //datascience.stackexchange.com/a/918/2452


4

如果您要进行协作过滤,则应将问题归结为低秩矩阵近似,其中两个用户都是项目共同嵌入到同一低维空间中。相似性搜索将比现在简单得多。我建议按照您的建议使用LSH。尚未提及的另一个降低维度的卓有成效的途径是随机投影


1

您应该使用:PySparNN,这是Facebook最近在python中实现的,这非常快。它也易于使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.