文章目录

  • 基于近邻的推荐算法
  • UserCF算法原理
    • 1. 构建用户物品评分表
    • 2. 相似度度量
    • 3. 计算推荐结果
    • 4. 惩罚热门物品
  • ItemCF算法原理
    • 1. 计算物品之间的相似度
      • 1. 建立用户物品倒排表
      • 2. 构建同现矩阵
      • 3. 构建评分矩阵
    • 2. 计算推荐结果
  • UserCF与ItemCF的对比分析

基于近邻的推荐算法

基于近邻的推荐算法是比较基础的算法,应用较为广泛,这里的近邻算法指的是协同过滤算法。包含基于用户的协同过滤算法(UserCF)和基于物品的协同过滤算法(ItemCF)。

协同过滤的核心思想就是基于相似性度量。

UserCF算法原理

核心思想:先找到相似用户,再找到他们喜欢的物品。
给用户推荐 “和他兴趣相投的用户” 喜欢的物品。

1. 构建用户物品评分表

这里以用户A、B、C、D对五个物品a、b、c、d、e的评分情况建立一张表:

用户 物品a 物品b 物品c 物品d 物品e
A 3.0 4.0 0 3.5 0
B 4.0 0 4.5 0 3.5
C 0 3.5 0 0 3
D 0 4 0 3.5 3

2. 相似度度量

采用余弦相似度衡量用户之间的相似度,计算公式如下:

Wuv=∣N(u)∩N(v)∣∣N(u)∣∗∣N(v)∣W_{uv}=\frac{|N(u)\cap N(v)|}{\sqrt{|N(u)|*|N(v)|}}Wuv​=∣N(u)∣∗∣N(v)∣​∣N(u)∩N(v)∣​
上述公式中,u、v分别代表两个用户,N(u)表示用户u有过评分的物品集合。
下面计算用户C与其他用户的相似度:
WCA=∣{b,e}∩{a,b,d}∣∣{b,e}∣∗∣{a,b,d}=16W_{CA}=\frac{|\{b,e\}\cap \{a,b,d\}|}{\sqrt{|\{b,e\}|*|\{a,b,d\}}}=\frac{1}{\sqrt{6}}WCA​=∣{b,e}∣∗∣{a,b,d}​∣{b,e}∩{a,b,d}∣​=6​1​
WCB=∣{b,e}∩{a,c,e}∣∣{b,e}∣∗∣{a,c,e}=16W_{CB}=\frac{|\{b,e\}\cap \{a,c,e\}|}{\sqrt{|\{b,e\}|*|\{a,c,e\}}}=\frac{1}{\sqrt{6}}WCB​=∣{b,e}∣∗∣{a,c,e}​∣{b,e}∩{a,c,e}∣​=6​1​
WCD=∣{b,e}∩{b,d,e}∣∣{b,e}∣∗∣{b,d,e}=26W_{CD}=\frac{|\{b,e\}\cap \{b,d,e\}|}{\sqrt{|\{b,e\}|*|\{b,d,e\}}}=\frac{2}{\sqrt{6}}WCD​=∣{b,e}∣∗∣{b,d,e}​∣{b,e}∩{b,d,e}∣​=6​2​
所以我们得出D用户与C用户的相似度最大

3. 计算推荐结果

用户C进行评分的物品是b和c。那么接下来计算用户C对物品a、c、d的偏好程度:
P(C,a)=wCA∗3.0+WCB∗4.0+WCD∗0=2.858P(C,a)=w_{CA}*3.0+W_{CB}*4.0+W_{CD}*0=2.858P(C,a)=wCA​∗3.0+WCB​∗4.0+WCD​∗0=2.858
P(C,c)=wCA∗0+WCB∗4.5+WCD∗0=1.837P(C,c)=w_{CA}*0+W_{CB}*4.5+W_{CD}*0=1.837P(C,c)=wCA​∗0+WCB​∗4.5+WCD​∗0=1.837
P(C,d)=wCA∗3.5+WCB∗0+WCD∗3.5=4.287P(C,d)=w_{CA}*3.5+W_{CB}*0+W_{CD}*3.5=4.287P(C,d)=wCA​∗3.5+WCB​∗0+WCD​∗3.5=4.287
根据偏好程度给用户C推荐物品的顺序依次为d>a>c。

4. 惩罚热门物品

对于热门物品比如《高等数学》,并不能说明两个用户的喜好相似,所以要对热门物品进行一定的惩罚。可以用如下的公式进行计算:
Wuv=∑i∈N(u)∩N(v)1lg(1+N(i))∣N(u)∣∗∣N(v)∣W_{uv}=\frac{\sum_{i\in N(u)\cap N(v)} \frac{1}{lg(1+N(i))}} {\sqrt{|N(u)|*|N(v)|}}Wuv​=∣N(u)∣∗∣N(v)∣​∑i∈N(u)∩N(v)​lg(1+N(i))1​​
其中,N(i)是对物品i有过评分行为的用户集合。

ItemCF算法原理

核心思想:先找到用户喜欢的物品,再找到这些物品的相似物品。
给用户推荐他之前喜欢物品的相似物品。

1. 计算物品之间的相似度

1. 建立用户物品倒排表

仍采用上例中的数据,首先建立用户物品倒排表
A-a-b-d
B-a-c-e
C-b-e
D-b-d-e

2. 构建同现矩阵

同现矩阵表示同时喜欢两个物品的用户数,根据用户物品倒排表计算得到:

a b c d e
a 0 1 1 1 1
b 1 0 0 2 2
c 1 0 0 0 1
d 1 2 0 0 1
e 1 2 1 1 0

采用如下公式计算item之间的相似度:
wij=∣N(i)∩N(j)∣N(i)w_{ij}=\frac{|N(i)\cap N(j)|}{N(i)}wij​=N(i)∣N(i)∩N(j)∣​
分母中N(i)是喜欢物品i的用户数,分子表示同时喜欢物品i和j的用户数。
根据上述公式可以计算得到物品之间的相似度矩阵,这里略去。

3. 构建评分矩阵

用户C的评分矩阵:

物品 评分
a 0
b 3.5
c 0
d 0
e 3

2. 计算推荐结果

构建相似度矩阵之后,ItemCF通过如下公式计算用户u对物品i的兴趣:
P(u,i)=∑j∈S(i,K)∩N(u)wijrujP_{(u,i)}=\sum_{j \in S(i,K)\cap N(u)}w_{ij}r_{uj}P(u,i)​=j∈S(i,K)∩N(u)∑​wij​ruj​
N(u)是用户u喜欢的物品集合。
S(i,K)是和物品i最相似的K个物品集合。
wijw_{ij}wij​是物品i和j的相似度。$
r_{uj}$使用户u对物品j的兴趣,若用户u对物品j有过行为,则令其为1。

推荐结果为相似度矩阵和评分矩阵的乘积:

物品 推荐评分
a 3.25
b 2.0
c 3.0
d 5.0
e 2.33

那么除去b和e之外,为用户C推荐顺序为d>a>c。

UserCF与ItemCF的对比分析

  • 适用场景上当用户数量远远超过物品数量时,可以考虑ItemCF算法,例如购物网站和博客网站,其物品和博客数量一般相对稳定。当物品数量远超过用户数量时,可以采用UserCF算法,更适合新闻类和短视频类快消素材网站,因为其内容一般更新较快。
  • 推荐系统多样性上,从单用户多样性上考虑,ItemCF算法不如UserCF算法丰富,因为ItemCF推荐的是相似物品,覆盖面较小;而从系统多样性上考虑,ItemCF算法更能覆盖所有的物品。
  • 用户特点上,UserCF要求用户能够找到兴趣相同的邻居;而ItemCF则需要用户喜好的自相似度较大,即他自身的喜好是相似的。

推荐系统学习(二)--UserCF与ItemCF推荐算法相关推荐

  1. 大数据的应用-UserCF和ItemCF推荐算法

    一.推荐系统 1.1 推荐系统是大数据在互联网领域的典型应用,它可以通过分析用户的历史记录来了解用户的喜好,从而主动的为用户推荐其感兴趣的信息,满足用户的个性化推荐需求. 1.2 推荐系统是自动联系用 ...

  2. 推荐系统入门【分类、传统推荐算法、UserCF和ItemCF】

    推荐系统入门[分类.传统推荐算法.UserCF和ItemCF] 一.推荐系统分类 二.传统推荐算法 2.1 基于规则的推荐 2.2 基于内容的推荐 2.3 基于协同过滤的推荐 (1)建立用户-项目评分 ...

  3. 【推荐系统】一文梳理序列化推荐算法模型进展

    | 作者:朱勇椿 | 单位:中国科学院大学 | 研究方向:跨域推荐.多任务学习 在真实场景的推荐系统中,通常会使用所有数据来训练推荐模型,学到的user embedding可以表示用户的兴趣偏好.但是 ...

  4. mysql数据推荐算法_Java+Mysql实现简单在线电影、音乐、图书推荐系统 基于用户的协同过滤推荐算法实现 源代码下载...

    # Java+Mysql实现简单在线电影.音乐.图书等推荐系统(基于用户的协同过滤推荐算法) 一.项目简介 1.开发工具和实现技术 MyEclipse10,jdk1.7,mysql5.5,tomca ...

  5. 05-机器学习_(协同过滤推荐算法与应用)---没用

    机器学习算法day03_协同过滤推荐算法及应用 课程大纲 协同过滤推荐算法原理 协同过滤推荐算法概述 协同过滤推荐算法思想 协同过滤推荐算法分析 协同过滤推荐算法要点 协同过滤推荐算法实现 协同过滤推 ...

  6. 推荐系统实践(五)----基于图的推荐算法

      基于图的模型(graph−basedmodelgraph-based modelgraph−basedmodel)是推荐系统中的重要内容.在研究基于图的模型之前,首先需要将用户行为数据表示成图的形 ...

  7. 推荐系统实践--基于邻域的社会化推荐算法

    本文链接:https://blog.csdn.net/keyue123/article/details/87370575   今年抖音非常火爆和流行,我们在刷抖音的时候,经常会发现给我们刷到自己微信或 ...

  8. 算法学习二,红黑树查找算法

    二叉查找树,对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低. 红黑树保证在最坏的情况下插入和查找效率都能保证在对数(Log(n))的时间复杂度内完成. 1.红黑树 ...

  9. 八皇后算法python_Python学习二(生成器和八皇后算法)

    看书看到迭代器和生成器了,一般的使用是没什么问题的,不过很多时候并不能用的很习惯 书中例举了经典的八皇后问题,作为一个程序员怎么能够放过做题的机会呢,于是乎先自己来一遍,于是有了下面这个ugly的代码 ...

最新文章

  1. P1031 均分纸牌
  2. 漫谈Google Percolator分布式事务
  3. 判断 iframe 是否加载完成的完美方法
  4. java 两个窗口 贴_求助Java窗口菜单如何实现复制粘贴剪切等功能(内附源代码)...
  5. 上海电力学院计算机技术,上海电力学院计算机与信息工程学院介绍
  6. 【数据结构】二叉树的遍历及应用
  7. mysql集成函数_mysql的内置函数
  8. MySQL客户端连接被频繁杀掉,企业案例(一):由于mysql sleep线程过多小故障
  9. iOS获取camera的yuv数据
  10. 开源嵌入式linux,移植开源软件到嵌入式Linux系统技术攻略
  11. 有关大学计算机基础考试的试题,大学计算机基础考试试题
  12. 个人计算机组装主板,电脑主板安装详细图解 可以自己组装电脑了
  13. 云打码的简单使用举例
  14. 很不错的正则表达式前端使用手册
  15. 仿微信做个极速二维码扫描功能
  16. Github每日精选(第24期):python的浏览器MechanicalSoup
  17. Rosserial Arduino Library中从一行代码开始探究系统原理
  18. HTTP 304: Not Modified
  19. Python函数认识(二)
  20. Codeforces Round #796 (Div. 2) B Patchouli‘s Magical Talisman

热门文章

  1. 201571030131/201571030111《小学四则运算练习软件软件需求说明》结对项目报告
  2. python处理大型数据的csv
  3. 计算机房电磁辐射防护,计算机机房电磁波的防护要求
  4. 全球及中国电子手环行业市场前瞻及投资可行性研究报告2022-2027年
  5. AVAIO流学习总结
  6. word-wrap html,word-wrap
  7. 使用 Java Stream 实现集合排序
  8. c语言 循环语句中的终止命令,Shell break和continue命令
  9. mkfs.xfs指令详解
  10. 2010年财富杂志全球500强榜公布 沃尔玛居榜首