协同过滤算法
先介绍一下集体智慧
集体智慧(collective intelligence)的核心原理是指在大量的人群的行为和数据中收集答案,帮助你对整个人群的到统计意义上的结论,这些结论是在单个个体上无法得到的,他往往是某种趋势或者人群中共性的部分。
协同过滤是利用集体智慧的一个典型方法。协同过滤核心原理是指一般在海量的用户中发掘出一小部分和你品味比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目录作为推荐给你。他从一定程度上保留了个体特征,就是用户的品味偏好,所以它更多可以作为个性化推荐算法思想。
那么该如何确定一个用户是不是和你有相似的品味呢?又怎么将邻居们的喜好组织成一个排序目录?
协同过滤的核心
三要素
- 收集用户偏好
要从用户的行为和偏好中发现规律,并基于此给予推荐。所以,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素
收集用户偏好方法如下:
偏业务:内容行(以腾讯视频为例)
偏业务:如服务型(以美团为例)
Tips:BM-25
W i W_i Wi可自己设置,默认时idf值
I D F ( q i ) = l o g N − n ( q i ) + 0.5 n ( q i ) + 0.5 R ( q i , d ) = f i ⋅ ( k 1 + 1 ) f i + K ⋅ a f i ⋅ ( k 2 + 1 ) q f i + k 2 K = k 1 ⋅ ( 1 − b + b ⋅ d l a v g d l ) IDF(q_i) = log\frac{N-n(q_i)+0.5}{n(q_i)+0.5}\\ R(q_i,d) = \frac{f_i\cdot (k_1+1)}{f_i+K}\cdot \frac{af_i\cdot (k_2+1)}{qf_i+k_2}\\ K = k_1\cdot (1-b+b\cdot \frac{dl}{avg dl}) IDF(qi)=logn(qi)+0.5N−n(qi)+0.5R(qi,d)=fi+Kfi⋅(k1+1)⋅qfi+k2afi⋅(k2+1)K=k1⋅(1−b+b⋅avgdldl)
其中,k1,k2,b都是调节因子,一般k1=2,k2=1,b=0.75,fi是词在文档中的次数,qfi是词在查询语句里的次数,dl是文档长度,avgdl是文档平均长度。乘积左边因数代表词在文档中的次数关系,乘积右边因数代表词在查询语句中的次数关系,一般绝大数情况下,查询词在查询语句里面出现一次,所以qfi可以看成是1,又因为k2为1,所以右边因数也可以等于1。
- 找到相似用户或物品
原理:当已经对用户行为进行分析得到用户喜好后,可以根据用户喜好计算相似用户和物品,然后基于相似用户或者物品进行推荐。
目前主流的,都是围绕最典型的 CF 的两个分支:
- 基于用户的 CF (将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度)
- 基于物品的 CF(将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度)
相似度计算方法
欧几里得距离
d
(
x
,
y
)
=
(
∑
(
x
i
−
y
i
)
2
)
s
i
m
(
x
,
y
=
1
1
+
d
(
x
,
y
)
d(x,y) = \sqrt{(\sum(x_i-y_i)^2)}\\ sim(x,y = \frac{1}{1+d(x,y)}
d(x,y)=(∑(xi−yi)2)sim(x,y=1+d(x,y)1
皮尔逊相关系数:计算两个定距变量间联系的紧密程度
p
(
x
,
y
)
=
∑
x
i
y
i
−
n
x
y
‾
(
n
−
1
)
s
x
s
y
=
n
∑
x
i
y
i
−
∑
x
i
∑
y
i
n
∑
x
i
2
−
(
∑
x
i
)
2
n
∑
y
i
2
−
(
∑
y
i
)
2
p(x,y) = \frac{\sum x_iy_i-n\overline{xy}}{(n-1)s_xs_y}\\ = \frac{n\sum x_iy_i-\sum x_i\sum y_i}{\sqrt{n\sum x_i^2-(\sum x_i)^2}\sqrt{n\sum y_i^2-(\sum y_i)^2}}
p(x,y)=(n−1)sxsy∑xiyi−nxy=n∑xi2−(∑xi)2n∑yi2−(∑yi)2n∑xiyi−∑xi∑yi
cosine相似度:被广泛应用于计算文档数据的相似度
T
(
x
,
y
)
=
x
⋅
y
∣
∣
x
∣
∣
2
∗
∣
∣
y
∣
∣
2
=
∑
x
i
y
i
∑
x
i
2
∑
y
i
2
T(x,y) = \frac{x\cdot y}{||x||^2*||y||^2} = \frac{\sum x_iy_i}{\sqrt{\sum x_i^2}\sqrt{\sum y_i^2}}
T(x,y)=∣∣x∣∣2∗∣∣y∣∣2x⋅y=∑xi2∑yi2∑xiyi
tanimoto系数:被广泛应用于计算文档数据的相似度
T
(
x
,
y
)
=
x
⋅
y
∣
∣
x
∣
∣
2
∗
∣
∣
y
∣
∣
2
−
x
⋅
y
=
∑
x
i
y
i
∑
x
i
2
+
∑
y
i
2
−
∑
x
i
2
∑
y
i
2
T(x,y) = \frac{x\cdot y}{||x||^2*||y||^2 - x\cdot y} = \frac{\sum x_iy_i}{\sqrt{\sum x_i^2}+\sqrt{\sum y_i^2} - \sqrt{\sum x_i^2}\sqrt{\sum y_i^2}}
T(x,y)=∣∣x∣∣2∗∣∣y∣∣2−x⋅yx⋅y=∑xi2+∑yi2−∑xi2∑yi2∑xiyi
优点
- 能够过滤机器难以自动内容分析的信息,如艺术品,音乐等。
- 共用其他人的经验,避免了内容分析的不完全或不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、个人品味)进行过滤。
- 有推荐新信息的能力。可以发现内容上完全不相似的信息,用户对推荐信息的内容事先是预料不到的。可以发现用户潜在的但自己尚未发现的兴趣偏好。
- 推荐个性化、自动化程度高、能够有效的利用其他相似用户的回馈信息、加快个性化学习的速度。
缺点
- 新用户问题(New User Problem) 系统开始时推荐质量较差;
- 新项目问题(New Item Problem) 质量取决于历史数据集;
- 稀疏性问题(Sparsity);
- 系统延伸性问题(Scalability)
- 同义问题。同义词是指名称不同但非常相似的项目。大多数推荐系统很难区分这些项目之间的不同,如婴儿服装和婴儿布料。
评测指标
- 用户满意度。只能通过在线实验获得。一般通过对用户行为的统计获得,比如用户点击率、推荐购买率、停留时间等;也可以通过收集用户反馈获得,如让用户评价推荐的物品是否令人满意。
- 预测准确度。评分预测使用均方根误差和平均绝对误;TOPN推荐通过准确率和召回率度量
- 覆盖率。覆盖率描述了推荐系统对物品长尾的发掘能力,高的覆盖率表示推荐系统可以推荐一些长尾部分的物品,这是物品提供商比较关心的。对覆盖率一个简单定义为推荐系统能够推荐出来的物品占总物品I的比例
- 多样性。用户的兴趣是广泛的,因此推荐系统推荐给用户的物品也应该是多样的。比如,用户爱看的书不仅有历史文学书,也可能有心理专业书,且看的比例约为7:3,所以在推荐的时候,也应该考虑为用户推荐这两类书籍,且比例也约为7:3。
- 新颖性。新颖性即推荐给用户他们之前不知道的物品,将用户有过行为的物品从推荐表中剔除掉。评测新颖性的最简单方法是利用推荐结果的平均流行度,即推荐的物品的平均热门程度越低,其新颖性越高。
参考
https://www.cnblogs.com/Little-Li/p/11354590.html