博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
推荐算法之基于物品的协同过滤算法
阅读量:5073 次
发布时间:2019-06-12

本文共 1292 字,大约阅读时间需要 4 分钟。

基于物品的协同过滤算法(ItemCF)是业界应用最多的算法,主要思想是利用用户之前有过的行为,给用户推荐和之前物品类似的物品。

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

1)计算物品之间的相似度。

2)依据物品的相似度和用户的历史行为给用户生成推荐列表。

第一步的关键点在于计算物品之间的相似度,这里并不採用基于内容的相似性,而是去计算在喜欢物品i的用户中有多少是喜欢物品j的,这样计算的前提是用户的兴趣爱好通常是比較确定的,不easy变,那么当一个用户对两个物品都喜欢的时候,我们往往能够觉得这两个物品可能属于同一分类。令N(i)表示购买物品i的用户数,则物品i和物品j的相似度能够用wij = |N(i)&N(j)|/N(i)来计算。

第一步时间复杂度的改进方法:和UserCF类似,我们可以建立一张用户-物品的倒查表,这样每次去计算一个用户有过行为的那些物品间的相似度,可以保证计算的相似度都是实用的,而不用花大的计算量在那些0上面(肯定是个稀疏矩阵)

第一步相似度的改进方法1:若依据上面的公式来计算相似度,你会发现,物品i跟流行物品j的相似度非常高,由于流行读高,所以基本人人都会买,这种话流行度高的物品就比較没有区分度,所以我们须要惩处流行物品j的权重wij = |N(i)&N(j)|/sqrt(N(i)*N(j))

第一步相似度的改进方法2:须要惩处用户的活跃度。若用户活跃度比較低,仅仅买了有限的几本书,那么这几本书非常有可能在一个或者两个兴趣范围内,对计算物品相似度比較实用,可是假设说一书店卖家趁着打折把亚马逊90%的书都买了然后赚差价,那么该用户的行为对计算物品相似度就没什么作用,由于90%的书肯定会覆盖非常多范围,故应该像改进方法一中惩处用户的活跃度。

第一步相似度的改进方法3:物品相似度的归一话。归一化不只能提高推荐的精确度,还能够提高推荐的覆盖率和多样性。比方亚马逊上,用户的兴趣爱好肯定是分成几类的,非常少说爱好集中在一类。如果有两类A和B,A类之间的相似度为0.5, B类之间的相似度为0.8,A和B之间的相似度为0.2, 当用户买了5本A类的书和5本B类的书后,我们要给用户来推荐书,如果依照之前的方法,最后依照相似度排序,那么推荐的应该都会是B类物品,就算B类中排名比較低,但照样比A类要高阿,所以应该依据类别进行相似度的归一话,这样一来A的相似度为1,B的相似度也为1,这种话排序后的推荐A,B类商品都有,就大大提高了精确度,覆盖率和多样性。

第二步则比較简单,计算物品与用户已买物品的相似度(权重和),然后依据相似度排序选出topN.

ItemCF在实际系统中运用的比較多,主要有两个长处:

1)item-item表相比方user-user表要小的多,处理起来比較easy

2)itemCFeasy提供推荐理由,比方给你推荐《机器学习》是由于你之前买过《数据挖掘》,这样能添加信任度,提高用户和推荐系统的交互,进一步增强个性化推荐

转载于:https://www.cnblogs.com/gcczhongduan/p/4186013.html

你可能感兴趣的文章
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
java学习笔记之String类
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
iOS开发——缩放图片
查看>>
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
蓝桥杯-分小组-java
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>
jdk1.8 api 下载
查看>>