基于子图的链接相似度的快速近似计算系统和方法

文档序号:6602173阅读:798来源:国知局
专利名称:基于子图的链接相似度的快速近似计算系统和方法
技术领域
本发明涉及数据挖掘和信息检索,尤其是涉及基于子图的全图中特定点对链接相 似度快速近似计算系统和方法。
背景技术
相似度计算在很多研究领域中有着广泛的应用,如信息检索领域、数据挖掘的聚 类领域、推荐系统领域等。相似度计算主要分为基于内容的和基于链接的,基于内容的主要 包括向量空间模型和布尔模型等,基于链接的将在下文中介绍。网络中对象之间的链接关系是在不断变化的,例如过一段时间后某些资源的链接 可能不可达,或者某两个节点之间会新增加一条链接等等。例如在一个典型的购书网站 (如Amazon)中,针对用户当前正在关注的书籍,网站希望快速将与这个书目相似的一个推 荐书籍列表返回给用户,这其中的核心问题就是如何通过链接分析快速的计算出网站中两 本书的相似度,从而确定出推荐列表。但是基于链接的相似度算法的时间复杂度很高,很难 在短时间得到令人满意的结果。例如在信息检索中,对于仅包含10000个节点和30000条边 的网页链接图,如果需要得到两两节点之间较为理想的相似度结果,一台现代的PC机(例 如CPU主频3. OGHz)往往需要计算5小时以上。对于更大规模的图结构,这个算法的时间 及存储空间上的消耗将变得不可接受。并且当链接关系发生改变后节点对的相似度得分又 会发生明显的变化,需要重新计算得到,于是就会出现频繁计算全局相似度的情况,这无疑 也会消耗大量的时间。事实上,有时我们只关心某些节点对之间的相似度,并希望快速地近 似获得这些节点对之间的相似度,这是链接相似度计算面临的主要问题,也是本发明所面 向的领域。基于链接关系来计算节点之间的相似度,我们可以把现实的数据模拟为图结构 用节点表示对象,用边表示对象之间的链接关系。并且这种图可以使用邻接表结构来存 储。在2002年的知识发现与数据挖掘会议(SIGKDD 2002)中,斯坦福大学的两位研究者 Glen Jeh和Jennifer Widom提出了一种通过链接关系来计算对象之间相似度的方法—— SimRank,并给出了理论假设“若两个对象指向相似的对象,则这两个对象很可能相似”以及 数学理论基础模型——随机游走模型。两对象之间的相似度实际上就是这两个对象随机游 走最后能够碰面的概率。但这种通过链接关系来计算对象之间相似度的方法时间复杂度 高,此作者还提出了相应的剪枝方法,用较少的精确度损失换取较大的性能提升。

发明内容
根据本发明的一个方面,提供了一种基于子图来快速近似计算链接相似度的方 法,其特征在于包括A、输入一个图结构;B、对待计算相似度的节点对的两个节点进行反复扩展,从而由所述待计算相似度 的节点和扩展的节点构成子C、迭代计算所述子图中特定节点对的相似度;D、当相邻两次迭代计算的结果满足收敛条件或其接近程度已经满足用户的要求, 终止迭代过程。根据本发明的一个进一步的方面,提供了一种基于子图来快速近似计算链接相似 度的系统,其特征在于包括输入单元,用于输入一个图结构;子图扩展单元,对待计算相似度的节点对的两个节点进行反复扩展,从而由所述 待计算相似度的节点和扩展的节点构成子图;迭代计算单元,用于通过迭代计算所述子图中所有节点对的相似度,从而得到所 述待计算相似度的节点对的相似度值;收敛判断单元,用于判断相邻两次迭代计算的结果是否满足收敛条件或其接近程 度是否已满足用户要求,“是”则终止迭代循环过程,“否”则继续由所述迭代计算单元进行 迭代计算。


图1给出了根据本发明的基于子图来快速近似计算链接相似度的方法的流程图;图2给出了根据本发明的扩展节点对附近节点构成子图的流程图;图3给出了根据本发明的找出该节点对首次碰面路径上的所有碰面节点的示例;图4给出了根据本发明的基于子图来快速近似计算链接相似度的系统的方框图;图5给出了根据本发明的子图扩展的详细方框图;图6给出了能够实施本发明的一个示例环境的示意图。
具体实施例方式本发明的基本构思在于对现有技术中关于计算链接相似度的假设和理论基础将 予以保留,这保证了本发明所得到结果的合理性;同时通过对给定节点对附近的节点不断 扩展而构成子图,并利用这个子图来快速近似计算节点对的相似度,这种近似方法在精度 损失较小的情况下使性能大幅的提升。本发明是鉴于上述技术问题而产生的。本发明的一个目的是提出一种基于子图来 快速近似计算全图中特定点对间链接相似度的方法和系统。为了更全面地理解本发明及其优点,下面结合附图及具体实施实例对本发明做进 一步详细地说明。如图1所示的根据本发明的一个实施例的基于子图的全图特定点对间链接相似 度的快速近似计算方法包括A、输入一个图结构和待计算相似度的节点对(步骤101)。该图结构可以用邻接表 形式表示,比如一个10000个节点的图,与这个图对应的邻接表包括10000行,每一行包含 若干个节点,这些节点分别于此节点直接相连。这个邻接表可以存放在文件中,也可以直接 置于内存中。B、对待计算相似度的节点对的节点进行反复扩展,从而由所述待计算相似度的节 点和扩展的节点构成子图(步骤102)。首先将给定的目标节点对的两个节点加入种子节点集中,然后使所述目标节点对的所述两节点各自向自己的邻居随机游走一步,如果它们可 以在某些邻居节点碰面,则将这些节点加入到种子节点集中,种子节点集构造完毕,否则继 续随机游走直到它们在某些点碰面。接下来基于随机游走对种子节点集进行扩展,每次扩 展后向子图加入与这些节点的直接相连的邻居节点,直到子图扩展到适当的规模则结束此 过程。C、迭代计算子图中节点对的相似度(步骤103)。每进行一次迭代,就会对该图中 的任意两个节点之间的相似度进行更新,这个过程是循环的,第K次循环的结果将作为第 K+1次循环的输入。对该步骤的详细说明在下文参考图2给出。在计算过程中使用经典的基于链接信息的相似度计算算法SimRank,SimRank算 法基于“如果两个对象指向了相似的对象,那么这两个对象很可能相似”的递归定义,在 SimRank中,节点对的相似程度映射到区间
,0表示节点对中的两个节点无任何关系, 1表示节点对中的两个节点的相似程度最大。在子图和全图计算节点对的相似度时均使用 SimRank 算法。D、当相邻两次迭代计算的结果满足收敛条件或其接近程度已经满足用户的要求 时,终止迭代过程(步骤104)。接下来,参考图2,对给定节点对附近的节点不断扩展构成子图过程(步骤102)更 详细地说明。图2给出了根据本发明的扩展节点对附近节点构成子图的流程图。如图2所示,扩展节点对附近节点构成子图的步骤进一步包括Cl、找出子图扩展的种子节点集(步骤201)。首先将两个目标节点加入到种子节 点集中,然后基于随机游走理论,让这两个节点各自随机游走一步,如果它们可以在直接相 连的邻居节点碰面,则将这些碰面节点加入到种子节点集中,并结束此过程。否则继续重复 上述步骤,直到两目标节点碰面。具体细节将结合图3中的例子详细说明。C2、根据随机游走理论对种子节点集进行扩展(步骤202)。在上述步骤(步骤 201)中已经得到了子图扩展的种子节点集,接下来对这些种子节点进行扩展,第一步扩展 到与这些种子节点直接相连的邻居节点,将这些邻居节点加入到子图中。第二步再对刚加 入到子图中的节点进行扩展,再将与这些节点直接相连的邻居节点加入到子图中。以此类 推,对上述这些节点扩展若干步后构成一个规模适当的子图。该子图将用于下一步快速计 算给定节点对的相似度值。C3、通过设置节点度的阈值来控制子图扩展速度(步骤203)。在子图的扩展过程 中会存在这样一个问题——子图的扩展速度过快。如果子图在基于随机游走理论扩展几步 后的规模与全图的规模相差不多时,利用子图来近似计算便失去了意义。这样我们要考虑 如何控制子图的扩展速度。根据幂率分布只有少数节点的度(节点的度即通过该节点出边 和入边的数量之和)比较大,当扩展到这些节点时,下一步会将它的所有邻居节点加入子 图,这是导致子图扩展速度过快的主要原因。这样我们通过控制节点的度,当节点的度超出 某规定阈值时,锁定此节点以避免下一次对它进行扩展。C4、得到合适的子图(步骤204)。到目前为止,我们已获得针对该特定点对的规模 适当的子图,此子图将作为下一步迭代计算点对相似度的输入。现在,参考图3,对上述步骤Cl进行更细致的说明。图3给出了找出给定节点对首 次碰面时的所有相遇节点的示例。
6
如图3所示,假设给定节点对A和B,要找出一个合理的子图扩展的种子节点集。 首先将节点A和B加入到种子节点集中。基于随机游走理论,首先节点A和B各自向自己 的直接邻居随机游走一步,从图中我们可以得知,节点A可以到达它的直接邻居(节点C, D,E等),但A和B不会在某点相遇。在这种情况下,节点A和B在它们刚才到达的直接邻 居处再各自随机游走一步,它们会在三点相遇(X,Y,Z)。此时它们已经各走两步,即路径长 度为2。它们再各自随机游走一步便会在U和V两点碰面,但此时的路径长度为3,大于首 次碰面的最短路径2。故在该图中种子节点集为{Α,B, X,Y,Ζ},即首次碰面路径共包含这 五个节点。接下来,参考图4,对根据本发明的基于子图来快速近似计算特定点对链接相似度 的系统进行详细地描述。如图4所示,根据本发明的基于子图来快速近似计算全图中特定点对链接相似度 的系统包括输入单元401、子图扩展单元402、迭代计算单元403、以及收敛判断单元404。输入单元401用于输入一个图结构和待计算相似度的节点对。该图结构可以是以 例如邻接表形式给出,比如一个10000个节点的图,与这个图对应的邻接表包括10000行, 每一行包含若干个节点,这些节点分别于此节点直接相连。这个邻接表可以存放在文件中, 也可以直接置于内存中。子图扩展单元402,用于对该节点对附近的节点不断扩展,最后构成规模适当的子 图。首先将目标节点对加入到种子节点集中,然后使两目标节点各自向自己的邻居随机游 走一步,如果它们可以在某些邻居节点碰面,则将这些节点加入到种子节点集中,种子节点 集构造完毕,否则继续随机游走直到它们在某些点碰面。接下来基于随机游走对种子节点 集进行扩展,每次扩展后向子图加入与这些节点直接相连的邻居节点,重复此过程直至得 到一个规模适当的子图。下文中将参考图5对该子图扩展单元402进行进一步说明。迭代计算单元403,用于通过迭代计算子图中各个节点对的相似度,从而得到特定 节点对的相似度值。每进行一次迭代,就会对该图中的任意两个节点之间的相似度进行更 新,这个过程是循环的,第K次循环的结果将作为第Κ+1次循环的输入。收敛判断单元404,用于判断相邻两次迭代计算的结果是否满足收敛条件或其接 近程度是否已满足用户要求,若满足则终止迭代过程,否则继续迭代。接下来,参考图5,对子图扩展单元402进行进一步说明。图5给出了根据本发明 的一个实施例的子图扩展单元402的结构框图。如图5所示,根据本发明的一个实施例的子图扩展单元402进一步包括节点对计 算种子节点集模块501、种子节点集扩展模块502、阈值控制模块503、以及子图获取模块 504。计算种子节点集模块501用于获得子图扩展的基本种子节点集。首先将给定的两 目标节点加入到种子节点集中。接着使两目标节点分别向其邻居节点随机游走一步,若它 们可在某些节点相遇,将这些节点加入到种子节点集中,结束此过程。否则继续随机游走, 直到在某些点碰面为止。节点集扩展模块502用于将种子节点集扩展为规模适当的子图。基于随机游走理 论,首先对种子节点集中的节点进行一步扩展,到达它们的直接邻居节点,将这些新扩展到 达的邻居节点加入到子图中,然后再对这些新扩展到的邻居节点进行扩展,直到子图达到适当的规模。然后将全图中的对应的链接关系添加到子图中。阈值控制模块503用于通过分析节点的度来决定是否对该节点进行扩展,用于控 制子图扩展的速度。根据幂率分布少数节点的度会比较大。并且其它节点很容易扩展到 这些度大的节点,因为扩展到某节点的概率与这个节点的度成正比。当扩展到这些度大的 节点,下一次将会把该节点的直接邻居全部加入到子图中,这是导致子图扩展速度过快的 主要原因。这样我们通过控制节点的度,当节点的度超出某规定阈值时,锁定此节点(锁定 节点即在在下一次迭代时此节点不再向外扩展)避免下一次对它进行扩展即可有效地控 制子图的扩展速度。子图获取模块504用于得到相应的子图。在计算过程中使用经典的基于链接信息 的相似度计算算法SimRank,SimRank算法基于“如果两个对象指向了相似的对象,那么这 两个对象很可能相似”的递归定义,在SimRank中,节点对的相似程度映射到区间
,0 表示节点对中的两个节点无任何关系,1表示节点对中的两个节点的相似程度最大。在子图 和全图计算节点对的相似度时均使用SimRank算法。对于特定的节点对,在子图上计算和 在全图上计算时分别有不同的得分,但两者差别不明显,此时我们用特定节点对在子图上 的得分来近似全图上的得分。到目前为止,已获得针对该特定点对的规模适当的子图,此子 图将作为下一步迭代计算点对相似度的输入。现在参考图6对本发明的基于子图的全图中特定点对链接相似度快速近似计算 系统的硬件结构示例进行说明。如图6所示,根据本发明的一个实施例的基于子图的全图 中特定点对链接相似度快速近似计算系统包括CPU 60UROM 603,RAM 604以及输入/输出 控制器605,并且这些部件是由主机控制器602而互连的。该实施例的基于子图的全图中 特定点对链接相似度快速近似计算系统还可进一步包括存储设备608、通信接口 609、光驱 610、键盘611、显示器606以及图形控制器607。CPU 601依照存储在BIOS、ROM以及RAM中的程序来操作,并且由此控制系统的 各个部分。图结构数据可通过多种方式输入设备输入,如存储设备(硬盘,闪存)608,光驱 610,键盘输入或通过网络传输。在逻辑结构上,这种图结构数据有多种表现形式,最常见的 是邻接表或邻接矩阵表示方法。图结构随后会被读入存储设备608。存储设备608还存储 供计算机使用的本发明的程序、应用、操作系统等等的代码和数据。此后,所读取的程序和 数据将被加载到RAM 604中以供CPU 601使用。从上述结构实例中可以看出,任何具有通用计算机功能的硬件都可以用作本发明 需要的硬件。应该指出的是,图6仅示出了根据本发明的一个实施例的硬件结构。相应地, 对其他各种实施例来说,只要对其可以应用本发明实施例,那么这些结构都是可行的。此 外,本发明还可以使用硬件、软件、或者软硬件组合来实现。至此,已对本发明进行了描述。与同类方法横向比较,本发明提出的方法能够通过 子图快速近似计算特定节点对的相似度值,这是本发明的一个突出的优点。其次,本发明建 立在合理的理论模型上,以折中的方法用较小的精度损失获得大幅的性能提升。对于本领域的普通技术人员来说可显而易见的得出其他优点和修改。因此,具有 更广方面的本发明并不局限于这里所示出的并且所描述的具体说明及示例性实施例。因 此,在不脱离由随后权利要求及其等价体所定义的一般发明构思的精神和范围的情况下, 可对其做出各种修改。
权利要求
一种基于子图来快速近似计算链接相似度的方法,其特征在于包括A、输入一个图结构;B、对待计算相似度的节点对的两个节点进行反复扩展,从而由所述待计算相似度的节点和扩展的节点构成子图;C、迭代计算所述子图中特定节点对的相似度;D、当相邻两次迭代计算的结果满足收敛条件或其接近程度已经满足用户的要求,终止迭代过程。
2.根据权利要求1的方法,其中步骤B进一步包括 Bi、确定特定的节点对;B2、找出该节点对在随机游走过程中首次碰面时的相遇节点; B3、利用随机游走理论,对上述相遇节点和所述节点对中的两个节点不断进行扩展; B4、通过设置节点的度的阈值来控制所述子图(这里子图即为权利要求1中的子图) 的扩展速度;B5、得到合适的子图,用于下一步的相似度计算。
3.根据权利要求1的方法,其中所述图结构采用邻接表形式表示。
4.根据权利要求1的方法,其特征在于在所述步骤C中的所述迭代计算中使用经典的基于链接信息的相似度计算SimRank算法,该SimRank算法基于“如果两 个对象指向了相似的对象,那么这两个对象很可能相似”的递归定义,在该SimRank算法 中,节点对的相似程度被映射到区间W,l],其中0表示节点对中的两个节点无任何关系, 1表示节点对中的两个节点的相似程度最大,在子图和全图计算节点对的相似度时均使用 SimRank 算法;每进行一次迭代,都用最新的迭代结果对该子图中的任意两个节点之间的相似度进行更新。
5.一种基于子图来快速近似计算链接相似度的系统,其特征在于包括 输入单元(401),用于输入一个图结构;子图扩展单元(402),对待计算相似度的节点对的两个节点进行反复扩展,从而由所述 待计算相似度的节点和扩展的节点构成子图;迭代计算单元(403),用于通过迭代计算所述子图中所有节点对的相似度,从而得到所 述待计算相似度的节点对的相似度值;收敛判断单元(404),用于判断相邻两次迭代计算的结果是否满足收敛条件或其接近 程度是否已满足用户要求,“是”则终止迭代循环过程,“否”则继续由所述迭代计算单元进 行迭代计算。
6.根据权利要求5的系统,其特征在于所述子图扩展单元进一步包括计算种子节点集模块(501),用于基于随机游走理论,获得一个给定节点对首次碰面时 的所有碰面处的节点,并将这些节点和给定节点对保存在一个种子节点集中;种子节点集扩展模块(502),用于基于随机游走理论,不断对所述种子节点集中的各节 点进行扩展,直至得到规模适当的子图;阈值控制模块(503),用于通过分析所述种子节点集中的一个节点的度来决定是否对 该节点进行扩展,从而控制所述子图的扩展的速度;子图获取模块(504),用于得到相应的子图。
7.根据权利要求5的系统,其特征在于所述图结构采用邻接表形式。
8.根据权利要求5的系统,其特征在于迭代计算单元在所述迭代计算中使用经典的基于链接信息的相似度计算算法SimRank,该SimRank 算法基于“如果两个对象指向了相似的对象,那么这两个对象很可能相似”的递归定义,在 该SimRank算法中,节点对的相似程度被映射到区间
,其中0表示节点对中的两个节 点无任何关系,1表示节点对中的两个节点的相似程度最大,在子图和全图计算节点对的相 似度时均使用SimRank算法;每进行一次迭代,就用最新的迭代结果对所述图结构中的任意两个节点之间的相似度 进行更新。
全文摘要
一种基于子图来快速近似计算链接相似度的系统和方法,其中该方法包括步骤输入一个图结构和待计算相似度的节点对;对该节点对附近的某些节点不断扩展成一个子图;通过迭代来计算该子图中所有节点对相似度,从而得到特定节点对间的相似度;当相邻两次迭代的结果满足收敛条件或其接近程度已经满足用户的要求,终止迭代过程。本发明可快速近似计算特定节点对的相似度。
文档编号G06F17/30GK101894123SQ201010169419
公开日2010年11月24日 申请日期2010年5月11日 优先权日2010年5月11日
发明者何军, 刘红岩, 杜小勇, 贾旭, 邹李 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1