📜  基于用户的协同过滤

📅  最后修改于: 2022-05-13 01:58:09.207000             🧑  作者: Mango

基于用户的协同过滤

基于用户的协同过滤是一种用于根据与目标用户具有相似品味的其他用户对该项目给出的评分来预测用户可能喜欢的项目的技术。
许多网站使用协同过滤来构建他们的推荐系统。

基于用户的协同过滤步骤:

步骤1:寻找用户与目标用户U的相似度。

可以从给定的公式计算任意两个用户“a”“b”的相似度,

Sim(a,b)=\frac {\sum_p (r_{ap}-\bar r_a)(r_{ab}-\bar r_b)}{\sqrt{\sum (r_{ap}-\bar r_a)^2} \sqrt{\sum (r_{bp}-\bar r_b)^2}}\newline r_{up}:rating \hspace{0.1cm} of\hspace{0.1cm}user\hspace{0.1cm}u\hspace{0.1cm}against\hspace{0.1cm}item\hspace{0.1cm}p \newline p:items

第 2 步:预测项目的缺失评分
现在,目标用户可能与某些用户非常相似,而与其他用户可能不太相似。因此,更相似的用户对特定项目的评分应该比不太相似的用户给予的评分更高,依此类推。这个问题可以通过使用加权平均方法来解决。在这种方法中,您将每个用户的评分与使用上述公式计算的相似性因子相乘。



缺失的评分可以计算为,

r_{up}=\bar r_u+\frac{\sum_{i\in users}sim(u,i)*r_{ip}}{\sum_{i\in users}|sim(u,i)|}

示例:考虑一个矩阵,其中显示了四个用户Alice、U1、U2 和 U3对不同新闻应用程序的评分。根据用户对新闻应用程序的喜爱程度,评分范围从 1 到 5。 '?表示该应用程序尚未被用户评级。
NameInshorts(I1)HT(I2)NYT(I3)TOI(I4)BBC(I5)
Alice5414?
U131233
U243435
U333154

第 1 步:计算 Alice 和所有其他用户之间的相似度
首先我们计算除 I5 之外的所有用户的评分平均值,因为它不是由 Alice 评分的。因此,我们计算平均值为,

\bar r_i= \frac {\sum_p r_{ip}}{\sum p}

因此,我们有
\bar r_{Alice}=3.5\newline  \bar r_{U1}=2.25\newline \bar r_{U2}=3.5\newline \bar r_{U3}=3

并计算新的评级为,
r_{ip}'=r_{ip}-\bar r_i

因此,我们得到以下矩阵,

NameInshorts(I1)HT(I2)NYT(I3)TOI(I4)
Alice1.50.5-2.50.5
U10.75-1.25-0.250.75
U20.5-0.50.5-0.5
U300-22

现在,我们计算 Alice 和所有其他用户之间的相似度。

Sim(Alice,U1)=\frac {((1.5*0.75)+(0.5*-1.25)+(-2.5*-0.25)+(.5*0.75))}{\sqrt{(1.5^2+0.5^2+2.5^2+0.5^2)} \sqrt{(0.75^2+1.25^2+0.25^2+0.75^2)}}=0.301\newline

Sim(Alice,U2)=\frac {((1.5*0.25)+(0.5*-0.5)+(-2.5*0.5)+(.5*-0.5))}{\sqrt{(1.5^2+0.5^2+2.5^2+0.5^2)} \sqrt{(0.5^2+0.5^2+0.5^2+0.5^2)}}=-0.33\newline

Sim(Alice,U3)=\frac {((1.5*0)+(0.5*0)+(-2.5*-2)+(.5*2))}{\sqrt{(1.5^2+0.5^2+2.5^2+0.5^2)} \sqrt{(0^2+0^2+2^2+2^2)}}=0.707\newline

第 2 步:预测未被 Alice 评级的应用的评级

现在,我们预测 Alice 对 BBC News App 的评分,

r_{(Alice,I5)}=\bar r_{Alice}+ \frac {(sim(Alice,U1)*(r_{U1,I5}-\bar r_{U1}))+(sim(Alice,U2)*(r_{U2,I5}-\bar r_{U2}))+(sim(Alice,U3)*(r_{U3,I5}-\bar r_{U3})}{|r_{U1,I5}|+|r_{U2,I5}|+|r_{U3,I5}|}\newline \newline

r_{(Alice,I5)}=3.5 + \frac {(0.301*0.75)+(-0.33*1.5)+(0.707*1)}{|0.301|+|-0.33|+|0.707|}=3.83\newline

因此,在一个小例子的帮助下,我们试图了解基于用户的协同过滤的工作原理。