Collaborative Filtering, 协同过滤是推荐系统(Recommender System)中最常见的一种手法,它之于推荐系统,就好像TF-IDF之于信息检索.
所谓一百个读者眼中有一百个哈姆莱特.假如现在我知道有一万个读者,他们对每本书可能有不同的评价.现在有个读者,想要知道某一本书的是否符合他的口味,我们应该可能可以帮他为这本新书给个分数.这个分数应该是个性化的.
一个很简单的方法是首先检查有哪些人已经评价过本书.再看那些人和这位读者口味的相似度如何,相似度比较高的给个比较高的权重,否则给个比较低的权重,然后合成一个结果.
具体说就是打分加权求平均值.
相似度又如何评价?很简单,查看其他书评者和这位读者共同评价的书籍,他们分数的相似度即是两人口味的相似度.换言之,求个余弦即可
这么简单一计算,就可以得到一个人对一本新书可能喜欢的程度.
对于CF,我有个简单实现在此.若有兴趣可以看下. 这个实现蛮笨的.下次我自己写的图数据库搞完后,再在图数据库上搞个optimized版本的.敬请期待.