一种基于图中的块结构来计算链接相似度的系统和方法

文档序号:6483954阅读:167来源:国知局
专利名称:一种基于图中的块结构来计算链接相似度的系统和方法
技术领域
本发明涉及数据挖掘和信息检索领域,尤其是涉及一种基于图中 的块结构来高效计算《连接相似度的方法。
背景技术
在许多实际应用中,对象之间的相似度需要用数值衡量。例如,
在一个典型的视频网站中(如YouTube),针对用户当前正在观看的视 频,网站会给出与这个视频相似的一个视频节目单以推荐给用户,这 其中的核心问题就是相似度的计算。相似度的计算方法,依据其所利 用的对象信息的不同,可分为内容相似度计算和链接相似度计算两种。 内容的相似度计算,顾名思义,就是利用对象的内容作为相似度的评 判依据,主要的方法为向量空间模型(VSM)。以典型的文档相似度计算 为例, 一篇文档被视为一个包含术语(term)的向量(vector),通过合适的 建模,向量之间的余弦值得到计算,这个余弦值就是文档之间的相似 度。然而,现实世界中的许多数据,并没有给出或者并不关注对象的 内容,而是对对象之间的联系特别感兴趣,并籍此希望获得对象之间 的相似度,这就是链接相似度计算面对的主要问题,也是本发明所面
向的4页:威。
在链接相似度计算所面对的问题中,现实世界里的许多数据都可 以用一张图来描述,其中对象可以对应为图中的节点,而对象之间的 关系对应为图中节点之间的边。给定一张这样的图, 一种行之有效的,
计算图中各个节点之间相似度的方法是业界所需的。在2002年知识发现特别兴趣组大会(SIGKDD 2002)上,美国斯坦福大学的两位研究人员 Glen Jeh和Jennifer Widom提出了 一种计算链接相似度的方法,并给出 了基于链接的相似度的定义。这个定义基于一个通用的直觉两个对 象相似,是因为它们连到了另外两个相似的对象上。这个定义并不依 赖于具体的某个领域。随后,他们引入了随机游走的数学模型,这个
模型模拟了一个漫无目的的游走者,在图中的节点之间,沿着边任意 的走动。假设这样的随机游走者有两个,他们给出了基于链接的相似 度的定义,即节点A和节点B之间的相似度,是这两个随机游走者分 别从A和B出发,最后石並面的积克率。
尽管斯坦福的研究者给出了基于链接的相似度计算,但是这个方 法也有一些显而易见的缺陷。在现实世界的应用中,需要计算相似度
的图结构的大小通常数以万计,在某些重要的应用中,例如在信息检 索中,计算网页结构图中的相似度,是一个相当耗时的工作,需要消 耗大量的CPU资源和内存资源。例如,对于仅有5000个节点的图, 如果需要得到节点两两之间相似度较为理想的结果, 一台现代的PC机 (例如CPU主频2.0G)往往需要计算2小时以上。对于更大规模的图结 构,这个算法将会无能为力。
本发明的关键之处在于前面关于链接相似度的直觉和定义将会 予以保留,这保证了本发明所得到的结果的合理性;同时通过对抽象 图中的块结构(block)加以侦测,并利用这种块结构来估计块中节点的 相似度,使性能有了大幅提高。

发明内容
本发明是鉴于上述技术问题而产生的。本发明的 一 个目的是提出 一种基于图中的块结构来计算链接相似度的方法。
在一个方面中,根据本发明的基于图中的块结构来计算链接相似度的方法包括步骤A、输入一个图结构;B、对该图结构中的块结构 进行侦测;C、通过迭代来计算块间节点相似度;D、当相邻两次计算 的结果收敛,或其接近程度已经达到用户的要求,终止迭代循环过程。
在这个方面中,其中步骤C进一步包括Cl、计算块的相似度; C2、计算块内节点相似度;C3、计算节点与所在块之间的距离;C4、 利用在步骤C1中计算的块的相似度和在步骤C3中计算的节点与所在 块间的距离来计算不同块之间的节点的相似度;C5、对步骤C2所计算 的块内节点相似度和步骤C4所计算的块间节点相似度进行组装以得 到全局相似度。
在这个方面中,其中图结构是矩阵形式。
在这个方面中,其中在步骤C中每进行一次迭代,就会对该图中 的任意两个节点之间的相似度进行更新,这个过程是循环的,第K次 循环的结果将作为第K+l次循环的输入。
在另 一个方面中,根据本发明的基于图中的块结构来计算链接相 似度的系统包括输入单元,用于输入一个图结构;侦测单元,用于 对该图结构中的块结构进行侦测;计算单元,用于通过迭代来计算块 间节点相似度;终止单元,用于当相邻两次计算的结果收敛或其接近 程度已经达到用户的要求时终止迭代循环过程。
在这个方面中,其中计算单元进一步包括块的相似度计算模块, 用于计算块结构之间的相似度;块内节点相似度计算模块,用于计算
同一个块结构中的节点的相似度;距离计算模块,用于计算节点与所 在块之间的距离;块间节点相似度计算模块,用于利用块的相似度计 算模块所计算的块的相似度和距离计算模块所计算的节点与所在块间 的距离来计算不同块之间的节点的相似度;组装^t块,用于对块内节 点相似度计算模块所计算的块内节点相似度和块间节点相似度计算模 块所计算的块间节点相似度进行组装以得到全局相似度。
6在这个方面中,其中图结构是矩阵形式。
在这个方面中,其中计算单元每进行一次迭代就会对该图中的任
意两个节点之间的相似度进行更新,这个过程是循环的,第K次循环 的结果将作为第K+l次循环的输入。
通过本发明,在时间复杂度上有显著的降低,这是最大的优点。其 次,本发明建立在合理的理论模型上,以几乎不损伤准确性来得到性 能的大幅改善。


结合随后的附图,从下面的详细说明中可显而易见的得出本发明
的上述及其他目的、特征及优点。在附图中
图1给出了根据本发明的基于图中的块结构来计算链接相似度的
方法的流程图2给出了根据本发明的计算块间节点相似度的流程图3给出了根据本发明的计算块间节点相似度的示例;
图4给出了根据本发明的基于图中的块结构来计算链接相似度的
系统的方框图5给出了根据本发明的计算单元的详细方框图6给出了能够实施本发明的一个示例环境的示意图。
具体实施例方式
为了更全面地理解本发明及其优点,下面结合附图及具体实施例 对本发明做进一步详细地说明。
首先,参考图1,对根据本发明的基于图中的块结构计算链接相似 度的方法进4亍说明。
如图l所示,基于图中的块结构来计算链接相似度的方法包括步骤
A、 输入一个图结构。该图结构一般是以矩阵形式给出,比如一个 IOOO个节点的图,用矩阵表示就是1000*1000大小的矩阵。这个矩阵
可以存放在文件中,也可以直接置于内存中。
B、 对该图结构中的块结构进行侦测。块结构是一种特殊的子图, 具有块间尽可能*>散,块内尽可能密集的特点。对块结构的侦测实际 上是一种子图划分。具体地说,将一个整体图划分为很多子图,使子 图内部的边数较多,而子图之间的边数较少。子图的个数可以由用户 指定的,当然也可以是预估的值,这个值使得计算性能近似最高。通 过切断尽可能少的边,对图进行划分的方法已有许多现成的算法可以 借鉴,如美国明尼苏达大学开发的METIS寿欠件包,此处不再细述。这 些算法也考虑到了划分出来的子图在规模上的平衡性。
C、 通过迭代来计算块间节点相似度。每进行一次迭代,就会对该 图中的任意两个节点之间的相似度进行更新,这个过程是循环的,第K 次循环的结果将作为第K+l次循环的输入。随后参考图2,对该步骤 进4亍详细地/说明。
D、 当相邻两次计算的结果收敛,或其接近程度已经达到用户的要 求,终止迭代循环过程。
接下来,参考图2,对计算块间节点相似度的过程更详细地说明。 图2给出了根据本发明的计算块间节点相似度的流程图。 如图2所示,计算块间节点相似度的步骤进一步包括 Cl、计算块的相似度。具体地说,将一个块^L为一个虚拟点,而 将块之间的关系视为虚拟边。确定每条虚拟边上的权重,即块A和块 B之间的虚拟边上的权重是这样一些实际存在的边数之和这些边的 一端是块A中的点,另一端是块B中的点。这样,可以得到一张小型 化的虚拟图。对这个图而言,基于与斯坦福大学研究人员提出的对相似度的直觉和定义,计算出块的相似度,更详细的过程可以参看他们
在SIGKDD 2002发表的^仑文"SimRank: A measure of structural -context similarity"。当然,块的相似度的计算并不局限于此,而是可利用其他 任何适当的方式。值得注意的是,这个计算过程会调用前一次迭代计 算的结果;如果是第一次迭代,则认为同一个虚拟点之间的相似度为1, 不同的虚拟点之间的相似度为0。
C2、计算块内节点相似度。对于同一个块中的所有节点而言,它 们刚好构成一张图。由于步骤C1中的相似度计算方法能够处理任意的 图结构中节点的相似度,本步骤也可以依照同样的方法来计算块内节 点的相似度。
C3、计算节点与所在块之间的距离。节点与所在块之间的距离反 映节点与块之间的紧密程度, 一般用该节点与块中所有节点相似度的 平均值来衡量。
C4、计算块间节点相似度。块间节点的相似度是由步骤C1中的块 的相似度和步骤C3中的这些节点与所在块间的距离的乘积来得到的。 对于处于不同块之间的节点而言,它们的相似度会与它们与各自所在 块的联系紧密程度(即距离)以及块的相似度大小有关。
C5、对步骤C2所计算的块内节点相似度和步骤C4所计算的块间 节点相似度进行组装以得到全局相似度。这里的组装,实际上就是将 块内节点相似度和块间节点相似度统一放置在一个大矩阵中,这个大 矩阵就是全局相似度。
现在,参考图3,对该步骤C4进行更详细地说明。图3给出了一 种近似估计块间节点相似度的示例。
如图3所示,假设要计算节点a和b之间的相似度,其中节点a属 于块A,节点b属于块B。
首先计算节点与所在块之间联系的紧密程度,即距离,我们用该节点到该块中所有节点(包括它自身)的相似度的平均值来衡量,如要
计算a与块A之间的距离,就是a与块A中所有节点的相似度之和, 再除以块A中的节点个数。同样,计算节点b与所在块B之间联系的 紧密程度。接下来,用a与A的距离,b与B的距离,A与B的相似 度这三者的乘积来近似估计块间节点相似度。
接下来,参考图4,对根据本发明的基于图中的块结构计算链接相 似度的系统进4亍详细地描述。
如图4所示,根据本发明的基于图中的块结构计算链接相似度的 系统包括输入单元、侦测单元、计算单元、以及终止单元。
输入单元用于输入一个图结构。该图结构一般是以矩阵形式给出, 比如一个1000个节点的图,用矩阵表示就是1000*1000大小的矩阵。 这个矩阵可以存;^文在文件中,也可以直接置于内存中。
侦测单元对该图结构中的块结构进行侦测。块结构是一种特殊的 子图,具有块间尽可能松散,块内尽可能密集的特点。对块结构的侦 测实际上是一种子图划分。具体地说,将一个整体图划分为很多子图, 使子图内部的边数较多,而子图之间的边数较少。子图的个数可以由 用户指定的,当然也可以是预估的值,这个值使得计算性能近似最高。 通过切断尽可能少的边,对图进行划分的方法已有许多现成的算法可 以借鉴。
计算单元用于通过迭代来计算块间节点相似度。每进行一次迭代,
就会对该图中的任意两个节点之间的相似度进行更新,这个过程是循 环的,第K次循环的结果将作为第K+l次循环的输入。随后参考图5, 对该计算单元进行详细地说明。
用户的要求时终止迭代循环过程。
接下来,参考图5,对计算单元进行更详细地说明。图5给出了根据本发明的计算单元的详细方框图。
如图5所示,计算单元进一步包括块的相似度计算模块、块内节 点相似度计算模块、距离计算模块、块间节点相似度计算模块、以及 组装模块。
块的相似度计算模块用于计算块结构之间的相似度。具体地说, 将一个块视为一个虚拟点,而将块之间的关系视为虚拟边。确定每条 虚拟边上的权重,即块A和块B之间的虚拟边上的权重是这样一些实 际存在的边数之和这些边的一端是块A中的点,另一端是块B中的 点。这样,可以得到一张小型化的虚拟图。对于任意一个给定的图, 根据斯坦福大学研究人员提出的对相似度的直觉和定义,可以计算出
块的相似度。当然,块的相似度的计算并不局限于此,而是可利用其 他任何适当的方式。值得注意的是,这个计算过程会调用前一次迭代 计算的结果;如果是第一次迭代,则认为同一个虚拟点之间的相似度 为l,不同的虚拟点之间的相似度为0。
块内节点相似度计算模块用于计算同 一个块结构中的节点的相似 度。对于同一个块中的所有节点而言,它们刚好构成一张图。由于上 面描述的相似度计算能够处理任意的图结构中节点的相似度,因此也 可以依照上述相似度计算来计算块内节点的相似度。
距离计算模块用于计算节点与所在块之间的距离。节点与所在块 之间的距离反映节点与块之间的紧密程度, 一 般用该节点与块中所有 节点的相似度的平均值来衡量。
块间节点相似度计算模块用于计算块结构间的节点相似度。块间 节点的相似度是由块的相似度计算模块所计算的块的相似度和距离计 算模块所计算的这些节点与所在块间的距离的乘积来得到的。对于处 于不同块之间的节点而言,它们的相似度会与它们与各自所在块的联 系紧密程度(即距离)以及块的相似度大小有关。
ii组装模块用于对块内节点相似度计算模块所计算的块内节点相似 度和块间节点相似度计算模块所计算的块间节点相似度进行组装以得 到全局相似度。这里的组装,实际上就是将块内节点相似度和块间节 点相似度统一放置在一个大矩阵中,这个大矩阵就是全局相似度。
下面参考图6对本发明的硬件结构示例进行说明。亳无疑问,图4 和5所示的每个模块或单元都可以用一个专用硬件来构成,同时这些 块同样也可以用通用信息处理设备来实现。
如图6所示,该计算机包括CPU外网单元,其中该单元包含了 CPU、 RAM、 ROM、以及输入/输出控制器,并且所有这些部件是透过主机控 制器而互连。该计算机还包括通信接口、存储设备、软盘驱动器、以 及图形控制器。特别地,软盘驱动器可对软盘进行读写,图形控制器 则驱动显示器。
CPU依照存储在ROM、 BIOS、以及RAM中的程序来操作,并且 由此控制每一个部分。图结构数据可通过多种方式输入设备输入,如 存储设备(硬盘,闪存),光驱,键盘输入或通过网络传输。在逻辑结 构上,这种图结构数据有多种表现形式,最常见的是邻接矩阵表示方 法。图结构随后会被读入存储设备。存储设备还存储供计算机使用的 本发明的程序、应用、OS等等的代码和数据。此后,所读取的程序和 数据将被加载到RAM中以供CPU使用。
从上述结构实例中可以看出,任何具有通用计算^l^功能的硬件都可 以用作本发明需要的硬件。应该指出的是,图6仅示出了用于实施本 发明实施例的硬件结构。相应地,对其他各种结构来说,只要对其可 以应用本发明实施例,那么这些结构都是可行的。此外,每一个上述 例示组件未必是本发明的必要组件。另外,本发明还可以使用硬件、 软件、或者软硬件组合来实现。
至此,已对本发明进行了描述。与同类方法横向比较,本发明提出的方法在时间复杂度上有显著的降低,这是最大的优点。其次,本 发明建立在合理的理论^=莫型上,以几乎不损伤准确性来得到性能的大 幅改善。
对于本领域的普通技术人员来说可显而易见的得出其他优点和修
述的具体说明及示例性实施例。因此,在不脱离由随后权利要求及其 等价体所定义的 一般发明构思的精神和范围的情况下,可对其做出各 种修改。
权利要求
1、一种基于图中的块结构来计算链接相似度的方法包括步骤A、输入一个图结构;B、对该图结构中的块结构进行侦测;C、通过迭代来计算块间节点相似度;D、当相邻两次计算的结果收敛,或其接近程度已经达到用户的要求,终止迭代循环过程。
2、 根据权利要求l的方法,其中步骤C进一步包括 Cl、计算块的相似度;C2、计算块内节点相似度;C3、计算节点与所在块之间的距离;C4、利用在步骤C1中计算的块的相似度和在步骤C3中计算的节 点与所在块间的距离来计算不同块之间的节点的相似度;C5、对步骤C2所计算的块内节点相似度和步骤C4所计算的块间 节点相似度进行组装以得到全局相似度。
3、 根据权利要求1的方法,其中图结构是矩阵形式。
4、 根据权利要求l的方法,其中在步骤C中每进行一次迭代,就会 对该图中的任意两个节点之间的相似度进行更新,这个过程是循环的, 第K次循环的结果将作为第K+l次循环的输入。
5、 一种基于图中的块结构来计算链接相似度的系统包括 输入单元,用于输入一个图结构;侦测单元,用于对该图结构中的块结构进行侦测; 计算单元,用于通过迭代来计算块间节点相似度; 终止单元,用于当相邻两次计算的结果收敛或其接近程度已经达 到用户的要求时终止迭代循环过程。
6、 根据权利要求5的系统,其中计算单元进一步包括 块的相似度计算模块,用于计算块结构之间的相似度块内节点相似度计算模块,用于计算同 一个块结构中的节点的相 似度;距离计算模块,用于计算节点与所在块之间的距离; 块间节点相似度计算模块,用于利用块的相似度计算模块所计算的块的相似度和距离计算模块所计算的节点与所在块间的距离来计算不同块之间的节点的相似度;组装模块,用于对块内节点相似度计算模块所计算的块内节点相似度和块间节点相似度计算模块所计算的块间节点相似度进行组装以得到全局相似度。
7、 根据权利要求5的系统,其中图结构是矩阵形式。
8、 根据权利要求5的系统,其中计算单元每进行一次迭代,就会对 该图中的任意两个节点之间的相似度进行更新,这个过程是循环的, 第K次循环的结果将作为第K+l次循环的输入。
全文摘要
一种基于图中的块结构来计算链接相似度的系统和方法,其中该方法包括步骤输入一个图结构;对该图结构中的块结构进行侦测;通过迭代来计算块间节点相似度;当相邻两次计算的结果收敛,或其接近程度已经达到用户的要求,终止迭代循环过程。本发明可在时间复杂度上有显著的降低。
文档编号G06F17/30GK101576905SQ200910078788
公开日2009年11月11日 申请日期2009年3月3日 优先权日2009年3月3日
发明者军 何, 刘红岩, 佩 李, 杜小勇, 蔡元哲 申请人:杜小勇
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1