2012-03-08 100 views
3

我自己和我的朋友决定在python推荐引擎上做一个项目。最初我们决定用SVM做我们的项目,但很快就发现它的监督学习很困难,现在我们打算使用自己组织地图,并可能与协作过滤(不知道是否可能)构建引擎。有人会提出一个很好的自组织映射参考。除了使用协作过滤外,还有其他选择。基于SOM的推荐引擎

非常感谢。

+0

您可能会在CrossValidated或新的[DataScience.SE](http://datascience.stackexchange.com)上做得更好。 – smci 2016-11-28 13:19:08

回答

3

我不确定自组织映射实际上是最适合您的应用程序的。它可能会保留输入空间的拓扑属性,但它不适合于稀疏数据集,这在推荐引擎中是一个常见问题。我不会说SVM是更好的,事实上它可能比你想要做的更远,但是SOM只会稍好一些。也就是说,如果你想学习如何构建一个SOM,按照有用性的顺序,下面的资源是值得关注的。另外值得一提的是,SOM实际上在卷积神经网络的理论上非常接近,所以任何资源都应该很好地支持。

http://en.wikipedia.org/wiki/Self-organizing_map 
http://ftp.it.murdoch.edu.au/units/ICT219/Papers%20for%20transfer/papers%20on%20Clustering/Clustering%20SOM.pdf 
http://www.eicstes.org/EICSTES_PDF/PAPERS/The%20Self-Organizing%20Map%20%28Kohonen%29.pdf 
http://www.cs.bham.ac.uk/~jxb/NN/l16.pdf 
http://www.willamette.edu/~gorr/classes/cs449/Unsupervised/SOM.html 

至于方法,可能会更有意义的特定的应用程序,我可能会提出一个受限玻尔兹曼机。使用RBM的想法是,您将尝试基于各种统计信息为每个用户创建一个“推荐配置文件”,为用户定义一个特征向量。这个基本的预测会以一种类似于深度神经网络的方式发生。

一旦你的网络被训练在一个方向上,一个RBM的真正的辉煌是,你然后运行它。您尝试从推荐配置文件生成用户配置文件,这对于这些应用程序非常适用。有关RBM的信息,您可以访问这些链接:

http://deeplearning.net/tutorial/rbm.html 
http://www.cs.toronto.edu/~hinton/absps/guideTR.pdf 
http://www.cs.toronto.edu/~hinton/absps/netflix.pdf 

Hinton基本上是这些的权威,也是数据科学的总BAMF。 RBM列表中的最后一个链接实际上能够完全构建您的推荐引擎,但如果您想要使用更多的预建库或利用其他数据科学部分,我会强烈建议使用某种降​​维机制,然后再尝试任何协作过滤。

协同过滤最大的问题是你通常有一个非常稀疏的矩阵,它不能完全给你所需要的信息,并最终陷入很多对你没有用的东西。出于这个原因,在主题建模领域有一系列算法可以帮助您降低数据的维度,从而使协作过滤变得微不足道,或者可以在上述任何其他方法中利用这些算法来获取更有意义的数据强度较低。

gensim是一个python软件包,它为您完成了很多主题建模,并且还会为您利用numpy和scipy构建tfidf向量。它也有很好的记录。这些例子是针对更直接的NLP。请记住,它们的单个项目恰好是词语的事实对底层算法没有影响,您可以将其用于较少受限制的系统。

如果你想在主题建模部分寻找黄金,你应该看看Pachinko Allocation(PA),这是一个新的主题建模算法,它比其他大多数主题建模者有更多的承诺,但不会捆绑在一起在包装中。

http://www.bradblock.com /Pachinko_Allocation_DAG_Structured_Mixture_Models_of_Topic_Correlations.pdf 

祝您在您的数据科学攻击中幸运!如果您有任何问题,请告诉我,我可以尝试回答。