1.一种信息推荐方法,其特征在于,包括:
接收到访问请求时,提取与所述访问请求相对应的当前用户的特征信息,根据所述特征信息确定所述当前用户是否为新用户;
确定所述当前用户为新用户时,根据所述当前用户的历史访问记录,按照点击率排名向所述当前用户进行热点推荐;
确定所述当前用户为老用户时,对预先存储的用户信息及项目信息进行聚类,生成用户聚类;在所述用户聚类中,生成基于项目内容的第一推荐列表,还生成基于用户-项目网络的协同过滤的第二推荐列表;根据所述第一推荐列表及所述第二推荐列表生成混合推荐列表;根据所述混合推荐列表向当前用户进行信息推荐;
所述对预先存储的用户信息及项目信息进行聚类,生成用户聚类,包括:根据预先存储的用户信息及项目信息,构建用户偏好向量;基于Hadoop技术,采用MapReduce编程模型下的K-Means算法对构建的所有所述用户偏好向量进行聚类操作,生成用户聚类;
所述根据预先存储的用户信息及项目信息,构建用户偏好向量,包括:所述项目信息对应设置有项目类别标签,根据所述项目类别标签确定所述用户偏好向量的分量及维度;其中,所述用户偏好向量的数学表达式为: 所述用户偏
好向量的分量的前部为项目类别标签,后部为分量权重;所述用户偏好向量的维度k由项目类别数目确定;采用TF-IDF算法确定所述用户偏好向量的分量权重。
2.根据权利要求1所述的方法,其特征在于,所述根据所述特征信息确定所述当前用户是否为新用户,包括:
所述特征信息为发出所述访问请求的当前用户的已参与项目数目;
将提取的所述已参与项目数目与预设的项目数目阈值进行比较,若所述已参与项目数目不大于所述项目数目阈值,则确定所述当前用户为新用户,否则确定所述当前用户为老用户。
3.根据权利要求1所述的方法,其特征在于,所述采用TF-IDF算法确定所述用户偏好向量的分量权重,包括:
存储的所有所述项目信息组成项目集,所述项目集中的项目信息的项目数目记为N;
所述项目集中设置有项目类别标签ti的项目信息的项目数目为ni;
所述项目集中,将项目类别标签ti在任意用户u已参与项目信息中出现的次数记为fiu;
则,项目类别标签ti在所述用户u已参与项目集中出现的词频为
其中,maxzfzu是指所述用户u已参与项目集中项目类别标签出现的最大次数;
项目类别标签ti在所述项目集中出现的逆频为
根据所述项目类别标签ti在所述用户u已参与项目集中出现的词频及在所述项目集中出现的逆频,确定项目类别标签ti在与用户u相关的用户偏好向量中的分量权重为:
4.根据权利要求1所述的方法,其特征在于,所述基于Hadoop技术,采用MapReduce编程模型下的K-Means算法对构建的所有所述用户偏好向量进行聚类操作,生成用户聚类,包括:
所有所述用户偏好向量组成用户偏好向量集合;
从所述用户偏好向量集合中随机选取K个用户偏好向量分别作为K个类的初始中心;
利用Split过程按预设规则对所述用户偏好向量集合中的所有用户偏好向量进行分组;
利用Map过程,按照所述Split过程分组的结果,计算所述用户偏好向量集合中每个所述用户偏好向量分别到K个所述初始中心的中心距离,并根据最短中心距离原则,形成K个聚类,同时确定K个所述聚类的用户中心;
利用Shuffle过程,对K个所述聚类进行洗牌归类;
利用Reduce过程,重新计算所述洗牌归类后的K个聚类的聚类中心;
将重新计算得到的所述聚类中心分别对应地与所述用户中心进行比较;
若重新计算得到的所述聚类中心分别对应地与所述用户中心相等,则完成聚类操作,输出聚类结果;否则,按预设规则重新计算聚类用户中心,直至聚类用户中心稳定。
5.根据权利要求1所述的方法,其特征在于,所述在所述用户聚类中,生成基于项目内容的第一推荐列表,包括:
在当前用户所属的用户聚类中,构建项目属性向量;
其中,所述项目属性向量的数学表达式为:
所述项目属性向量的分量的前部为项目信息的项目类别标签,后部为分量权重;所述项目属性向量的维度k由项目类别数目确定;所述项目属性向量的分量的权重中的i取值为
1或0;
计算当前用户的用户偏好向量与所述项目属性向量间的相似度;
根据所述相似度的计算结果,选取当前用户的用户偏好向量相似度值满足预设阈值的多个项目作为当前用户的第一推荐列表。
6.根据权利要求1所述的方法,其特征在于,在所述用户聚类中,还生成基于用户-项目网络的协同过滤的第二推荐列表,包括:
在所述用户聚类中,构建项目网络;
基于所述项目网络构建用户网络;
在所述用户网络中,按预设规则确定当前用户的最近邻居集;
根据所述当前用户的已参与项目信息集合及所述最近邻居集的已参与项目信息集合,形成候选推荐项目集合;
计算所述候选推荐项目集合中的项目信息对于当前用户的推荐度;
根据所述推荐度的计算结果,从所述候选推荐项目集合中选取项目信息形成第二推荐列表。
7.根据权利要求6所述的方法,其特征在于,所述在所述用户聚类中,构建项目网络,包括:
在所述用户聚类中,所有项目信息形成项目集I,根据任意两个项目信息之间的边权值,确定边集E;
其中,所述边权值的数学表达式为:
Ui表示已参与项目i的用户信息的集合,Uj表示已参与项目j的用户信息的集合;
根据所述项目集I及所述边集E,构建初步项目网络;
将所述初步项目网络中,任意两个项目间边权值小于预设的边权阈值的边去掉,形成项目网络G=(I,E)。
8.根据权利要求7所述的方法,其特征在于,所述基于所述项目网络构建用户网络,包括:
构建用户网络u=(Iu,Eu);
其中,Iu为任意用户u已参与项目的项目信息集合,Eu={(i,j)|(i,j)∈E且i,j∈Iu}为任意用户u已参与的任意两个项目之间的边集,所述E指所述项目网络中的边集E。
9.根据权利要求8所述的方法,其特征在于,所述在所述用户网络中,按预设规则确定当前用户的最近邻居集,包括:
根据预设的同一项目对关系计算当前用户与任意用户u之间的Jaccard相似性,其中当前用户记为用户a,计算公式为:
根据预设的相似项目对关系,计算用户a和任意用户u之间的相似项目相似性,计算公式为:
根据预设的相关项目对关系,计算用户a和任意用户u之间的相关项目相似性,计算公式为:
根据所述Jaccard相似性、所述相似项目相似性及所述相关项目相似性的计算结果,确定用户a和任意用户u之间的相似度量值,所述相似度量值的计算公式为:
sim(a,u)=αsim1(a,u)+βsim2(a,u)+γsim3(a,u),其中α+β+γ=1;
根据所述相似度量值的计算确定当前用户的最近邻居集。
10.根据权利要求9所述的方法,其特征在于,所述根据所述Jaccard相似性、所述相似项目相似性及所述相关项目相似性的计算结果,确定用户a和任意用户u之间的相似度量值,包括:
在所述用户聚类中,除构建项目网络外,还构建用户-项目兴趣度矩阵;
利用所述用户-项目兴趣度矩阵实现所述sim1(a,u)、sim2(a,u)及sim3(a,u);
利用矩阵实现的所述sim1(a,u)、sim2(a,u)及sim3(a,u)确定用户a和任意用户u之间的相似度量值。
11.根据权利要求9所述的方法,其特征在于,所述同一项目对关系、相似项目对关系、相关项目对关系分别为:
设任意两个用户a和用户u,Iu为用户u已参与项目的项目信息集合,Ia为用户a已参与项目的项目信息集合,i及j分别表示任意项目i及任意项目j;
若i∈Ia,j∈Iu,i,j∈Ia∩Iu,则称i,j为同一项目对;
若i∈Ia/Iu,j∈Iu/Ia,(i,j)∈E,称i,j为用户a和u之间的相似项目对;
若 且w(i,j)>θ,称i,j为用户a和用户u之间的相关项目对,其中
且N(Iu)={(k,t)|w(k,t)≤0.01,且k,t∈Iu},|N
(Iu)|表示集合N(Iu)的元素个数。
一种信息推荐方法\n技术领域\n[0001] 本发明涉及信息技术领域,具体而言,涉及一种信息推荐方法。\n背景技术\n[0002] 随着信息技术的发展,用户可方便快捷地接触到大量信息。但,海量信息及海量用户的同时出现,一方面令用户难以从海量数据信息中发现自己的目标数据,同时也造成大量信息的无人问津,使得信息利用率低;另一方面,用户访问量的增加造成原始日志文件的增加。为了有针对性的向用户提供其所需要的信息,进而出现了用于向用户推荐相关信息的推荐系统及推荐方法。具体地,推荐系统,就是通过建立用户与信息产品之间的二元关系,利用已有的选择过程或相似性关系挖掘每个用户潜在的感兴趣的对象,进而进行个性化推荐,其本质就是信息过滤。\n[0003] 相关技术中的信息推荐方法的推荐形式主要有两种,一种是基于内容的推荐,另一种是基于协同过滤算法的推荐。但,现有的该两种推荐方法均存在着一定局限性。\n[0004] 例如,基于协同过滤算法的推荐方法需通过计算用户或是项目的相似度以识别“最近邻居”,在大数据情况下,计算量的增加直接影响信息推荐的实时性和精确度。而基于内容的推荐则过分依赖信息的特征,使得实现后的推荐不能够很好的表达信息的关联性,进而导致不能够为用户进行有效的信息推荐。\n发明内容\n[0005] 本发明的目的在于提供一种信息推荐方法,以解决上述的问题。\n[0006] 在本发明的实施例中提供了一种信息推荐方法,包括:\n[0007] 接收到访问请求时,提取与所述访问请求相对应的当前用户的特征信息,根据所述特征信息确定所述当前用户是否为新用户;\n[0008] 确定所述当前用户为新用户时,根据所述当前用户的历史访问记录,按照点击率排名向所述当前用户进行热点推荐;\n[0009] 确定所述当前用户为老用户时,对预先存储的用户信息及项目信息进行聚类,生成用户聚类;在所述用户聚类中,生成基于项目内容的第一推荐列表,还生成基于用户-项目网络的协同过滤的第二推荐列表;根据所述第一推荐列表及所述第二推荐列表生成混合推荐列表;根据所述混合推荐列表向当前用户进行信息推荐。\n[0010] 本发明上述实施例的信息推荐方法,接收到用户的访问请求,向用户进行信息推荐时,能够根据用户的特征信息将用户分为新用户及老用户,对于新用户进行热点推荐;而向老用户进行信息推荐时,会将系统中存储的大量数据进行聚类,如此能够将海量用户降维成有限的几个聚类,在形成的用户聚类中对用户形成推荐信息,如此能够简化海量数据的计算,保证信息推荐的实时性,而且在形成的聚类中形成面向老用户的推荐信息时,能够基于项目内容生成第一推荐列表及基于用户-项目网络的协同过滤生成第二推荐列表,其中用户-项目网络是指根据用户信息及项目信息形成的信息网络。根据第一推荐列表及第二推荐列表形成混合推荐列表,通过混合推荐列表能够避免基于内容推荐的过于依赖信息特征的缺陷,而且通过混合推荐列表向用户进行信息推荐,保证推荐的信息的精确性,及推荐的信息的关联性,因此通过本发明的信息推荐方法形成的推荐信息的实时性提高,推荐信息的精确性及关联性提高,保证能够有效为用户进行信息推荐。\n附图说明\n[0011] 图1示出了本发明实施例信息推荐方法的流程图;\n[0012] 图2示出了本发明实施例中对预先存储的用户信息及项目信息进行聚类的流程图;\n[0013] 图3示出了本发明实施例中构建用户偏好向量的流程图;\n[0014] 图4示出了本发明实施例中基于Hadoop技术,采用MapReduce编程模型下的K-Means算法对构建的所有用户偏好向量进行聚类操作的流程图;\n[0015] 图5示出了本发明实施例中在用户聚类中生成基于项目内容的第一推荐列表的流程图;\n[0016] 图6示出了本发明实施例中在用户聚类中生成基于用户-项目网络的协同过滤的第二推荐列表的流程图;\n[0017] 图7示出了本发明实施例中在用户聚类中构建项目网络的流程图。\n具体实施方式\n[0018] 下面通过具体的实施例子并结合附图对本发明做进一步的详细描述。\n[0019] 本发明实施例提供一种推荐方法,如图1所示,主要处理步骤包括:\n[0020] 步骤A:接收到访问请求时,提取与所述访问请求相对应的当前用户的特征信息,根据所述特征信息确定所述当前用户是否为新用户;\n[0021] 确定所述当前用户为新用户时,执行步骤B:根据所述当前用户的历史访问记录,按照点击率排名向所述当前用户进行热点推荐;\n[0022] 确定所述当前用户为老用户时,执行步骤C:对预先存储的用户信息及项目信息进行聚类,生成用户聚类;在所述用户聚类中,生成基于项目内容的第一推荐列表,还生成基于用户-项目网络的协同过滤的第二推荐列表;根据所述第一推荐列表及所述第二推荐列表生成混合推荐列表;根据所述混合推荐列表向当前用户进行信息推荐。\n[0023] 步骤A中,所述根据所述特征信息确定所述当前用户是否为新用户,包括:\n[0024] 所述特征信息为发出所述访问请求的当前用户的已参与项目数目;将提取的所述已参与项目数目与预设的项目数目阈值进行比较,若所述已参与项目数目不大于所述项目数目阈值,则确定所述当前用户为新用户,否则确定所述当前用户为老用户。\n[0025] 步骤C中,所述对预先存储的用户信息及项目信息进行聚类,生成用户聚类,如图2所示,包括:\n[0026] 步骤C1:根据预先存储的用户信息及项目信息,构建用户偏好向量;\n[0027] 步骤C2:基于Hadoop技术,采用MapReduce编程模型下的K-Means算法对构建的所有所述用户偏好向量进行聚类操作,生成用户聚类。\n[0028] 步骤C1中所述根据预先存储的用户信息及项目信息,构建用户偏好向量,如图3所示,包括:\n[0029] 步骤C11:所述项目信息对应设置有项目类别标签,根据所述项目类别标签确定所述用户偏好向量的分量及维度;\n[0030] 其中,所述用户偏好向量的数学表达式为:\n[0031]\n[0032] 所述用户偏好向量的分量的前部为项目类别标签,后部为分量权重;所述用户偏好向量的维度k由项目类别数目确定;\n[0033] 步骤C12:采用TF-IDF算法确定所述用户偏好向量的分量权重。\n[0034] 具体地,步骤C12采用TF-IDF算法确定所述用户偏好向量的分量权重,包括:\n[0035] 存储的所有所述项目信息组成项目集,所述项目集中的项目信息的项目数目记为N;\n[0036] 所述项目集中设置有项目类别标签ti的项目信息的项目数目为ni;\n[0037] 所述项目集中,将项目类别标签ti在任意用户u已参与项目信息中出现的次数记为fiu;\n[0038] 则,项目类别标签ti在所述用户u已参与项目集中出现的词频为\n[0039]\n[0040] 其中,maxzfzu是指所述用户u已参与项目集中项目类别标签出现的最大次数;\n[0041] 项目类别标签ti在所述项目集中出现的逆频为\n[0042] 根据所述项目类别标签ti在所述用户u已参与项目集中出现的词频及在所述项目集中出现的逆频,确定项目类别标签ti在与用户u相关的用户偏好向量中的分量权重为:\n[0043]\n[0044] 步骤C2中基于Hadoop技术,采用MapReduce编程模型下的K-Means算法对构建的所有所述用户偏好向量进行聚类操作,生成用户聚类,如图4所示,包括:\n[0045] 步骤C21:所有所述用户偏好向量组成用户偏好向量集合;\n[0046] 其中,用户偏好向量集合表达式为{P1,P2,...,Pn}\n[0047] 步骤C22:从所述用户偏好向量集合中随机选取K个用户偏好向量分别作为K个类的初始中心,该K个初始中心分别记为C1,C2,...CK;\n[0048] 步骤C23:利用Split过程按预设规则对所述用户偏好向量集合中的所有用户偏好向量进行分组;\n[0049] 步骤C24:利用Map过程,按照所述Split过程分组的结果,计算所述用户偏好向量集合中每个所述用户偏好向量分别到K个所述初始中心的中心距离,并根据最短中心距离原则,形成K个聚类,同时确定K个所述聚类的用户中心;\n[0050] 其中,中心距离的计算公式为:\n[0051] (1≤i≤n,1≤j≤K);\n[0052] 根据最短中心距离原则,确定每个用户偏好向量的最短中心距离,其中最短中心距离的计算公式为Δi={||Pi-C1||,||Pi-C2||,…,||Pi-CK||}(1≤i≤n),将每个用户偏好向量归于与最短中心距离对应的聚类中。\n[0053] 步骤C25:利用Shuffle过程,对K个所述聚类进行洗牌归类;\n[0054] 步骤C26:利用Reduce过程,重新计算所述洗牌归类后的K个聚类的聚类中心:\n[0055] (1≤j≤K,1≤t≤|{Cj}|);\n[0056] 表示类Cj中第t个用户,|{Cj}|表示类Cj中用户的个数。\n[0057] 该步骤中,利用Reduce过程重新计算洗牌归类后的K个聚类的聚类中心后,进行Reduce结果输出,具体地,将重新计算得到的所述聚类中心与所述用户中心对应排列输出。\n[0058] 步骤C27:将重新计算得到的所述聚类中心分别对应地与所述用户中心进行比较;\n[0059] 步骤C28:若重新计算得到的所述聚类中心分别对应地与所述用户中心相等,则完成聚类操作,输出聚类结果;否则,按预设规则重新计算聚类用户中心,直至聚类用户中心稳定。\n[0060] 重新计算得到的所述聚类中心分别对应地与所述用户中心相等,即Λi=Ci,(1≤i≤K),输出聚类结果,最终聚类中心为O1,O2,...,OK。\n[0061] 步骤C28中,按预设规则重新计算聚类用户中心,是指重新执行步骤C24至C28,进行迭代更新,直到聚类用户中心稳定,此处稳定是指得到的聚类的中心不再移动。\n[0062] 步骤C中,在所述用户聚类中,生成基于项目内容的第一推荐列表,如图5所示,包括:\n[0063] 步骤SC11:在当前用户所属的用户聚类中,构建项目属性向量;\n[0064] 其中,所述项目属性向量的数学表达式为:\n[0065]\n[0066] 所述项目属性向量的分量的前部为项目信息的项目类别标签,后部为分量权重;\n所述项目属性向量的维度k由项目类别数目确定;所述项目属性向量的分量的权重中的i取值为1或0;\n[0067] 步骤SC12:计算当前用户的用户偏好向量与所述项目属性向量间的相似度;\n[0068] 当前用户记为用户a,用户a与任意项目d之间的相似度的计算过程为:\n[0069] 其中,\n[0070] 步骤SC13:根据所述相似度的计算结果,选取当前用户的用户偏好向量相似度值满足预设阈值的多个项目作为当前用户的第一推荐列表。\n[0071] 步骤C中,在所述用户聚类中,还生成基于用户-项目网络的协同过滤的第二推荐列表,如图6所示,包括:\n[0072] 步骤CC11:在所述用户聚类中,构建项目网络;\n[0073] 步骤CC12:基于所述项目网络构建用户网络;\n[0074] 步骤CC13:在所述用户网络中,按预设规则确定当前用户的最近邻居集;\n[0075] 其中,用户的最近邻居集用Sa表示。\n[0076] 步骤CC14:根据所述当前用户的已参与项目信息集合及所述最近邻居集的已参与项目信息集合,形成候选推荐项目集合;\n[0077] 设定当前用户a的已参与项目信息集合记为Ia,其最近邻居集的已参与项目信息集合记为D,则候选推荐项目集合为\n[0078] 步骤CC15:计算所述候选推荐项目集合中的项目信息对于当前用户的推荐度;\n[0079] 步骤CC16:根据所述推荐度的计算结果,从所述候选推荐项目集合中选取项目信息形成第二推荐列表。\n[0080] 其中,步骤CC15及CC16中,候选项目 则候选项目i对于当前用户a的推荐度为[0081]\n[0082] 其中,用户s对项目i感兴趣,则counts,i=1,否则counts,i=0。\n[0083] 步骤CC11中,在所述用户聚类中,构建项目网络,如图7所示,包括:\n[0084] 步骤CC111:在所述用户聚类中,所有项目信息形成项目集I,根据任意两个项目信息之间的边权值,确定边集E;\n[0085] 其中,所述边权值的数学表达式为:\n[0086]\n[0087] Ui表示已参与项目i的用户信息的集合,Uj表示已参与项目j的用户信息的集合;\n[0088] 步骤CC112:根据所述项目集I及所述边集E,构建初步项目网络;\n[0089] 步骤CC113:将所述初步项目网络中,任意两个项目间边权值小于预设的边权阈值的边去掉,形成项目网络G=(I,E)。\n[0090] 步骤CC12中,基于所述项目网络构建用户网络,包括:\n[0091] 构建用户网络u=(Iu,Eu);\n[0092] 其中,Iu为任意用户u已参与项目的项目信息集合,Eu={(i,j)|(i,j)∈E且i,j∈Iu}为任意用户u已参与的任意两个项目之间的边集,所述E指所述项目网络中的边集E。\n[0093] 步骤CC13中,在所述用户网络中,按预设规则确定当前用户的最近邻居集,包括:\n[0094] 步骤CC131:根据预设的同一项目对关系计算当前用户与任意用户u之间的Jaccard相似性,其中当前用户记为用户a,计算公式为:\n[0095]\n[0096] 步骤CC132:根据预设的相似项目对关系,计算用户a和任意用户u之间的相似性,计算公式为:\n[0097]\n[0098] 步骤CC133:根据预设的相关项目对关系,计算用户a和任意用户u之间的相似性,计算公式为:\n[0099]\n[0100] 步骤CC134:根据所述Jaccard相似性、所述相似项目相似性及所述相关项目相似性的计算结果,确定用户a和任意用户u之间的相似度量值,所述相似度量值的计算公式为:\n[0101] sim(a,u)=αsim1(a,u)+βsim2(a,u)+γsim3(a,u),其中α+β+γ=1;\n[0102] 步骤CC135:根据所述相似度量值的计算确定当前用户的最近邻居集。\n[0103] 本发明实施例中,按预设规则确定当前用户的最近邻居集时,会根据任意项目所属的用户网络,预先确定任意两个项目间的相似关系,其中确定出的相似关系包括:同一项目对、相似项目对、相关项目对和无关项目对。\n[0104] 具体地,同一项目对关系、相似项目对关系、相关项目对关系分别为:\n[0105] 设任意两个用户a和u,Iu为用户u已参与项目的项目信息集合,Ia为用户a已参与项目的项目信息集合,i及j分别表示任意项目i及任意项目j;\n[0106] 若i∈Ia,j∈Iu,i,j∈Ia∩Iu,称i,j为同一项目对;\n[0107] 若i∈Ia/Iu,j∈Iu/Ia,(i,j)∈E,称i,j为用户a和u之间的相似项目对;\n[0108] 若 且w(i,j)>θ,称i,j为用户a和u之间的相关项目对,其中\n且N(Iu)={(k,t)|w(k,t)≤0.01,且k,t∈Iu},|N\n(Iu)|表示集合N(Iu)的元素个数。\n[0109] 称用户a和u之间的其余项目对为无关项目对。\n[0110] 步骤CC134中,所述根据所述Jaccard相似性、所述相似项目相似性及所述相关项目相似性的计算结果,确定用户a和任意用户u之间的相似度量值,包括:\n[0111] 在所述用户聚类中,除构建项目网络外,还构建用户-项目兴趣度矩阵;\n[0112] 利用所述用户-项目兴趣度矩阵实现所述sim1(a,u)、sim2(a,u)及sim3(a,u);\n[0113] 利用矩阵实现的所述sim1(a,u)、sim2(a,u)及sim3(a,u)确定用户a和任意用户u之间的相似度量值。\n[0114] 信息推荐时,仅仅根据用户的评价并不能完整体现用户真实兴趣,进而结合用户浏览记录和购买记录等隐式数据,将其转换成评分数据,构建伪评分数据,获取用户综合兴趣度,构造用户-项目兴趣度矩阵,其中所述用户-项目兴趣度矩阵R的数学表达式为:\n[0115]\n[0116] 可以看出,用户-项目兴趣度矩阵表现形式为一个m×n的矩阵R,m表示用户数,n表示项目数目。\n[0117] 该矩阵中,rui=1或0,1≤u≤m,1≤i≤n。\n[0118] 利用所述用户-项目兴趣度矩阵实现所述sim1(a,u)、sim2(a,u)及sim3(a,u)的实现方法具体包括:\n[0119] 项目集中的任意项目i,j之间的边权值定义为\n[0120] 利用矩阵R实现边权值为:\n[0121]\n[0122] 其中,Ri=(r1i,r2i,…,rmi)T为用户-项目兴趣度矩阵R中第i列的元素构成的向量,RiT为向量Ri的转置。\n[0123] sim1(a,u)的矩阵实现为:\n[0124]\n[0125] 其中,Ru=(ru1,ru2,…,run)为用户-项目矩阵R中第u行的元素构成的向量,表示用户u兴趣项目的向量。\n[0126] sim2(a,u)的矩阵实现包括:\n[0127]\n[0128] 矩阵实现为:\n[0129] 取矩阵RuT·Ra对角线元素组成向量A=(A1,A2,…An),(1≤i≤n),Ai=1表示用户a和用户u共同对项目i感兴趣,Ai=0表示用户a和用户u至少有一个对项目i不感兴趣。\n[0130] 则,\n[0131] |Ia/Iu|=||Ra-A||2\n[0132] |Iu/Ia|=||Ru-A||2\n[0133] 其中,||Ru||2如步骤C24所定义。\n[0134] |{(i,j)|(i,j)∈E,i∈Ia/Iu,j∈Iu/Ia}|\n[0135] =(Ra-A)·L·(Ru-A)T\n[0136] 其中, 为项目-项目矩阵,lij=1表示项目i与项目j\n项目之间有边,即(i,j)∈E,lij=0表示 1≤i,j≤n。\n[0137] 于是,\n[0138]\n[0139] sim3(a,u)的矩阵实现:\n[0140] 根据相关项目相似定义,计算用户a和u之间的相似性,有\n[0141]\n[0142] 其中,\n[0143]\n[0144] N(Iu)={(k,t)|w(k,t)≤0.01,且k,t∈Iu}\n[0145] 矩阵实现为:\n[0146] 其中\n[0147] 再由边权值的矩阵实现可知\n[0148] 由此可知θ可由矩阵形式实现。\n[0149] 定义矩阵\n[0150]\n[0151] li,j′=1表示项目i与项目j之间满足: 且i∈Ia/Iu,j∈Iu/Ia;\nli,j′=0表示w(i,j)≤θ,,且i∈Ia/Iu,j∈Iu/Ia。\n[0152] 于是\n[0153]\n[0154] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。