龙空技术网

推荐算法之SlopeOne算法

Java个人学习心得 206

前言:

现时朋友们对“平分算法java”大约比较看重,咱们都想要学习一些“平分算法java”的相关资讯。那么小编同时在网络上汇集了一些关于“平分算法java””的相关内容,希望各位老铁们能喜欢,兄弟们快快来学习一下吧!

SlopeOne推荐算法也是基于物品协同过滤算法,但与之前说的ItemCF不同的是,ItemCF计算物品间的相似度,而SlopeOne则是基于不同物品间的评分差来预测用户对物品的评分。

算法简单,易于实现,准确性相对较高,且有效地适应数据的稀疏性。

设用户对物品的评分如下:

步骤1:

计算两个都被评过分物品的评分差的均值。

设:

物品i,j。

N(i)、N(j)分别代表对i,j评过分的用户集。

N(i)∩N(j)代表对i,j都评过分的用户集。

|N(i)∩N(j)|代表对i,j都评过分的用户数量。

u∈N(i)∩N(j)代表用户u对i,j都评过分。

r(u,i)、r(u,j)代表u对i,j的评分。

R(i,j)代表i,j评分差均值。

公式如下:

步骤2:

根据物品间的评分差均值,以及用户对其他物品的真实评分,来预测用户对未评分物品的评分。

设:

N(u)为用户u评过分的物品集。

i∈N(u)为用户u对物品i评过分。

P(u,j)为用户u对物品j的预测评分。

公式如下:

步骤3:

根据预测评分,选取分高的物品推荐。

举例:

设有如下用户与物品的评分:

求用户U3对物品c、d的评分x,y

如图可得,U3对a、b的评分

R(a)=2,R(b)=1。

计算物品间评分差均值:

R(a,b)=[(5-4)+(3-2)+(2-1)]/3=1R(a,c)=[(5-4)+(3-2)]/2=1R(a,d)=2R(b,c)=0R(b,d)=1R(c,d)=1

计算用户U3对c的预测分:

U3给a、b评过分,同时给a、c评过分的人数为2,同时给a、d评过分的人数为2。

P(u3,c)=[2*(R(a)-R(a,c))+2*(R(b-R(b,c)))]/(2+2)=[2(2-1)+2(1-0)]/4=1

计算用户U3对d的评测分:

P(u3,d)=0

U3对c的预测评分x=1,对d的预测评分y=0。

标签: #平分算法java