1.基本思想
SlopOne算法也属于协同过滤算法的范畴,它是一种Rating-based算法,即基于评分的协同过滤算法,利用物品间的流行度差异来预测用户对新物品的评分,一共有三种形式,下面将一一介绍。
在这里我们规定了下面将用得到的符号,以及他的含义。
| 符号 | 含义 |
|---|---|
| uuu | 对于一个给定用户的不完整的评分数组,称为evaluationevaluationevaluation,即用户对所有物品的评分数组,包括用户未评价的物品 |
| uiu_iui | 用户对物品iii的评分 |
| S(u)S_{(u)}S(u) | 表示uuu中有评分的物品的合集 |
| card(S)card(S)card(S) | 表示集合SSS中元素的个数 |
| χ\chiχ | 表示训练集中所有用户评分数组uuu的集合 |
| Si(χ)S_i(\chi)Si(χ) | 表示训练集χ\chiχ中所有包含物品iii的评分数组 |
2.基本SlopeOne算法
我们举个例子来说明该算法的基本步骤
| 用户\物品 | a | b | c | d |
|---|---|---|---|---|
| A | 5 | 3.5 | ||
| B | 2 | 5 | 4 | 2 |
| C | 4.5 | 3.5 | 1 | 4 |
-
Step1:计算Item之间的评分差的均值,记为评分偏差(两个item都评分过的用户)。devi,j=∑u∈Si,j(χ)ui−ujcard(Si,j(χ))dev_{i,j}=\sum_{u\in S_{i,j}(\chi)}\frac{u_i-u_j}{card(S_{i,j}(\chi))}devi,j=u∈Si,j(χ)∑card(Si,j(χ))ui−uj
b与a:((3.5-5)+(5-2)+(3.5-4.5))/3=1/6
c与a:((4-2)+(1-4.5))/2=0.75
d与a:((2-2)+(4-4.5))/2=-0.25
c与b:((4-5)+(1-3.5))/2=-1.75
d与b:((2-5)+(4-3.5))/2=1.25
d与c:((2-4)+(4-1))/2=0.5 -
Step2:根据Item间的评分偏差和用户的历史评分,预测用户对未评分的item的评分,我们假设userAuserAuserA为uAu_AuA。p(uj)=∑i∈S(uA)(devi,j+uAi)card(S(uA))p(u_{j})=\frac{\sum_{i\in S(u_A)}(dev_{i,j}+u_{Ai})}{card(S(u_A) )}p(u

SlopeOne算法是一种基于评分的协同过滤预测方法,包括基本、加权和双极性三种形式。基本SlopeOne通过计算物品间评分差的均值预测用户评分;加权版考虑共现次数影响,提高预测置信度;双极性算法则区分用户对物品的喜好类型,更严格地进行计算。通过对用户历史评分和物品评分偏差的处理,算法可以为用户推荐未评分的物品。
最低0.47元/天 解锁文章
1033





