推荐系统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
2:baseline_only.BaselineOnly
期望值加用user偏差和item偏差,如果user或者item是未知的,那么偏差将设置为0
3:knns.KNNBasic
基础协同过滤算法,可以是基于用户的和基于item的,r(vi)是另一个用于v对于item的评分,r(uj)是user对另一个物品就j
的评分。
4:knns.KNNWithMeans
考虑了每个用户打分均值或者每个item打分的均值,去除参考用户打分整体偏高和偏低的影响
5:knns.KNNBaseline
从参考评分里减去偏差
6:matrix_factorization.SVD点击打开链接
预测函数定义为:未知的值设为0,求解时用梯度下降法求最小的平方误差,
7:matrix_factorization.SVDpp 讲的很清楚点击打开链接
这里的I(u)表示用户u行为记录(包括浏览的和评过分的商品集合),Yj是item属性
8:matrix_factorization.NMF
类似于SVD,预测函数被定义为,梯度下降过程保证矩阵的取值为正数,SGD更新如下:
作者表明该算法非常依赖初始化的值,如果设置biased=Ture,那么预测函数为:如果引入biased,容易过拟合,所以要尽量减少隐含因素数量或者增加正则化。
9:slope_one.SlopeOne
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,那么预测值取期望。