1.一种融合社交信任影响力的协同过滤推荐算法,其特征在于,包括:步骤1,对用户对项目的评分矩阵数据进行预处理,填充删除不必要的数据,根据用户的评分来计算用户之间的相似度;
步骤2,计算出用户的邻居用户集合;
步骤3,根据用户对项目的评分矩阵数据计算出用户j对用户i的正确推荐个数、用户之间的局部信任度、每个用户的全局信任度;
步骤4,将局部信任度和全局信任度进行整合,计算出用户的隐式信任度;
步骤5,对用户之间信任矩阵数据进行预处理,根据用户之间信任矩阵进行信任关系传播,计算出用户的显示信任度;
步骤6,将显示信任度与隐式信任度进行整合,计算出用户的综合信任度;
步骤7,对用户对项目的评分矩阵数据,使用皮尔逊相关系数方法,计算出项目相似度;
步骤8,根据项目相似度,计算出项目的相似项目集合;
步骤9,用户的综合信任度和项目相似度共同修正矩阵分解中的用户矩阵与项目矩阵,将用户信任关系与项目相似关系融入到概率矩阵分解模型中来,通过贝叶斯推导公式得到用户特征矩阵和项目特征矩阵的联合后验分布,得到最终的损失函数,通过梯度下降的方法训练用户特征矩阵和项目特征矩阵;
步骤10,计算出用户的预测评分,通过推荐系统的评价指标MAE和RMSE来计算推荐的准确性。
2.根据权利要求1所述的融合社交信任影响力的协同过滤推荐算法,其特征在于,所述步骤1具体包括:用户之间的相似度计算,采用皮尔逊相关系数计算,具体计算公式如下所示:其中,Sik表示用户i与用户j的相似度,I(i)与I(k)分别表示用户i与用户k的项目评分集合,j属于用户i和用户k都评分的项目的子集,Rij是用户i给项目j的评分, 表示用户i的平均评分,Rkj是用户k给项目j的评分, 表示用户k的平均评分,用户之间的相似度Sik的值范围为[-1,1],使用映射函数f(x)=(x+1)/2将PCC相似性的范围限定为[0,1]:
3.根据权利要求2所述的融合社交信任影响力的协同过滤推荐算法,其特征在于,所述步骤2具体包括:计算用户的邻居用户,设定用户ui与所有候选用户uk∈C(ui)的相似度均值 为用户ui选取邻居用户的临界值,计算公式如下:其中,C(ui)表示与用户ui有共同评分项目的用户,当用户uk与用户ui的相似度Sik超过临界值,即 时,则用户uk为用户ui的邻居,构成用户邻居集合U(i)。
4.根据权利要求3所述的融合社交信任影响力的协同过滤推荐算法,其特征在于,所述步骤3具体包括:根据用户对项目的评分矩阵数据计算出用户j对用户i的正确推荐个数Correct(i,j),计算公式如下:其中,Correct(i,j)表示用户j对用户i的正确推荐个数,I(i)与I(k)分别表示用户i与用户k的项目评分集合,s属于用户i和用户k都评分的项目的子集,Yi,j,s表示用户j推测出来的用户i对项目s的评分,Ri表示用户i的评分的平均值,Rj(s)表示用户j对项目s的实际评分,Rj表示用户j的平均评分,Sij表示用户i和用户j二者的相似度,Ri(s)表示用户i对项目s的实际评分,e代表系统自行设定的误差,当|Yi,j,s-Ri(s)|小于e时值为1,否则为0;
根据用户对项目的评分矩阵数据计算出用户i与用户j之间的局部信任度T1(i,j),局部信任度计算如下:其中,Total(i,j)表示用户i和j共同评分项目的个数,Correct(i,j)表示用户j对用户i做出正确推荐的个数,T1(i,j)表示用户i与用户j之间的局部信任度;
计算用户的全局信任度,在系统中经常活跃的用户信任值应该要高于不活跃用户的可信度,用户的全局信任度计算如下:其中,T2(i)表示用户i的全局信任度,fi代表用户i在评分数据中评价的总次数,qi代表用户i成为其他用户邻居的次数。
5.根据权利要求4所述的融合社交信任影响力的协同过滤推荐算法,其特征在于,所述步骤4具体包括:计算用户的隐式信任度,用户i对用户j的隐式信任度包含二者的局部信任度和全局信任度,因此得出隐式信任度计算如下:其中,rtij表示用户i对用户j的隐式信任度,T1(i,j)代表用户i对用户j的局部信任度,T2(j)代表用户j的全局信任度。
6.根据权利要求5所述的融合社交信任影响力的协同过滤推荐算法,其特征在于,所述步骤5和所述步骤6具体包括:对用户之间信任矩阵进行显示信任度计算,初始化用户之间信任度构成社交信任矩阵,在信任网络中,用户与用户之间的信任程度分以下四种情况进行确定:若用户ui和用户uj有直接连接关系,则二者之间的连接权重即为其显示信任度,计算公式如下所示:stij=tij (9)
其中,Stij表示用户ui和用户uj的显示信任度,tij表示用户ui和用户uj的连接权重;
若用户ui和用户uj之间有且仅有一条二级路径,则显示信任度计算如下所示:stij=tik*tkj (10)
其中,stij表示用户ui和用户uj的显示信任度,tik表示用户ui和用户uk的连接权重,tkj表示用户uk和用户uj的连接权重;
若用户ui和用户uj之间存在多条可达的二级路径,路径集合表示为取所有信任路径的最大值,则显示信任度计算如下:stij=max(tik*tkj) (11)
其中,stij表示用户ui和用户uj的显示信任度,tik表示用户ui和用户uk的连接权重;
若用户uj既不是用户ui的一级信任用户也不是二级信任用户,则用户ui对用户uj的显示信任度为0,则显示信任度计算如下:stij=0 (12)
其中,stij表示用户i对用户j的显示信任度;
对用户的综合信任度进行计算,通过采用线性加和的方式将隐式信任度和显示信任度进行融合,得到用户的综合信任度,用户的综合信任度计算公式如下:其中,Sik表示用户i对用户k的综合信任度,rtik表示用户i对用户j的隐式信任度,参数n为用户uk和用户ui的共同评分项目个数,参数nmin和参数nmax分别为系统设定的用户共同评分项目数量的最小值和最大值,n/nmax表示评分信任度对推荐权重的影响程度,&&表示并且关系。
7.根据权利要求6所述的融合社交信任影响力的协同过滤推荐算法,其特征在于,所述步骤7具体包括:根据用户对项目评分矩阵计算项目间的相似度,采用皮尔逊相关系数计算,具体计算公式如下所示:其中,Wij表示项目i与项目j的相似度,Rui和Ruj分别表示用户u对项目i和项目j的评分,Uij代表同时对项目i和项目j评分的用户集合, 表示用户u的平均评分,项目相似度Wij的范围为[-1,1],较大的值表示项目i和项目j更相似,为了将其值映射到[0,1]区间上,对式(14)进行归一化处理:其中,W'ij表示Wij归一化处理后的结果,为了准确的描述相似关系,在项目相似度中引入一个权重系数β:W”ij=β*W'ij (16)
其中,W”ij表示W'ij引入权重系数β的结果,β的定义如下:其中,n为两个项目共同评分的用户数量,ε为系统定义的共同评分人数阈值,当用户之间没有共同评分项目时,可以直接忽略项目相似度的影响。
8.根据权利要求7所述的融合社交信任影响力的协同过滤推荐算法,其特征在于,所述步骤8具体包括:计算项目的相似项目集合,设定项目vi与所有候选项目vk∈C(vi)的相似均值 为项目vi选取相似项目的临界值,计算公式如下:其中,C(vi)表示对项目vi有评分数据的用户,当项目vk与项目vi的相似度Wik超过临界值,即 时,则vk为项目vi的相似项目,构成相似项目集合I(i)。
9.根据权利要求8所述的融合社交信任影响力的协同过滤推荐算法,其特征在于,所述步骤9具体包括:计算修正的用户与项目的潜在特征矩阵,用户的综合信任度与项目相似度修正矩阵分解中的用户矩阵与项目矩阵,将用户信任关系与项目相似关系融入到概率矩阵分解模型中来,用信任邻居与相似项目集合共同修正用户的特征矩阵;
假设在推荐系统中用户和项目的数量分别为M和N,用户集合表示为U={u1,u2,…uM};
项目集合表示为V={i1,i2,…iN},评分矩阵为R=(Rij)M×N,Rij表示用户i对项目j的评分,UM*K N*K和V 分别表示的是用户和项目的潜在特征矩阵,其中,M表示用户的数量,N表示项目的数量,K为特征维度;
PMF算法假设用户特征矩阵、项目特征矩阵都服从均值为0的高斯分布,则有:其中,U表示用户特征矩阵,V表示项目特征矩阵,N(x|u,σ2)所表示的是x服从均值为u,方差为σ2的高斯分布,I为指示矩阵,如果用户u对项目i进行了评分,Iij取值为1,否则取值为0,为使用户的评分限制在0-1之间,使用Logistic函数用g(x)=1/(1+exp(-X))是来限定预测值 的取值在范围[0,1]内;
PMF算法认为用户对项目的评分是一系列概率组合问题,评分数据的条件概率定义公式如下所示:通过贝叶斯公式推导化简得到用户特征矩阵和项目特征矩阵的联合后验概率公式,即损失函数如下所示:其中,J是损失函数,惩罚项系数
是Frobebius范数, 表示U中元素的平方和再开方,Iij是一个指标函数,当用户u对项目j进行了评级,则Iij=1,否则Iij=0,Rij是用户i对项目j的实际评分,Ui是用户i的特征矩阵,Uk是用户k的特征矩阵,Vj是项目j的特征矩阵,Vk是项目k的特征矩阵,Sik表示用户i和用户k之间的综合信任度,U(i)是用户i的邻居用户集,Wjk表示项目j和项目k之间的相似度,I(j)是项目j的相似项目集;
使用梯度下降的方法来训练用户特征矩阵和项目特征矩阵,可以找到方程给出的函数的局部最小值,对应的偏导数有:其中, 表示损失函数J对用户i的特征向量Ui的偏导数, 表示损失函数J对项目j的特征向量Vj的偏导数。
10.根据权利要求9所述的融合社交信任影响力的协同过滤推荐算法,其特征在于,所述步骤10具体包括:计算用户的预测评分:
其中, 是用户i对项目j的预测评分,Ui是用户i的特征矩阵,Vj是项目j的特征矩阵,表示对Ui的转置。