本代码是论文《solving the apparent diversity-accuracy dilemma of recommender systems》的R语言模拟算法
针对论文中的图1
# user-object matrix
v=c(1,0,0,1,0,
1,1,1,1,0,
1,0,1,0,0,
0,0,1,0,1)
user=4
ob=5
am=matrix(v,nrow=4,ncol=5,byrow=T)
rows=rowSums(am);
cols=colSums(am);
# 初始化权重矩阵
W=matrix(0,nrow=5,ncol=5,byrow=T)
# 计算权重矩阵
for(a in 1:user)
for(b in 1:ob)
{
sum=0
for(j in 1:4)
{
sum=sum+ am[j,a]*am[j,b]/rows[j]
}
W[a,b]=1/cols[b]*sum
}
v=c(1,0,0,1,0) #第一个用户的点击向量
v0=W%*%v #probS的结果
v1=t(W)%*%v # heatS的结果