1.一种交叉协同过滤推荐方法,其特征在于,包括以下步骤:
步骤1,收集用户的评分数据,得到用户‑电影评分矩阵S;
其中,矩阵的每个元素spi原始评分数据,表示用户p对电影i的评分,用户没有评分过的电影分值为0,用户下标p=1,2,…,m,电影下标i=1,2,…,n,m为用户的个数,n为电影的个数;
步骤2,选用min‑max数据归一化方法对用户评分数据归一化,使得用户的评分数值在设定区间之内,进而得到归一化用户评分,min‑max数据归一化公式如下:其中,minA为用户评分数据集A中最小的数据,maxA为用户评分数据集A中最大的数据,newmax为设定区间的上界,newmin为设定区间的下界,spi为原始评分数据,npi为归一化后的评分数据;
步骤3,按照步骤2对用户集合中每位用户的评分数据进行相同的处理,最终得到归一化用户评分矩阵N如下:其中,矩阵的每个元素npi为归一化后的评分数据,表示用户p对电影i的归一化评分;
步骤4,设定电影Itemi与电影集合中其他电影Itemj间具有的共同用户评分计数与电影Itemi的用户评分计数的比值阈值Threshold_item作为是否进一步计算电影间相似度的标准;
其中,电影集合中除电影Itemi以外的其他电影的下标j=1,2,3,...,n;
步骤5,在电影集合中选取一个电影Itemi,并计算该电影与电影集合中另一个电影Itemj具有的共同用户评分计数与电影Itemi的用户评分计数的比值Ratio_itemij;Ratio_itemij计算公式如下:其中,Card(Uij)表示对电影i,j都评分过的用户的个数,Card(Ui)表示对电影i评分过的用户的个数;
步骤6,若步骤5中的Ratio_itemij大于设定的阈值Threshold_item,则利用皮尔逊相关系数公式并结合共同评分比值Ratio_itemij进一步计算步骤5中电影Itemi与电影集合中另一个电影Itemj间的带权评分相似度Sim_itemij,若小于阈值Threshold_item则不进行相似度计算;带权评分相似度计算公式如下:其中,Uij表示对电影i,j都评分过的用户集合,用户x属于集合Uij,nx,i表示用户x对电影i的归一化评分, 和 分别表示所有用户对电影i,j的归一化平均评分;
步骤7,按照步骤5、步骤6计算步骤5中电影Itemi与电影集合中其他的每个电影间的带权评分相似度,并按照带权评分相似度的大小进行排序,得到电影Itemi与其他电影的序列化相似度字典Sim_dicti;
步骤8,按照步骤5、步骤6、步骤7对电影集合中的每个电影进行相同的处理,最终得出每个电影与其他电影的序列化相似度字典;由于Sim_itemij=Sim_itemji,所以对于已经计算过的两电影之间的带权评分相似度可直接拷贝相应的数据,规定电影与自己的带权评分相似度为0;
步骤9,设定电影的评分预测参考电影个数K,其中K的取值范围是0到n;
步骤10,在电影集合中选取一个电影Itemi,并在其序列化相似度字典Sim_dicti中取带权评分相似度大小前K个电影作为该电影的评分预测参考电影集合NNi;
步骤11,计算步骤10中电影Itemi与其K个评分预测参考电影的评分偏差Score_deviationik;
其中,评分预测参考电影集合下标k=1,2,3,...,K,χ为训练数据集,Si,k(χ)为训练数据集中共同评分过电影i,k的用户集,用户y属于集合Si,k(χ),Card(Si,k(χ))表示共同评分过电影i,k的用户集Si,k(χ)中的用户个数,ny,i表示用户y对电影i的归一化评分;
步骤12,利用现有的基于模型的协同过滤算法‑Slope One算法,计算步骤10中电影Itemi未评分用户的加权预测评分Predict_score_itemli;
其中,电影Itemi未评分用户下标l=1,2,3,...,Card(Itemi),Card(Itemi)为电影Itemi未评分用户的数量,Ri为电影i的评分预测参考电影集合NNi中同时与电影i一起被评分过的电影集合;
步骤13,按照步骤12对步骤10中电影Itemi的所有未评分用户的评分进行预测评分;
步骤14,按照步骤10、步骤11、步骤12、步骤13对电影集合中的每个电影进行相同的处理,最终得出每个电影的未评分用户的加权预测评分,从而实现对用户‑电影评分矩阵的数据填充;
步骤15,在用户集合选取一个用户Userp,通过该用户评分的电影并结合电影信息表中的属性,匹配得到目标用户所评分的每个电影的属性列表Attributepi如下;
其中, 表示用户p评分的第i个电影的第f个属性,且对于电影具有的属性的初始值为
1,不具有的属性初始值为0,属性下标f=1,2,…,F,F表示电影属性个数;
步骤16,对步骤15中的用户Userp所评分的每个电影,并结合该用户对每个电影的归一化评分以及对应的电影属性得到该用户的加权属性评分向量Attribute_scorep,由于用户所评分的不同电影中存在属性相同的情况,故采用平均加权兴趣向量Avg_attribute_scorep来描述该用户的综合兴趣爱好,Avg_attribute_scorep表示为:其中, 表示用户p对属性f的平均加权评分;
加权兴趣向量公式为:
Attribute_scorep=npi*Attributepi
平均加权兴趣向量每个分量的计算公式为:
其中, 表示用户p所评分的所有电影中相同属性 的计数;
步骤17,按照步骤15、步骤16对用户集合中的每位用户进行相同的处理,最终得出每位用户的平均加权兴趣向量;
步骤18,设定用户Userp与用户集合中其他用户Userq间具有的共同电影评分计数与用户Userp的电影评分计数的比值阈值Threshold_user作为是否进一步计算用户间相似度的标准;其中,用户集合中除用户Userp以外的其他用户的下标q=1,2,3,...,m;
步骤19,在用户集合中选取一个用户Userp,并计算该用户与用户集合中另一个用户Userq具有共同电影评分计数与用户Userp的电影评分计数的比值Ratio_userpq;Ratio_userpq的计算公式如下:其中,Card(Ipq)表示用户p,q共同评分过的电影集合中电影的个数,Card(Ip)表示用户p评分过的电影集合中电影的个数;
步骤20,在经过Slope One算法进行数据填充过后的用户‑电影评分矩阵基础上,若步骤19中的Ratio_userpq大于设定的阈值Threshold_user,则进一步计算步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq和平均加权兴趣相似度Sim_user_attributepq,若小于阈值则不进行相似度计算;计算评分相似度使用皮尔逊相关系数,皮尔逊相关系数公式如下:其中,Ipq表示用户p,q共同评分的电影集合,电影z属于集合Ipq,np,z表示用户p对电影z的归一化评分, 和 分别表示用户p,q对电影z的归一化平均评分;
计算用户间的平均加权兴趣相似度使用余弦相似度,余弦相似度公式如下:
其中 分别表示用户p,q的平均加权兴趣向量;
步骤21,结合步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq与属性相似度Sim_user_attributepq计算用户间的综合相似度Simpq;
Simpq=ASim_user_scorepq+(1‑λ)Sim_user_attributepq其中λ为评分权重因子;
步骤22,按照步骤19、步骤20、步骤21计算步骤19中用户Userp与用户集合中其他的每个用户间的综合相似度;
步骤23,按照步骤19、步骤20、步骤21、步骤22对用户集中的每位用户进行相同的处理,计算得出每位用户的邻居用户集以及与每位邻居对应的综合相似度;
步骤24,以综合相似度为标准对每位用户的邻居集合进行排序,最终得到每位用户的序列化邻居集合;
步骤25,设定目标用户电影推荐的参照邻居用户数N以及目标用户的推荐电影个数R;
其中参照邻居用户数N的取值范围是0到m,目标用户的推荐电影个数R的取值范围是0到n;
步骤26,在目标用户集合中选取一个用户Target_usert并查看该目标用户的序列化邻居集合,取前N个用户构成该目标用户的参照邻居用户集NNt并作为计算目标用户未评分电影的预测评分依据;其中,目标用户集合是用户集合的一个子集,目标用户下标t=1,2,
3,...,T;
步骤27,在归一化后的用户‑电影评分矩阵基础上,依据现有的基于用户的协同过滤推荐算法,计算步骤26中目标用户Target_usert未评分电影的预测评分Pt,i;
其中,参照用户u属于邻居用户集合NNt,Simtu目标用户Target_usert与邻居用户u的综合相似度,nu,i为邻居用户u对电影i的归一化评分, 分别为目标用户Target_usert和邻居用户u所评分电影的归一化平均评分;
步骤28,按照步骤26、步骤27对步骤26中目标用户所有未评分电影进行相同的处理,得出步骤26中目标用户Target_usert未评分电影的预测评分;
步骤29,按照步骤26、步骤27、步骤28对目标用户集中每个目标用户进行相同的处理,得出每个目标用户未评分电影的预测评分;
步骤30,对目标用户集中每位用户的预测评分电影按照预测评分数据的大小排序,得到每位目标用户的序列化预测评分电影集合;
步骤31,在目标用户集中选取一个用户Target_usert,查看该用户的序列化预测评分电影集合并取出预测评分大小前R个电影作为该目标用户的电影推荐列表Recommend_itemt;
步骤32,按照步骤31,对目标用户集中每位用户进行相同的处理,最终得出每位目标用户的电影推荐列表。