sqliang的专栏

聚焦开发学习blog

使用协同过滤构建一个推荐引擎

基于物品的过滤(item-based filtering)

基本思路:
为每件物品预先计算好最为相近的其他物品。然后,当我们想为某位用户提供推荐时,就可以查看他曾经评过分的物品,从从中选出排位靠前者,再构造出一个加权列表,其中包含了与这些选中物品最为相近的其他物品。此处最为显著的区别在于,尽管第一步要求我们检查所有的数据,但是物品间的比较不会像用户间的比较那么频繁变化。这也意味着,无须不停地计算与每样物品最为相近的其他物品,因此,可以将这样的运算任务安排在啊网络流量不是很大的时候进行,或者在独立于主应用之外的另一台计算机上单独进行。

基于用户进行过滤还是基于物品进行过滤

在针对大数据集生成推荐列表时,基于物品进行过滤的方式明显快于基于用户的过滤,不过它的确有维护物品相似度表的额外开销。同时,这种方法根据数据集“稀疏”程度上的不同也存在精确度上的差异。在涉及电影的电影例子中,由于每个评论者几乎对每部影片都做过评价,所以数据时密集的(而非稀疏的)。另一方面,它又不同于查找两位有相近del.icio.us书签的用户——大多数用户是小众群体所收藏的,这就形成了一个稀疏数据集。对于稀疏数据集,基于物品的过滤方法通常优于基于用户的过滤方法,而对于密集数据而言,两者的效果几乎是一样的。
提示:想了解更多这些算法在执行效率上的差异情况,请下载论文《基于物品的协作型过滤推荐算法》(http://citeseer.ist.psu.edu/sarwar01itembased.html

尽管如此,基于用户的过滤方法更加易于实现,而且无需额外步骤,因此它通常更适用于较小的变化非常频繁的内存数据集。在一些应用中,告诉用户还有那些人与自己有着相近偏好是有一定价值的——也许对于一个购物网站而言,我们并不想这么做,但是对于一个连接共享类或音乐推荐类网站,这种潜在需求确实存在的。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liangshiquan1/article/details/46787509
个人分类: 群体智慧编程
上一篇相似度计算方法
下一篇发现群组
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭