基于CF(协同过滤)推荐算法

基于物品的CF(协同过滤)推荐算法

1.1算法简介

CF(协同过滤)简单来形容就是利用兴趣相投的原理进行推荐,协同过滤主要分两类,一类是基于物品的协同过滤算法,另一种是基于用户的协同过滤算法,这里主要介绍基于物品的协同过滤算法。

给定一批用户,及一批物品,记Vi表示不同用户对物品的评分向量,那么物品i与物品j的相关性为:
在这里插入图片描述
上述公式是利用余弦公式计算相关系数,相关系数的计算还有:杰卡德相关系数、皮尔逊相关系数等。

皮尔森相关系数(Pearson correlation coefficient)。其定义如下:

该系数定义的是两个向量的线性相关程度,取值范围为[-1,+1],0表示线性无关,绝对值越大线性相关程度越大,正/负表示正/负线性相关。

简单的给几个例子:
[1,2,3],[4,5,6]:1
[1,2,3],[6,5,4]:-1
[1,2,3],[1,2,4]:0.98
[1,2,3],[-1,-11,-111]:-0.9

计算用户u对某一物品的偏好,记用户u对物品i的评分为score(u,i),用户u对物品i的协同过滤得分为rec(u,j)。
在这里插入图片描述

1.2业务实践

以购物篮子为例,业务问题:根据用户的历史购买商品记录,给用户推荐一批商品,协同过滤算法实现方法如下。

Step1:计算物品之间的相关系数

记buyersi表示用户购买商品的向量,记buyersi=(…,bu,i,…) u∈U为,其中U表示全库用户集合,bu,i表示用户u对商品i的得分,定义如下:
在这里插入图片描述
那么商品i与商品j的相关系数如下:
在这里插入图片描述
上述公式是是利用余弦公式计算相关性,含义是商品的用户购买向量夹角越小越相似。此外也可以运用皮尔逊、杰卡德、自定义公式计算相关性,这里不一一列举。

Step2:计算用户对商品的协同过滤得分

给定一个用户u,设该用户历史购买商品记录的向量为historyu=(…,hu,i,…) ,i∈I其中I表示所有商品的集合:
在这里插入图片描述

计算给定一个物品j的协同过滤得分为:
在这里插入图片描述
Step3:给用户推荐商品

通过Step2计算用户对全库商品的协同过滤得分,取得分top 10展示给用户。

1.3实例代码
https://github.com/wolf-bailang/AI-Projects/tree/master/Recommender Systems/Item-Based Collaborative Filtering Recommendation Algorithm

参考来源
[1] https://mp.weixin.qq.com/s/9F_BRgnhAxP-nALtBdIZpg

你可能感兴趣的:(推荐系统)