推荐系统Surprise库内置推荐算法

在推荐系统的建模过程中,我们将用到python库 Surprise(Simple Python RecommendatIon System Engine),是scikit系列中的一个。

简单易用,同时支持多种推荐算法:


  • 基础算法/baseline algorithms
  • 基于近邻方法(协同过滤)/neighborhood methods
  • 矩阵分解方法/matrix factorization-based (SVD, PMF, SVD++, NMF)

算法类名

说明
1:random_pred.NormalPredictor 算法假设训练集服从随机正态分布,随机预测评分
2:baseline_only.BaselineOnly 预测给定user和Item的baseline估计
3:knns.KNNBasic 基础的协同过滤算法
4:knns.KNNWithMeans 考虑了每个用户的打分均值的协同过滤算法
5:knns.KNNBaseline 考虑了基础评分的协同过滤算法
6:matrix_factorization.SVD 着名的SVD算法
7:matrix_factorization.SVDpp 考虑隐含因素的SVD++ 算法 
8:matrix_factorization.NMF

基于非负矩阵分解的协同过滤算法

9:slope_one.SlopeOne 一个简单但精确的协作过滤算法。
10:co_clustering.CoClustering 一种基于协同聚类的协同过滤算法。

1:random_pred.NormalPredictor

假设训练数据符合正态分布(高斯分布),那么预测值r^ui通过随机分布产生,随机分布 N(μ^,σ^2) 期望和方差可以通过最大似然估计从数据集中求得

推荐系统Surprise库内置推荐算法_第1张图片

2:baseline_only.BaselineOnly


期望值加用user偏差和item偏差,如果user或者item是未知的,那么偏差将设置为0

3:knns.KNNBasic

推荐系统Surprise库内置推荐算法_第2张图片

基础协同过滤算法,可以是基于用户的和基于item的,r(vi)是另一个用于v对于item的评分,r(uj)是user对另一个物品就j

的评分。

4:knns.KNNWithMeans

推荐系统Surprise库内置推荐算法_第3张图片

考虑了每个用户打分均值或者每个item打分的均值,去除参考用户打分整体偏高和偏低的影响

5:knns.KNNBaseline

推荐系统Surprise库内置推荐算法_第4张图片

从参考评分里减去偏差

6:matrix_factorization.SVD点击打开链接

预测函数定义为:未知的值设为0,求解时用梯度下降法求最小的平方误差,


7:matrix_factorization.SVDpp   讲的很清楚点击打开链接


这里的I(u)表示用户u行为记录(包括浏览的和评过分的商品集合),Yj是item属性

8:matrix_factorization.NMF

类似于SVD,预测函数被定义为,梯度下降过程保证矩阵的取值为正数,SGD更新如下:

推荐系统Surprise库内置推荐算法_第5张图片

作者表明该算法非常依赖初始化的值,如果设置biased=Ture,那么预测函数为:如果引入biased,容易过拟合,所以要尽量减少隐含因素数量或者增加正则化。

9:slope_one.SlopeOne

推荐系统Surprise库内置推荐算法_第6张图片

dev(i,j)是计算item之间的区别,j是那些u评价过的物品,然后根据那些对i,j同时做出评价的用户,求出大家对i,j评价的差值,认为u和那些同时评价i,j的用户对i,j的评价偏好一样。

10:co_clustering.CoClustering

预测函数:其中,C(ui)取均值是聚类ui的均值,同理C(u)和C(j),如果有未知的量,例如u,i,那么预测值取期望。

你可能感兴趣的:(Surprise,推荐系统,内置算法,协同过滤,SVD,ML)