SimRank--基于结构的相似度度量方法学习笔记

详见:Glen Jeh 和 Jennifer Widom 的论文SimRank: A Measure of Structural-Context Similarity?

一、简介

  1. 目前主要有两大类相似性度量方法:

    (1) 基于内容(content-based)的特定领域(domain-specific)度量方法,如匹配文本相似度,计算项集合的重叠区域等;

    (2) 基于链接(对象间的关系)的方法,如PageRank、SimRank和PageSim等。最近的研究表明,第二类方法度量出的对象间相似性更加符合人的直觉判断。

  2. Simrank的基本思想是:如果两个实体相似,那么跟它们相关的实体应该也相似。比如在图一中如果a和c相似,那么A和B应该也相似。
  3. SimRank的特点:完全基于结构信息,且可以计算图中任意两个节点间的相似度。

    图一

二、基本公式

  • 在普通的同构网络中:

    其中,s(a,b)是节点a和b的相似度Ii(a)Ii(a)表示a的第i个in-neighbor。参数c是个阻尼系数,它的含义可以这么理解:假如I(a)=I(b)={A},按照上式计算出sim(a,b)=c*sim(A,A)=c,很明显,c应该大于0小于1,所以c∈(0,1),论文中c都设为了0.8。还有一种理解是说,两个节点间相隔的节点越多,相似度衰减的越厉害。

  • 在二分网络中,如图一所示:

    理解:

    • A和B之间的相似度等于A,B出度间相似度的平均值。

      a和b之间的相似度等于a,b入度间相似度的平均值。

    • 如果A,B分别代表顾客A和顾客B,a,b,c代表三件商品的话。买家A和B的相似度等于他们购买的物品之间相似度的平均值,物品a和b的相似度是购买它们的买家之间相似度的平均值。

三、朴素计算方法(矩阵计算)

利用上面的公式即可进行simrank的编码实现,编程实现部分本文不考虑,如果读者感兴趣可以参考博客http://www.cnblogs.com/zhangchaoyang/articles/4575809.html

四、理解simrank的物理意义(Random Surfer-Pairs Model)

  1. expected distance,即为两节点间步数的平均值

    u为出发点,v为终点且不为中间节点。引入图二帮助理解,如图中所示,从u节点到节点v有2条路径,公式中t即代表路径,例如t=w1–w2–w3–w4,为u到v的一条路径,l(t)代表路径t的长度,即为t中的步数,此处若t=w1–w2–w3–w4,则l(t)为3。p[t]为选择路径t的概率,它的值为1/o(wi)的乘积,出度的倒数的乘积。———sigma(概率*步数)= 两节点间步数的平均值。

    图二

  2. Expected Meeting Distance(EMD)

    Note:分别以相同的速度从a,b节点同时出发,x点为终点,即最后在x节点相遇。

    **存在路径无限长问题

    图三

    如在图三(a)中,任意的a,b两点永远不会相遇,路径l(t)无限长,导致相似度无限大。

    针对上面的问题:

    1)参考pagerank方法,给它一个跳出循环的机会,给一个小概率可以跳到循环外某一随机点上。

    2)本文中采用了函数映射的方法,将l(t)映射为指数函数并且指数函数可以满足题意。两点相遇所需要的平均步数越大,两点间相似度越小,最小为0;两点间相遇需要的步数为0时,即两点为同一点时,两点间相似度最大,值为1。

    ——所以函数映射以后,引出Expected-f Meeting Distance的概念

  3. Expected-f Meeting Distance

    define s’(a, b), the similarity between a and b in G based on expected-f meeting distance, as

    其中,c是(0,1)间的常数。

    有了上面的概念以后,我们可以计算:

  4. Equivalence to SimRank,有了上面这个概念,接下来推导相似迭代形式的s‘(a,b),最后得到实际上:s‘(a,b) = s(a,b),s(a,b)为上面提到的同构网络中的基本公式。推导过程如下,最终可以得

  5. Theorem. The SimRank score, with parameter C, between two nodes is their expected-f

    meeting distance traveling back-edges, for f(z) =.

    两节点间simrank相似度的值即为此两节点间期望-f相遇距离,也就是(随机漫步所有的

    可能性)从这两个节点出发到相遇时所需要的步数的平均数。

五、回顾总结:

1)simrank的基本思想和主要特点

2)simrank的基本公式

3)理解Simrank的物理意义Theorem.

时间: 2024-11-15 05:45:32

SimRank--基于结构的相似度度量方法学习笔记的相关文章

基于CentOS7上的搭建javaweb环境 - 学习笔记

一, 概述 上一篇记录了安装CentOS7的基本步骤及配置,现在要讲如何搭建基于CentOS7环境的javaweb环境了,我以 mysql + jdk1.8.0_91 + apache tomcat7.0.69 为例进行讲述. 二, 安装步骤 1, 首先在CentOS7下在线安装mysql数据库服务 (1)先查看是否已安装了mysql rpm -qa | grep mysql (2)若安装了,可以卸载,再重新安装 yum -y remove mysqlxxxxx (3)安装 yum -y ins

读详解Linux配置iSCSI方法--学习笔记

http://tech.watchstor.com/storage-module-121394.htm http://blog.csdn.net/holandstone/article/details/7963822 iSCSI(互联网小型计算机系统接口)是一种在Internet协议网络上,特别是以太网上进行数据块传输的标准,是一种集成了IP和SCSI的技术.它最大的特点就是让标准的SCSI命令能够在TCP/IP网络上的主机系统(启动器)和存储设备(目标)之间传送.iSCSI是基于IP协议的技术

基于JDK1.8的LinkedList源码学习笔记

LinkedList作为一种常用的List,是除了ArrayList之外最有用的List.其同样实现了List接口,但是除此之外它同样实现了Deque接口,而Deque是一个双端队列接口,其继承自Queue,所以LinkedList同样可以用来模拟队列,栈以及双端队列. 一.基本用法 因为LinkedList是基于链表实现的,所以注定其插入和删除操作速度要快于ArrayList,但是由于其是链表结构,所以其随机访问查找检索速度慢于基于数组的ArrayList. 这里先主要说一下LinkedLis

OKR 方法 学习笔记

最近公司兴起了对OKR这个词的讨论,并且听到时总会伴随提到KPI,提到绩效考核.那OKR到底是什么呢?与KPI的区别在哪里?与绩效考核有什么关系?它与我们现在推行的敏捷开发有啥关系呢?因此,就到网上查了些资料,加上个人的一些经验和理解,尽量用少的篇幅,整理成了这篇文章. 一.什么是OKR 我们先来看下什么是ORK,OKR的全称是Objectives and Key Results,即目标与关键成果法.它是一套定义和跟踪目标及其完成情况的管理方法. 一般人看到OKR都会想起Google.事实上,O

[其他]计算机网络-自顶向下方法 学习笔记

计算机网络与因特网 Nobody no why, it just works! by Qijd 一.发展史 分组交换 1961-1972 专用网络和网络互联 开始产生TCP UDP等协议 网络的激增 1980-1990 因特网爆炸 29世纪90年代 万维网应用出现 二.基本构成 core - edge - resourse 资源子网与通信子网构成计算机网络 端系统通过 因特网服务提供商 ISP(InternetServiceProvider)接入因特网 端系统.分组交换机和其他因特网部件通过pr

基于.NET的CAD二次开发学习笔记一:CAD开发入门

1.AutoCAD .NET API由不同的DLL文件组成,它们提供用于访问图形文件或AutoCAD应用程序的包含丰富的类.结构.方法和事件.每一个DLL文件都定义不同的使用基于功能的库组织组件的命名空间. 下面是你将频繁地要使用的AutoCAD .NET API 的三个主要的DLL文件: AcDbMgd.dll. 当使用图形文件中的对象时使用这个DLL文件. AcMgd.dll. 当使用AutoCAD应用程序时使用这个DLL文件. AcCui.dll. 当使用自定义文件时使用这个DLL文件.

基于CentOS6.5的LNMP下memcached学习笔记的整理

1.概述 Memcached是一个C语言编写的高性能分布式的内存对象缓存系统,用于减少Web应用直接跟数据库交互,从而减轻数据库负载压力,将一些经常访问的数据对象以K/V(键/值)对的形式存放在内存中作为缓存数据.缓存是一种加速应用向后端服务器读取数据的优化手段,其思想是用对内存的读取换取直接对磁盘数据库中数据的操作,以提高web应用程序的访问速度,从而实现web动态页面高性能.高并发的访问. Memcached是通过C语言Danga Interactive开发编写的,使用libevent框架实

dojo/dom-construct.toDom方法学习笔记

toDom方法用来将html标签字符串转化成DOM节点.1.7之后toDom方法被分配到了dom-construct模块. require(["dojo/dom-construct"], function(domConstruct){ // Take a string and turn it into a DOM node var node = domConstruct.toDom("<div>I'm a Node</div>"); });

基于JDK1.8的String源码学习笔记

String,可能是学习Java一上来就学习的,经常用,但是却往往只是一知半解,甚至API有时也得现查.所以还是老规矩,倒腾源码. 一.java doc 这次首先关注String的doc,因为其实作为这么完备的语言,我感觉java 的doc是写的非常清楚的. /*Strings are constant; their values cannot be changed after they * are created. String buffers support mutable strings.