一种基于共享近邻聚类的协同过滤方法

文档序号:9217297阅读:633来源:国知局
一种基于共享近邻聚类的协同过滤方法
【技术领域】
[0001] 本发明属于数据挖掘方法技术领域,具体涉及一种基于共享近邻聚类的协同过滤 方法。
【背景技术】
[0002] 协同过滤技术早期的研宄过程中,推荐系统需要用户主动有意识提交各自明确喜 欢的项目类型等资料来了解用户的兴趣偏好才能做出推荐,而实际上,大部分人对自己的 喜好比较模糊,难以表述出来,这样就大大的阻碍了协同过滤技术的发展。经过几年后,智 能化的协同过滤算法被运用到推荐系统中,大大的弥补了这一不足,形成自动化推荐系统。
[0003] 协同过滤算法的基本思想是通过比较目标用户与其他用户在评分行为上的相似 性来做推荐,计算用户对目标用户的相似度,形成最近邻居是协同过滤算法的关键步骤。在 使用协同过滤算法进行推荐的时候需要搜寻整个用户空间来寻找目标用户的最近邻居,而 随着数据集规模的增大,用户和项目数量的增多,遍历所有用户来寻找目标用户的最近邻 居非常耗时,这使得协同过滤推荐算法的响应时间与用户数量成正比例增加,实时性和可 扩展性都受到了极大影响。

【发明内容】

[0004] 本发明的目的是提供一种基于共享近邻聚类的协同过滤方法,解决了现有技术中 存在的分类精度较低,且实时性差的问题。
[0005] 本发明所采用的技术方案是,一种基于共享近邻聚类的协同过滤方法,具体按照 以下步骤实施:
[0006] 步骤1、构建用户-项目评分矩阵R;
[0007] 步骤2、计算用户的共享近邻相似度;
[0008] 步骤3、根据每个用户的共享近邻密度进行聚类,形成用户簇C=IA,C2,…,Cn}, 并计算出用户簇代表点集合CP= {cPi,cp2,…,cpj;
[0009] 其中,cPi是用户簇Ci的代表点,i= 1,2, ? ? ?n;
[0010] 步骤4、计算目标用户u与用户簇(^的代表点cp满相似度sim(u,cp);
[0011] 步骤5、从步骤4得到的n个相似度中选出相似度较高的m个代表点,将m个代表 点所在的用户簇组成相似簇集合SC= {SCi,SC2,…,SCJ,其中,m彡n;
[0012] 步骤6、对每个相似簇SCi中的每个用户Uj,计算目标用户u与相似簇SCi中用户 Uj的相似度sim(u,u』);
[0013] 步骤7、取步骤6中相似度较高的N个用户作为目标用户u的最近邻用户,得到目 标用户u的最近邻用户集合N= {Vi,v2,. . .,vN};
[0014] 步骤8、通过最近邻用户集合N计算目标用户u对项目p的预测评分值 pred(u,p);
[0015] 步骤9、取步骤8中得到的预测评分值中较高的k个项目,生成最终的推荐列表 RecList={ppp2,…,pk},即为对目标用户u的推荐列表。
[0016] 本发明的特点还在于,
[0017] 步骤1构建用户-项目评分矩阵R,具体为:用户集U= {Ul,…un},项目集P= (Pi,…Pm},用户屮对项目p」的评分值为r』,评分值Rj的nXm矩阵R称作用户-项目评分 矩阵,其中,如果用户4未对项目p」评过分,则对应的评分值ri;」为空,其中,i= 1,2,. . .n, j = 1,2,. . .m〇
[0018] 步骤2计算用户的共享近邻相似度,具体为:
[0019] 对任意两个用户,用户u和用户V,由公式(1)计算用户间的相似度sim(u,v):
[0021] 其中,表用户u的评分值,rv,p代表用户v的评分值,6代表用户u的平均评 分,6代表用户V的平均评分,
[0022] 从中选出每个用户相似度最高的k个用户,构造每个用户的k最近邻列表;
[0023] 然后计算用户的共享近邻相似度:对任意两个用户,用户u和用户V,如果他们都 在对方的k最近邻列表中,则他们的共享近邻相似度SNNsim(u,v)就是它们共享的近邻点 的数目;否则他们的共享近邻相似度SNNsim(u,v)为零。
[0024] 步骤3用户簇C=IA,C2,…,CJ的形成具体为:
[0025] 根据用户的共享最近邻相似度及邻域半径,可以计算出该用户在邻域半径内的 共享近邻个数,作为共享近邻密度,设置阈值MinPts,选取共享近邻密度大于MinPts的用 户作为核心用户,进行簇划分:如果两个核心用户的距离在邻域半径之内,则将它们放在 同一个簇中;同样,任何落在核心用户领域半径内的用户,划分到与核心用户相同的簇中; 而所有不在任何核心用户邻域半径内的用户,认为是噪声用户而被丢弃;得到用户簇C= IA,C2,…,CJ,n为簇个数;
[0026] 对每个用户簇Q,计算该簇中所有用户的平均值,得到该用户簇代表点cPi,最终 得到一组用户簇代表点集合为CP= {cPi,cp2,…,cpj。
[0027] 步骤4计算目标用户u与用户簇(^的代表点cp亦相似度sim(u,cp):
[0029] 其中,1^代表用户u的评分值,代表用户簇(^的代表点cPi的评分值,5代表 用户u的平均评分,^代表用户簇(^的代表点cpi的平均评分,其中,i= 1,2, ...n。
[0030] 步骤6中目标用户u与相似簇SQif用户uj的相似度sim(u,uj):
[0032] 其中,ru,$表用户u的评分值,代表相似簇SQ中用户u」的评分值,5代表 用户U的平均评分,t代表相似簇SCi中用户Uj的平均评分,其中,i=l,2,...n,j= 1,2,? ? ?m〇
[0033] 步骤8中目标用户u对项目p的预测评分值pred(u,p)为:
[0035] 其中,6表示目标用户u项目评分的平均值,5表示用户v项目评分的平均值,rv,p 为用户v的评分值,sim(u,v)为目标用户u与用户v的相似度,为:
[0037] 其中,表用户u的评分值,6代表用户u的平均评分,6代表用户V的平均评 分。
[0038] 本发明的有益效果是:
[0039] ①本发明一种基于共享近邻聚类的协同过滤方法,在推荐精度上优于基于 k-means的协同过滤算法,非常接近于基于用户的协同过滤算法;
[0040] ②本发明一种基于共享近邻聚类的协同过滤方法,利用聚类技术的引入,减少了 推荐算法的运行时间,尤其当用户数增多时,耗时减少明显,显著提升了算法的实时性。
【附图说明】
[0041] 图1是本发明中两个用户的共享近邻相似度示意图;
[0042] 图2是本发明与基于k-means的协同过滤算法、传统的基于用户的协同过滤算法, 平均绝对误差对比结果图;
[0043] 图3是本发明与基于k-means的协同过滤算法、传统的基于用户的协同过滤算法, 运行时间对比图。
【具体实施方式】
[0044] 下面结合附图和【具体实施方式】对本发明进行详细说明。
[0045] 本发明一种基于共享近邻聚类的协同过滤方法,具体按照以下步骤实施:
[0046] 步骤1、构建用户-项目评分矩阵R:用户集U= ,…un},项目集P=h,…pm}, 用户Ui对项目p^的评分值为ru,评分值ru的nXm矩阵R称作用户-项目评分矩阵,其 中,如果用户七未对项目pj评过分,则对应的评分值ri;j为空,其中,i= 1,2,. . .n,j= 1,2,? ? ?m〇
[0047] 步骤2、计算用户的共享近邻相似度:
[0048] 首先需要根据用户相似度对用户进行聚类,将偏好相似的用户划分到同一个簇, 而不同簇之间的用户相似度尽可能的低。传统基于相似度和密度的聚类技术,在高维数据 及不同密度数据上存在一定的局限性,无法产生理想的聚类结果。而推荐算法所用数据集 构成的用户评分矩阵一般都非常稀疏,这是因为实际应用中用户往往只会评价少部分物 品。由于大量的项目数目,使得用户数据的维度也非常高,而在高维数据空间中,传统相似 度并不可靠。这种数据集的特性使得基于传统相似度的聚类方法不适用于用户聚类。
[0049] 因此本发明采用一种基于共享近邻相似度的用户聚类。通过共享近邻点的个数 来决定两个用户的相似度,既能处理高维空间中两个用户数据相对接近但属于不同簇的问 题,也能处理簇具有不同密度的问题。
[0050] 对任意两个用户,用户u和用户V,由公式(1)计算用户间的相似度sim(u,v):
[0052]其中,表用户u的评分值,rv,p代表用户v的评分值,5代表用户u的平均评 分,5代表用户v的平均评分,
[0053] 从中选出每个用户相似度最高的k个用户,构造用户的k最近邻列表。然后计算 用户的共享最近邻相似度:对任意两个用户,用户u和用户V,如果他们都在对方的k最近 邻列表中,则他们的共享近邻相似度SNNsim(u,v)就是它们共享的近邻点的数目。否则他 们的共享近邻相似度SNNsim(u,v)为零。
[0054] 例如图1(a)中,计算两个黑色数据点(即代表两个用户)的共享近邻相似度,这 两个点分别有8个最近邻,这些最近邻中有4个最近邻点是共享的,因此这两个点的共享近 邻相似度如图1(b)所示为4。
[0055] 步骤3、根据每个用户的共享近邻密度进行聚类,形成用户簇C=IA,C2,…,Cn}, 并计算出用户簇代表点集合CP= {cPi,cp2,…,cpj:
[0056] 根据用户的共享最近邻相似度及邻域半径,可以计算出该用户在邻域半径内的共 享近邻个数,作为共享近邻密度。共享近邻密度能够度量一个用户被与它相似的用户包围 的程度,具有高共享近邻密度的用户一般可以被认作是核心用户,因为它们大部分分布在 簇的内部。设置阈值MinPts,选取共享近邻密度大于MinPts的用户作为核心用户,进行簇 划分。如果两个核心用户的距离在邻域半径之内,则将它们放在同一个簇中。同样,任何落 在核心用户领域半径内的用户,划分到与核心用户相同的簇中。而所有不在任何核心用户 邻域半径内的用户,可以认为是噪声用户而被丢弃。
[0057] 经过上述过程可得到一组用户簇C=IA,C2,…,CJ,n为簇个数。对每个用户簇 Q,计算该簇中所有用户的平均值,可得到该用户簇代表点cPi,最终得到一组用户簇代表点 集合为CP= {cPi,cp2,…,cpn}。
[0058]步骤4、根据公式⑵计算目标用户u与用户簇Q的代表点cpi的相似度 sim(u, cp^:
[0060]其中,ru;p代表用户u的评分值,代表用户簇(^的代表点cpi的评分值,5代表 用户u的平均评分,匕代表用户簇(^的代表点cpi的平均评分,其中,i= 1,2,...n。
[0061] 步骤5、从上述得到的n个相似度中选出相似度较高的m个代表点
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1