推荐系统学习(二)--UserCF与ItemCF推荐算法
文章目录
- 基于近邻的推荐算法
- 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}∣=61
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}∣=61
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}∣=62
所以我们得出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)∑wijruj
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推荐算法相关推荐
- 大数据的应用-UserCF和ItemCF推荐算法
一.推荐系统 1.1 推荐系统是大数据在互联网领域的典型应用,它可以通过分析用户的历史记录来了解用户的喜好,从而主动的为用户推荐其感兴趣的信息,满足用户的个性化推荐需求. 1.2 推荐系统是自动联系用 ...
- 推荐系统入门【分类、传统推荐算法、UserCF和ItemCF】
推荐系统入门[分类.传统推荐算法.UserCF和ItemCF] 一.推荐系统分类 二.传统推荐算法 2.1 基于规则的推荐 2.2 基于内容的推荐 2.3 基于协同过滤的推荐 (1)建立用户-项目评分 ...
- 【推荐系统】一文梳理序列化推荐算法模型进展
| 作者:朱勇椿 | 单位:中国科学院大学 | 研究方向:跨域推荐.多任务学习 在真实场景的推荐系统中,通常会使用所有数据来训练推荐模型,学到的user embedding可以表示用户的兴趣偏好.但是 ...
- mysql数据推荐算法_Java+Mysql实现简单在线电影、音乐、图书推荐系统 基于用户的协同过滤推荐算法实现 源代码下载...
# Java+Mysql实现简单在线电影.音乐.图书等推荐系统(基于用户的协同过滤推荐算法) 一.项目简介 1.开发工具和实现技术 MyEclipse10,jdk1.7,mysql5.5,tomca ...
- 05-机器学习_(协同过滤推荐算法与应用)---没用
机器学习算法day03_协同过滤推荐算法及应用 课程大纲 协同过滤推荐算法原理 协同过滤推荐算法概述 协同过滤推荐算法思想 协同过滤推荐算法分析 协同过滤推荐算法要点 协同过滤推荐算法实现 协同过滤推 ...
- 推荐系统实践(五)----基于图的推荐算法
基于图的模型(graph−basedmodelgraph-based modelgraph−basedmodel)是推荐系统中的重要内容.在研究基于图的模型之前,首先需要将用户行为数据表示成图的形 ...
- 推荐系统实践--基于邻域的社会化推荐算法
本文链接:https://blog.csdn.net/keyue123/article/details/87370575 今年抖音非常火爆和流行,我们在刷抖音的时候,经常会发现给我们刷到自己微信或 ...
- 算法学习二,红黑树查找算法
二叉查找树,对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低. 红黑树保证在最坏的情况下插入和查找效率都能保证在对数(Log(n))的时间复杂度内完成. 1.红黑树 ...
- 八皇后算法python_Python学习二(生成器和八皇后算法)
看书看到迭代器和生成器了,一般的使用是没什么问题的,不过很多时候并不能用的很习惯 书中例举了经典的八皇后问题,作为一个程序员怎么能够放过做题的机会呢,于是乎先自己来一遍,于是有了下面这个ugly的代码 ...
最新文章
- P1031 均分纸牌
- 漫谈Google Percolator分布式事务
- 判断 iframe 是否加载完成的完美方法
- java 两个窗口 贴_求助Java窗口菜单如何实现复制粘贴剪切等功能(内附源代码)...
- 上海电力学院计算机技术,上海电力学院计算机与信息工程学院介绍
- 【数据结构】二叉树的遍历及应用
- mysql集成函数_mysql的内置函数
- MySQL客户端连接被频繁杀掉,企业案例(一):由于mysql sleep线程过多小故障
- iOS获取camera的yuv数据
- 开源嵌入式linux,移植开源软件到嵌入式Linux系统技术攻略
- 有关大学计算机基础考试的试题,大学计算机基础考试试题
- 个人计算机组装主板,电脑主板安装详细图解 可以自己组装电脑了
- 云打码的简单使用举例
- 很不错的正则表达式前端使用手册
- 仿微信做个极速二维码扫描功能
- Github每日精选(第24期):python的浏览器MechanicalSoup
- Rosserial Arduino Library中从一行代码开始探究系统原理
- HTTP 304: Not Modified
- Python函数认识(二)
- Codeforces Round #796 (Div. 2) B Patchouli‘s Magical Talisman