基于物品的协同过滤算法(Item-CF)
来源:互联网 发布:去码软件 编辑:程序博客网 时间:2024/06/04 18:40
一、算法思想。
基于物品的协同过滤算法,是给用户推荐和他之前喜欢的物品相似的物品。
基于物品的协同过滤算法,是目前广泛使用的一种推荐算法,像Netflix, YouTube, Amazon等。
二、算法步骤。
1、计算物品之间的相似度。
计算相似度的方法有以下几种:
- 基于余弦(Cosine-based)的相似度计算,通过计算两个向量之间的夹角余弦值来计算物品之间的相似性,公式如下:
其中分子为两个向量的内积,即两个向量相同位置的数字相乘。
- 基于关联(Correlation-based)的相似度计算,计算两个向量之间的Pearson-r关联度,公式如下:
其中表示用户u对物品i的打分,表示第i个物品打分的平均值。
计算物品(item)间的相似度的实现:(根据所有用户U的”历史偏好”数据,即:打过分的item数据,来计算item间的相似度)
同时对物品Ii、Ij打分的用户集合U’=(u1,u2,…un),计算物品Ii、Ij的相似度。按照上面3种方法:
i. 余弦Cosin:
U’对物品Ii打分,组成一个向量v1(r1,r2,…,rn);U’对物品Ij打分,组成一个向量v2(r1’,r2’,…,rn’),利用余弦公式,计算物品 Ii、Ij的相似度sim(Ii、Ij)。
ii. Pearson-r关联度:
直接按照公式计算。
这样,就得到一个物品间的“相似度矩阵M”。
2、根据物品的相似度和用户的历史行为给用户生成推荐列表。
用户的历史行为也就是用户对若干个物品产生过购买、浏览、关注等行为,假设这些商品的集合为:
假设用户未发生过行为的物品为:
在得到物品间的相似度后,Item-CF通过如下公式计算用户u对物品j的兴趣度:
其中,表示用户对产生过行为的物品i的兴趣度;表示物品i,j的相似度。
3、为用户u生成推荐列表。
对J中所有物品打分后,倒排序,取TOP K,作为推荐结果。
- 基于物品的协同过滤算法(Item-CF)
- 推荐算法--基于物品协同过滤算法实现(python: Item-CF)
- Mahout并行基于物品的协同过滤算法源码分析(Distributed item-based CF)
- 基于物品的协同过滤算法
- 基于物品的协同过滤算法
- 基于物品的协同过滤算法
- 基于物品的协同过滤推荐算法
- 基于物品的协同过滤算法
- 基于物品的协同过滤推荐算法(矩阵相乘)
- 基于物品的协同过滤(item-based collaborative filtering)
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms”
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms” .
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms”
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms” .
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms”
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms”
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms”
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms”
- 关于eclipse导入工程出现“SystemProperties cannot be resolved”时的解决方法
- 自定义控件--自定义控件的属性
- NRF51822实例代码说明
- js_碰壁反弹效果
- Linux下搭建php+apach+mysql+svn
- 基于物品的协同过滤算法(Item-CF)
- Redis五大数据之List
- 邮箱常用端口
- 各种排序算法的分析及java实现
- android 端生成随机验证码 实现
- Fedora DHCP 服务器 在多网段多网口下 只为特定网段网口提供DHCP服务配置
- 分布式数据库
- memset,memcpy,strcpy函数使用方法
- Python——动态数据类型