[推荐算法]ItemCF,基于物品的协同过滤算法

标签: ItemCF基于用户的协同过滤算法
2015-03-09 15:11 4144人阅读 评论(1) 收藏 举报
本文章已收录于:
分类:
algorithm & data structure(12)

作者同类文章X

版权声明:本文为博主原创文章,未经博主允许不得转载。

ItemCF:ItemCollaborationFilter,基于物品的协同过滤

算法核心思想:给用户推荐那些和他们之前喜欢的物品相似的物品。

比如,用户A之前买过《数据挖掘导论》,该算法会根据此行为给你推荐《机器学习》,但是ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。

==>该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。

基于物品的协同过滤算法主要分为两步:

一、计算物品之间的相似度;

二、根据物品的相似度和用户的历史行为给用户生成推荐列表;

下面分别来看这两步如何计算:

一、计算物品之间的相似度:

我们使用下面的公式定义物品的相似度:

其中,|N(i)|是喜欢物品i的用户数,|N(j)|是喜欢物品j的用户数,|N(i)&N(j)|是同时喜欢物品i和物品j的用户数。

从上面的定义看出,在协同过滤中两个物品产生相似度是因为它们共同被很多用户喜欢,两个物品相似度越高,说明这两个物品共同被很多人喜欢。

这里面蕴含着一个假设:就是假设每个用户的兴趣都局限在某几个方面,因此如果两个物品属于一个用户的兴趣列表,那么这两个物品可能就属于有限的几个领域,而如果两个物品属于很多用户的兴趣列表,那么它们就可能属于同一个领域,因而有很大的相似度。

举例,用户A对物品a、b、d有过行为,用户B对物品b、c、e有过行为,等等;

依此构建用户——物品倒排表:物品a被用户A、E有过行为,等等;

建立物品相似度矩阵C:

其中,C[i][j]记录了同时喜欢物品i和物品j的用户数,这样我们就可以得到物品之间的相似度矩阵W。

在得到物品之间的相似度后,进入第二步。

二、根据物品的相似度和用户的历史行为给用户生成推荐列表:

ItemCF通过如下公式计算用户u对一个物品j的兴趣:

其中,Puj表示用户u对物品j的兴趣,N(u)表示用户喜欢的物品集合(i是该用户喜欢的某一个物品),S(i,k)表示和物品i最相似的K个物品集合(j是这个集合中的某一个物品),Wji表示物品j和物品i的相似度,Rui表示用户u对物品i的兴趣(这里简化Rui都等于1)。

该公式的含义是:和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得比较高的排名。

下面是一个书中的例子,帮助理解ItemCF过程:

至此,基础的ItemCF算法小结完毕。

下面是书中提到的几个优化方法:

(1)、用户活跃度对物品相似度的影响

即认为活跃用户对物品相似度的贡献应该小于不活跃的用户,所以增加一个IUF(Inverse User Frequence)参数来修正物品相似度的计算公式:

用这种相似度计算的ItemCF被记为ItemCF-IUF。

ItemCF-IUF在准确率和召回率两个指标上和ItemCF相近,但它明显提高了推荐结果的覆盖率,降低了推荐结果的流行度,从这个意义上说,ItemCF-IUF确实改进了ItemCF的综合性能。

(2)、物品相似度的归一化

Karypis在研究中发现如果将ItemCF的相似度矩阵按最大值归一化,可以提高推荐的准确度。其研究表明,如果已经得到了物品相似度矩阵w,那么可用如下公式得到归一化之后的相似度矩阵w':

最终结果表明,归一化的好处不仅仅在于增加推荐的准确度,它还可以提高推荐的覆盖率和多样性。

用这种相似度计算的ItemCF被记为ItemCF-Norm。

以上内容参考自《推荐系统实践》

[推荐算法]ItemCF,基于物品的协同过滤算法相关推荐

  1. ItemCF,基于物品的协同过滤算法

    转载自   ItemCF,基于物品的协同过滤算法 ItemCF:Item Collaboration Filter,基于物品的协同过滤 算法核心思想:给用户推荐那些和他们之前喜欢的物品相似的物品. 比 ...

  2. 推荐算法概述(基于用户的协同过滤算法、基于物品的协同过滤算法、基于内容的推荐算法)

    "无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程." 目前推 ...

  3. 推荐系统实践(二)----基于物品的协同过滤算法(ItemCF)

      上一篇博客我简单讲了一下基于用户的协同过滤算法,这里我们一起来学习一下另一种:基于物品的协同过滤算法.基于物品的协同过滤算法是目前业界应用最多的算法,亚马逊.Netflix.Hulu.YouTub ...

  4. 推荐算法 itemcf java_推荐系统之基于物品的协同过滤算法(ItemCF)

    推荐系统之基于物品的协同过滤算法(ItemCF) 发布时间:2018-03-04 16:55, 浏览次数:1778 , 标签: ItemCF 推荐系统之基于物品的协同过滤算法(ItemCF) 前端时间 ...

  5. 基于物品的协同过滤推荐算法_《推荐系统实践》3.基于物品的协同过滤算法

    基于物品的协同过滤算法(item-based collaborative filtering,以下简称ItemCF)算法思想:给用户推荐那些和他们之前喜欢的物品相似的物品. 不过,ItemCF算法并不 ...

  6. 推荐算法之基于物品的协同过滤

    基于物品的协同过滤( item-based collaborative filtering )算法是此前业界应用较多的算法.无论是亚马逊网,还是Netflix .Hulu . YouTube ,其推荐 ...

  7. 基于物品的协同过滤算法ItemCF

    基于物品的协同过滤算法ItemCF 基于item的协同过滤,通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐.简单来讲就是:给用户推荐和他之前喜欢的物品相似的物 ...

  8. Hadoop案例之基于物品的协同过滤算法ItemCF

    Hadoop案例之基于物品的协同过滤算法ItemCF 转载自:http://blog.csdn.net/qq1010885678/article/details/50751607?locationNu ...

  9. 大数据Hadoop学习之————基于物品的协同过滤算法实现物品推荐

    一.基础概念 协同过滤算法一般分为两种实现: 基于用户的协同过滤算法(userCF):通过寻找相似兴趣的其他用户,为指定用户推荐物品.比如用户A喜欢商品A.B,用户B也喜欢商品A和B,则可以认为用户A ...

最新文章

  1. LINUX内核分析第八周总结:进程的切换和系统的一般执行过程
  2. python不能加密_Python之加密模块
  3. python监听鼠标事件_Python中使用PyHook监听鼠标和键盘事件实例
  4. Mybatis源码阅读(三):结果集映射3.3 —— 主键生成策略
  5. ELV局部视图与差分隐私【敏感度到底怎么理解】【下】
  6. vue-count-to插件使用方法
  7. linux中mysql不显示中文_linux中解决mysql中文乱码方法
  8. [转载] 使用python完成冒泡排序_使用python实现-冒泡排序
  9. rxjava 观察者模式_RxJava可观察对象和观察者
  10. 开课吧Java课堂:如何使用isAlive()和join()
  11. 重力对手表的走时精度有何影响?12:06:44
  12. UIP协议栈移植到u-boot详解
  13. LeetCode 练习——316. 去除重复字母
  14. 机器人教育的中心地段
  15. Java版的双色球买彩票程序
  16. android ratingbar不可点击,Android评分控件RatingBar使用实例解析
  17. 凝思linux操作系统4.2内核版本_国产自主操作系统:凝思磐石安全操作系统
  18. 关于MQTT协议实现消息推送系统
  19. 实验二 数据选择器的设计与vivado集成开发环境【Verilog】
  20. 为什么隐私币将统治下一个牛市?

热门文章

  1. 虚拟机中mysql-cobar安装_cobar配置安装
  2. 树莓派python编程案例-树莓派Python编程指南.pdf
  3. Python center 用法
  4. pandas 索引选取和过滤(四)
  5. 38. Leetcode 101. 对称二叉树 (二叉树-二叉树性质)
  6. 特征工程-统计数据特征
  7. 递归行为时间复杂度估算
  8. 机器学习笔记:triplet loss
  9. pytorch 笔记:torchsummary
  10. 深度学习核心技术精讲100篇(十一)-Google利器超强特征提取网络(Transformer)