update README.md.

Signed-off-by: taishan <liuyapeng@bdtd.com>
This commit is contained in:
taishan
2023-02-07 09:15:10 +00:00
committed by Gitee
parent b710912ad6
commit 6bed742773
4 changed files with 58 additions and 0 deletions

BIN
1675760919069.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

View File

@@ -37,10 +37,68 @@
0.2-0.4 弱相关 0.2-0.4 弱相关
0.0-0.2 极弱相关或无相关 0.0-0.2 极弱相关或无相关
#### UserCF基于用户的协同过滤
**算法思想**
![输入图片说明](userCF.png)
当一个用户A需要个性化推荐的时候我们可以先找到和他有相似兴趣的其他用户然后把那些用户喜欢的而用户A没有听说过的物品推荐给A
**步骤**
所有基于用户的协同过滤算法步骤为
1. 找到和目标用户兴趣相似的其他用户集合
2. 找到这个集合中的用户喜欢的且目标用户没有听说过的物品推荐给目标用户
**缺点**
1.数据稀疏性
一个大型的电子商务推荐系统一般有非常多的物品用户可能买的其中不到1的物品不同用户之间购买的物品重叠性较低导致算法无法找到一个用户的偏好相似的用户这导致UserCF不适用与那些正反馈获取较困难的应用场景(如酒店预订大件商品购买等低频应用)
2.用户相似度矩阵维护度大
UserCF需要维护用户相似度矩阵以便快速的找出Topn相似用户该矩阵的存储开销非常大存储空间随着用户数量的增加而增加不适合用户数据量大的情况使用
在互联网应用场景中绝大多数产品的用户数都要远大于物品数因此维护用户相似度矩阵的难度要大很多
其适用于用户少物品多时效性较强的场合如新闻推荐场景
#### ItemCF基于物品的协同过滤
**算法思想**
![输入图片说明](itemCF.png)
由于UserCF的缺陷导致很多电商平台并没有采用这种算法而是采用了ItemCF算法实现推荐系统基于物品的协同过滤基本思想是预先根据所以用户的历史偏好数据计算物品之间的相似度然后把与用户喜欢的物品相类似的物品推荐给用户ItemCF算法并不利用物品的内容属性计算物品间的相似度主要通过分析用户的行为记录计算物品之间的相似度
**步骤**
基于物品的协同过滤算法步骤
1.计算物品之间的相似度
2.根据物品的相似度和用户的历史行为给用户生成推荐列表购买了该商品的用户也经常购买的其他商品
**缺点**
1.数据稀疏性
![输入图片说明](1675760919069.jpg)
表中数据0代表用户没有商品打分1代表用户对商品打分了
想要计算物品相似度矩阵则两个物品的向量需要满足至少同一行有2个1才能计算即使有如果行数过少得出来得数据就不可靠
因而ItemCF算法使用与电商平台等User数量远大于Item数量得应用场景
2.物品相似度矩阵维护难度大
对于有m个用户n个物品m>>n
则user相似度矩阵维度为m*m
item相似度矩阵维度为:n*n
在user数量远远高于item数量时维护item相似度矩阵要比user相似度矩阵容易。
所以ItemCF适用于兴趣变化较为稳定更接近与个性化的推荐。适合物品少用户多用户兴趣固定持久物品更新速度不是太快的场合。如推荐艺术品音乐电影等.
#### UserCF和ItemCF的对比
| | UserCF | ItemCF |
|---|---|---|
| 场景 | 适用于用户较少的场合,如果用户很多,计算用户相似度矩阵代价很大 | 适用于物品数量明显少于用户数的场合,如果物品很多,计算物品相似度矩阵难度很大 |
| 领域 | 时效性较强,用户个性化兴趣不太明显的领域,强调人与人之间的共性(微博热搜) | 长尾物品(小众物品)丰富,用户个性化需求强烈的领域,强调人的个性 |
| 实时性 | 在用户有新行为,不一定造成推荐结果的立即变化 | 用户有新行为,一定会导致推荐结果的实时变化 |
| 冷启动 | 在新用户对很少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度表是每隔一段时间离线计算的(只要用户有新行为,那么相似用户就很有可能发生变化,需要更新相似用户,才能做出准确的推荐) | 新用户只要对一个物品产生行为,就可以给他推荐和该物品相关的其他物品 |
| 新物品 | 新物品上线一段时间后,一旦有用户对物品产生行为,就可以将新物品推荐给和对它产生行为的用户兴趣相似的其他用户 | 没有办法再不离线更新物品相似度表的情况下将新物品推荐给用户,因为新物品跟其他物品的相似度还没有计算,不能从相似性矩阵中找到对于的相似物品|
| 推荐理由| 很难提供令用户信服的推荐解释 | 利用用户的历史行为给用户做推荐解释,可以令用户比较信服 |
#### 代码实现 #### 代码实现
![输入图片说明](1675752085157.jpg) ![输入图片说明](1675752085157.jpg)
#### 软件架构 #### 软件架构
Spring boot单项目 Spring boot单项目

BIN
itemCF.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
userCF.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB