专利名称:一种基于幂率分布的链接相似度快速计算系统和方法
技术领域:
本发明涉及相似度计算领域,尤其是涉及一种基于幂率分布的链接相似度快速计 算系统和方法。
背景技术:
目前的实际应用中,相似度计算是在信息检索领域,协同过滤领域,聚类领域等不 可或缺的重要环节。举例来说,在一个网上书店购书时,系统会将与用户已经购买图书相似 的数目列表按照相似的程度推荐给用户,其中就涉及相似度计算。典型的相似度计算主要分为基于内容的相似度计算和基于链接的相似度计算。基 于内容相似度计算的代表方法为向量空间模型,用向量之间夹角的余弦值来衡量对象之间 的相似程度。基于链接相似度计算的代表方法为SimRank,通过迭代计算的相似度得分来衡 量对象之间的相似程度。然而,现实世界中的许多数据,并没有给出或者并不关注对象的内 容,而是对对象之间的联系特别感兴趣,并期望通过链接关系来获得对象之间的相似度,这 就是链接相似度计算所面对的主要问题,也是本发明所面向的领域。对于计算链接相似度来说,这个想法首先由斯坦福大学的研究者提出,基于随机 游走的理论基础,基于的假设为“如果两个对象指向了相似的对象,则这两个对象很可能相 似”。这样如果将现实的数据抽象为图以及节点之间的关系,各个节点对的得分实际上就是 它们在图中分别碰面的概率和。但基于链接的相似度计算存在一个明显的缺陷时间复杂 度过高。对于一个包含10000个节点和30000条边的图来说,目前主流PC机的计算时间可 能会超过5个小时。对有更大图结构的计算,将不得不忍受漫长的计算过程。在实际的相似度计算过程中,人们往往只关心哪些对象最相似,而不是关心哪些 对象不相似。现实的数据只要规模达到一定程度往往会服从幂率分布,相似度值也是如此, 即绝大多数节点对的相似度得分都比较低,只有少数节点对的相似度得分非常高。这样在 各个节点对相似度迭代计算的过程中关注少数得分高的节点对将无疑在提升性能的同时 避免过多的精确度损失。
发明内容
根据本发明的一个方面,提供了一种基于幂率分布的链接相似度快速计算方法, 包括A、输入一个图,所述图结构包含多个节点之间的链接情况;B、对所述图中的幂率分布特性进行分析及处理;C、迭代计算所述图中的各个节点对的相似度。D、当相邻两次计算的结果收敛和/或所述结果的接近程度已经达到用户的要求 时,完成迭代循环过程。根据本发明的另一个方面,提供了一种基于幂率分布的链接相似度快速计算系 统,其特征在于包括
输入单元,用于输入一个图,所述图结构包含多个节点之间的链接情况;分析处理单元,用于对所述图中的幂率分布特性进行分析和处理;迭代计算单元,用于对所述图中的各个节点对之间的相似度进行迭代计算;判断收敛单元,用于当相邻两次计算的结果收敛和/或所述结果的接近程度已经 达到用户的要求时终止迭代循环过程。
结合随后的附图,从下面的详细说明中可显而易见的得出本发明的上述及其他目 的、特征及优点。在附图中图1给出了根据本发明的基于幂率分布来快速计算链接相似度的方法的流程图;图2给出了根据本发明的对图中幂率分布特性进行分析及处理的流程图;图3给出了根据本发明的两种方法性能比较的具体情况;图4给出了根据本发明的基于幂率分布来快速计算链接相似度的系统的方框图;图5给出了根据本发明的分析处理单元的详细方框图;图6给出了能够实施本发明的一个示例环境的示意图。
具体实施例方式本发明的一个基本构思在于关于链接相似度的假设“如果两个对象指向了相似 的对象,则这两个对象很可能相似”和定义将会予以保留,这保证了本发明所得到的结果的 合理性;同时通过避免大量没必要的计算,从而以较小的精确度损失换来较大的性能提升。 本发明的一个目的是提出一种基于幂率分布来快速计算链接相似度的系统和方法。为了更全面地理解本发明及其优点,下面结合附图及具体实施例对本发明做进一 步详细地说明。首先,参考图1,对根据本发明的基于幂率分布来快速计算链接相似度的方法进行 说明。如图1所示,基于幂率分布来快速计算链接相似度的方法包括步骤A、输入一个图结构(步骤101)。该图结构一般是以邻接表的形式给出,例如有一 个包含10000个节点的图,与之对应的邻接表包含10000行,每行包含特定节点与其它节点 的链接情况。这个邻接表可以存放在文件中,也可以直接置于内存中。B、对图中的幂率分布特性进行分析及处理(步骤102)。因为大量的现实数据符合 幂率分布,并且我们关心的是哪些节点最相似。所以我们先按照正常的相似度计算方法迭 代计算若干次,此时不同的节点对将被赋予不同的得分。一般来说是这样的,目前的得分低 的节点对在迭代计算收敛时的得分往往很低。于是对所有节点对的得分进行升幂排序,例 如,得分较小的前80%的节点对将被锁定,以后只计算得分较大的20%节点对直到收敛。 这无疑会大大降低每次迭代计算的时间。随后参考图2,对该步骤进一步进行详细说明。C、迭代计算各个节点对的相似度(步骤103)。每进行一次迭代,就会对该图中的 任意两个节点之间的相似度进行更新,这个过程是循环的,第K次循环的结果将作为第K+1 次循环的输入。D、当相邻两次计算的结果收敛,或其接近程度已经达到用户的要求,完成迭代循环过程(步骤104)。接下来,参考图2,进一步说明对图中的幂率分布特性进行分析及处理的过程。图 2给出了根据本发明的对图中的幂率分布特性进行分析及处理的流程图。如图2所示,对图中的幂率分布特性进行分析及处理的步骤包括B1、前r次迭代计算各节点对的相似度(步骤201)。具体地说,在前r次迭代计 算的过程中按常规计算各个节点对的相似度。这里基于一个假设如果在图中两个节点可 达,则它们之间可以通过图中的六条边可达,这就是著名的六度可达理论。这样我们在前六 次按常规迭代计算各个节点对的相似度值。B2、对所有节点对的相似度值进行升幂排序(步骤202)。通过前一步计算出各个 节点对的相似度值,然后对这些节点对的相似度值从小到大进行升幂排序。B3、将升幂排序中的某点定为阈值(步骤203)。通过前一步对节点对的相似度值 进行升幂排序后,根据80-20原则(例如社会上前20%人的财富总量占社会总财富的80% 左右),将20%的节点对对应的得分设为阈值,在后续的计算中参照此阈值。B4、对相似度值小于阈值的部分进行标记(步骤204)。通过前一步得到阈值,在此 步骤中各个节点对的相似度值均与该阈值作比较,小于该阈值的相似度点对将被置标记, 在后续的计算中锁定此相似度值。B5、对后期的迭代计算只更新未标记的节点对(步骤205)。接下来的迭代计算过 程只计算为被标记的节点对,因为大部分节点对在前面的计算中都被标记,这将大大提升 性能,避免不必要的计算。这个过程直到迭代计算满足收敛条件终止。在这个方面中,其中图结构采用邻接表形式。在这个方面中,其中在步骤C中每进行一次迭代,就会对该图中的任意两个节点 之间的相似度值进行更新,这个过程是迭代的,第K次循环的结果将作为第K+1次循环的输 入。现在,参考图3,该图给出了两种方法性能比较的具体情况。在这个给定的数据集中我们很容易发现在前6次的迭代计算过程中,原方法和改 进方法每次迭代的计算时间几乎相同。但是从第7次迭代计算开始改进方法每次迭代计算 的时间大概为原方法的五分之一,并且改进方法的收敛速度很快。从图中我们可以看出经 过25次迭代计算改进的方法收敛,而原方法需要经过46次迭代计算才收敛。计算时间由 每次迭代计算的时间和迭代次数共同确定。通过计算,改进的方法在性能上的提升大概为 400%。接下来,参考图4,对根据本发明的基于幂率分布来快速计算链接相似度的系统进 行详细地描述。如图4所示,根据本发明的基于幂率分布来快速计算链接相似度的系统包括输 入单元401、分析处理单元402、迭代计算单元403、以及判断收敛单元404。输入单元401用于输入一个图结构(该单元401与输入一个图结构101的作用相 同)。该图结构一般是以邻接表的形式给出,例如有一个包含10000个节点的图,与之对应 的邻接表包含10000行,每行包含特定节点与其它节点的链接情况。这个邻接表可以存放 在文件中,也可以直接置于内存中。分析处理单元402用于对该图结构中的幂率分布特性进行分析和处理(图2的整)。该单元402首先通过正常的相似度计算方法迭代计算若 干步,这里基于一个假设根据小世界理论,一般来说任意两点会通过六步可达。所以说通 过前若干次迭代计算后相似度值的变化不会很明显,并且我们的目的是为了得到哪些节点 对最相似。然后我们对前若干次迭代得出的相似度值进行排序,根据需要设定一个合理的 阈值,大于此阈值的得分会在后续的迭代计算中不断更新,小于阈值的得分将会被锁定。迭代计算单元403,用于通过迭代来计算各个节点对之间的相似度。每进行一次迭 代,就会对该图中的任意两个节点之间的相似度进行更新,这个过程是循环的,第K次循环 的结果将作为第K+1次循环的输入。判断收敛单元404,用于当相邻两次计算的结果收敛或其接近程度已经达到用户 的要求时终止迭代循环过程。接下来,参考图5,分析处理单元进一步包括前r次迭代计算模块501、相似度值排 序模块502、阈值设定模块503、判断及标记模块504以及后期迭代计算模块505。前r次迭代计算模块501用于前r次按照既定的步骤迭代计算链接相似度。具体 地说,在前r次迭代计算的过程中按常规计算各个节点对的相似度。根据一个具体实施方 式,这里基于一个假设如果在图中两个节点可达,则它们可以通过图中的六条边可达,这 就是著名的六度可达理论。这样我们在前六次按常规迭代计算各个节点对的相似度值。相似度值排序模块502用于对前r次各个节点对的相似度值进行排序。通过前一 步计算出各个节点对的相似度值,然后对这些节点对的相似度值从小到大进行升幂排序。阈值设定模块503用于通过对相似度值进行排序后将从大到小例如20%的节点 对应的值设定为阈值。通过前一步对节点对的相似度值进行升幂排序后,根据80-20原则 (例如社会上前20%人的财富总量占社会总财富的80%左右),将20%的节点对对应的得 分设为阈值,在后续的计算中参照此阈值。判断及标记模块用于判断节点对的相似度值是否小于阈值,若小于阈值则对其节 点对标记。通过前一步得到阈值,在此步骤中各个节点对的相似度值均与该与之作比较,小 于阈值的相似度点对将被置标记,在后续的计算中锁定此相似度值。后期迭代计算模块用于迭代计算节点对的相似度值,遇到被标记的节点对则跳至 下一节点对的计算。接下来的迭代计算过程只计算为被标记的节点对,因为大部分节点对 在前面的计算中都被标记,这将大大提升性能,避免不必要的计算。这个过程直到迭代计算 满足收敛条件终止。图6显示了根据本发明的一个实施例的基于幂率分布的链接相似度快速计算系 统的硬件结构。如图6所示,该基于幂率分布的链接相似度快速计算系统包括CPU核心器件单元, 其中该CPU核心器件单元包含了 CPU 601、主机控制器602、ROM 603、RAM 604、以及输入/ 输出控制器607。该计算机还包括通信接口 609、存储设备608、光驱610、以及图形控制器 606。主机控制器602依照存储在ROM 603,BIOS以及RAM 604中的程序来操作,并且由 此控制系统的各个部分。图结构数据可通过多种输入设备输入,如存储设备(硬盘,闪存), 光驱,键盘输入或通过网络传输。在逻辑结构上,这种图结构数据有多种表现形式,最常见 的是邻接矩阵表示方法和邻接表表示方法。图结构随后会被读入存储设备608。存储设备
7608还存储供链接相似度快速计算系统使用的本发明的程序、应用、操作系统等等的代码和 数据。此后,所读取的程序和数据将被加载到RAM 604中以供CPTO01使用。从上述结构实例中可以看出,任何具有通用计算机功能的硬件都可以用作本发明 需要的硬件。应该指出的是,图6仅示出了本发明的基于幂率分布的链接相似度快速计算 系统的一个实施例的硬件结构。相应地,对其他各种结构的本发明实施例也是可行的。此 外,图6所示的实施例的组件并不全是本发明的必要组件(如光驱610和通信接口 609并 不是本发明的必要组件)。至此,已结合实施例对本发明进行了描述。与同类方法横向比较,本发明提出的方 法可以避免大量没必要的计算,从而大幅提升性能,这是最大的优点。其次,本发明建立在 合理的理论模型上,以较小的精确度损失换来较大的性能改善。对于本领域的普通技术人员来说可显而易见的得出其他优点和修改。因此,具有 更广方面的本发明并不局限于这里所示出的并且所描述的具体说明及示例性实施例。因 此,在不脱离所附权利要求书及其等价体所限定的一般发明构思的精神和范围的情况下, 可对其做出各种修改。
权利要求
基于幂率分布的链接相似度快速计算方法,包括A、输入一个图,所述图结构包含多个节点之间的链接情况;B、对所述图中的幂率分布特性进行分析及处理;C、迭代计算所述图中的各个节点对的相似度;D、当相邻两次计算的结果收敛和/或所述结果的接近程度已经达到用户的要求时,完成迭代循环过程。
2.根据权利要求1的方法,其特征在于所述步骤B进一步包括 Bi、迭代计算所述各节点对的相似度;B2、对所有节点对的相似度值进行升幂排序; B3、将升幂排序中的一个预定点定为阈值; B4、对其相似度值小于所述阈值的部分进行标记; B5、只对未标记的节点对进行更新迭代计算。
3.根据权利要求1的方法,其中所述图采用邻接表形式。
4.根据权利要求1或2的方法,其中在所述步骤C中,每进行一次迭代都对所述图中的 任意两个节点之间的相似度进行更新,该更新过程是循环的,其中第K次循环的结果将作 为第K+1次循环的输入。
5.根据权利要求2的方法,其特征在于在所述步骤Bl中迭代计算所述各节点对的相似度的操作是在前N次迭代操作中进行 的,且N的取值为6;所述阈值被设定为对相似度值进行排序后从小到大80%处的节点所对应的值。
6.一种基于幂率分布的链接相似度快速计算系统,其特征在于包括 输入单元,用于输入一个图,所述图结构包含多个节点之间的链接情况; 分析处理单元,用于对所述图中的幂率分布特性进行分析和处理;迭代计算单元,用于对所述图中的各个节点对之间的相似度进行迭代计算; 判断收敛单元,用于当相邻两次计算的结果收敛和/或所述结果的接近程度已经达到 用户的要求时终止迭代循环过程。
7.根据权利要求6的系统,其特征在于所述分析处理单元进一步包括 迭代计算模块,用于迭代计算所述节点对的相似度;相似度值排序模块,用于对各个节点对的相似度值进行排序; 阈值设定模块,用于将所述相似度值的排序中的一个预定点定为阈值; 判断及标记模块,用于判断节点对的相似度值是否小于所述阈值,并对其相似度值小 于所述阈值的节点对进行标记;后期迭代计算模块,用于迭代计算节点对的相似度值,其中遇到被标记的节点对则跳 至下一节点对的计算。
8.根据权利要求6或7的系统,其中所述图具有邻接表形式。
9.根据权利要求6的系统,其特征在于所述计算单元每进行一次迭代,就会对该图中 的任意两个节点之间的相似度进行更新,该更新过程是循环的,第K次循环的结果将作为 第K+1次循环的输入。
10.根据权利要求7的系统,其特征在于在所述迭代计算模块进行的所述各节点对的相似度的迭代计算操作是在前N次迭代操作中进行的,且N的取值为6 ;所述阈值被设定为对相似度值进行排序后从小到大80%处的节点所对应的值。
全文摘要
基于幂率分布的链接相似度快速计算的系统和方法,其中该方法包括步骤输入一个图结构;对该图结构中的幂率分布特性进行分析及处理;通过迭代计算各个节点对的相似度;当相邻两次计算的结果收敛,或其接近程度已经达到用户的要求,完成迭代循环过程。本发明保证精度损失上界的同时性能显著提升。
文档编号G06F17/30GK101853281SQ20101017902
公开日2010年10月6日 申请日期2010年5月20日 优先权日2010年5月20日
发明者何军, 刘红岩, 杜小勇, 蔡元哲, 贾旭 申请人:清华大学