一:Pagerank:
PageRank是Google用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度
对于某个互联网网页A来说,该网页PageRank的计算基于以下两个基本假设
数量假设:在Web图模型中,如果一个页面节点接收到的其他网页指向的入链数量越多,那么这个页面越重要。
质量假设:指向页面A的入链质量不同,质量高的页面会通过链接向其他页面传递更多的权重。所以越是质量高
的页面指向页面A,则页面A越重要。
基本思想
如果网页T存在一个指向网页A的连接,则表明T的所有者认为A比较重要,从而把T的一部分重要性得分赋予A。
这个重要性得分值为:
PR(T)/L(T)
其中PR(T)为T的PageRank值,L(T)为T的出链数
则A的PageRank值为一系列类似于T的页面重要性得分值的累加。
简单计算
假设一个由只有4个页面组成的集合:A,B,C和D。如果所有页面都链向A,那么A的PR(PageRank)值将是B,C及D的和:
PR(A) = PR(B) + PR(C) + PR(D)
继续假设B也有链接到C,并且D也有链接到包括A的3个页面。一个页面不能投票2次。所以B给每个页面半票。
以同样的逻辑,D投出的票只有三分之一算到了A的PageRank上:
PR(A)=PR(B)/2 + PR(C)/1 + PR(D)/3
换句话说,根据链出总数平分一个页面的PR值。
PR(A)=PR(B)/L(B) + PR(C)/L(C) + PR(D)/L(D)
修正PageRank计算公式
由于存在一些出链为0,也就是那些不链接任何其他网页的网, 也称为孤立网页,使得很多网页能被访问到。因此需要对 PageRank公式进行修正,即在简单公式的基础上增加了阻尼系数(damping factor)q, q一般取值q=0.85
其意义是,在任意时刻,用户到达某页面后并继续向后浏览的概率。 1- q= 0.15就是用户停止点击,随机跳到新URL的概率)的算法被用到了所有页面上,估算页面可能被上网者放入书签的概率。
分解转移矩阵
迭代公式:X = XP转移矩阵:P
=q ×P` + (1-q) × E
E=IT·VP,VP=(1/n 1/n ... 1/n) ,P` = P +DT·I
其中,P`表示对网络中存在的悬挂页面处理后的转移矩阵
D=(d1 ... dn), di =1/n ,页面i是悬挂页面,n为总页面数
di =0 ,otherwise
新的迭代公式:
X(K+1)=XK·P``
=q·(XK·P+XK·DT·I)+(1-q)(XK·IT)VP
可以将计算过程分解成三部分分别处理
-
XK·P的处理
这部分是处理其他页面链向当前页面,对当前页面产生的贡献
令B=XK·P,Pji=1/N(j) , 页面j->i ( N(j)为也变j的出度)
Pji=0,otherwise
B(i)=X1KP1i +X2KP2i+...+XnKPni
=∑XjKPji(j=1,n)
=∑XjK/N(j)(j=1,j->i)
所以计部分的计算可以转化为提前建立好指向页面A的所有页面的ID,并计算好所有页面的出度。
在本题库模型中每个实体都有一个URI,根据这个ID建立投票数据,和出度数据,以便用于迭代计算XK·DT·I的处理
令C=XK·DT·I
其中XK·DT =∑XiK · di
=1/n · ∑XiK (i=1,n N(i)=0)
令a= ∑XiK,那么这一部分就转化为C=(a/n ... a/n) ,其中a表示本轮计算中所有出度为0的页面PR值的和(1-q)(XK·IT)VP的处理
令E= (1-q)(XK·IT)VP
XK·IT = ∑XiK
=S (S为所有网页PR值的和)
而VP=(1/n ... 1/n),所以E=(1-q)·S·(1/n ... 1/n)
= (1-q)(s/n ...s/n)
结果的相对大小,即不影响排序。如果将所有网页PR初始值设为1,那么s/n=1,这部分就是(1-q),无需计算
模型建立
以演唱实例作为网络节点,通过演唱实例中的虚拟歌曲,歌手,专辑构建连接关系。同歌手下的演唱实例间互相连接,同专辑下的演唱实例互相建立连接,歌单中的歌曲互相建立连接。
二:HITS:
HITS算法将网页分为两类,即hubs和authorities,而且每个页面也有两个级别,即hubs(中心级别)和authorities(权威级别)。Authorities是具有较高价值的网页,依赖于指向它的页面;hubs为指向较多authorities的网页,依赖于它指向的页面。HITS算法的目标就是通过迭代计算得到针对某个检索提问的排名最高的authority的网页。
算法的基本思想:相互增强关系 基本假设1:一个好的“Authority”页面会被很多好的“Hub”页面指向; 基本假设2:一个好的“Hub”页面会指向很多好的“Authority”页面;根集合: 将查询q提交给基于关键字查询的检索系统,从返回结果页面的集合取前n个页面,作为根集合(root),root满足:
1.root中页面数较少 2.Root中的网页时与查询q相关的网页 3.Root中的网页包含较多权威(Authority)网页扩展集合base: 在根集合root基础上,HITS算法对网页集合进行扩充(参考图1),扩充原则是:凡是与根集内有直接连接指向关系的网页都被扩充到集合base,无论是有链接指向根集内页面也好,或者是根集页面有链接指向的页面也好,都被扩充进入扩展网页集合base。HITS算法在这个扩充网页集合内寻找好的“Hub”页面与好的“Authority”页面。
![](https://app.yinxiang.com/shard/s24/res/21cec124-9ef7-4912-b8fa-6e88a2cb831d/~Z4RGT4%24~W1KA72N%28O10%29D0.png)****
算法描述:网页a(i)在此轮迭代中的Authority权值即为所有指向网页a(i)页面的Hub权值之和:
网页a(i)的Hub分值即为它指向的页面的Authority权值之和:
模型建立
在音乐本体库中,每个实体的结构可以看做一个网页:
例如上图中,名为“歌曲1”的网页有两个出链,歌手、专辑。在模型中,输入内容为歌曲名,root集合为与搜索歌曲同名的所有歌曲网页(这里是为了防止HITS算法中主题漂移问题),base集合为root集合扩展出来歌手网页,专辑网页:
因为我们的搜索queey为一首歌曲,目的是为了找到最合适唱这首歌的歌手,因此最终结果将根据结合的方式给出:歌曲的Authority与其对应歌手的Authority之和
三:SimRank:
SimRank算法是由美国斯坦福大学的Glen Jeh和Jennifer Widom二人提出的,主要利用图的全局信息来计算任意两个节点间的相似度。SimRank的思想是:两个节点的邻居节点相似,那么这两个节点也相似。跟基于共现的相似度算法比较,它采取的是一种比较”间接"的方式,即A和B相似,C和D相似,那么,如果A和C相似,则B和D也相似。
SimRank算法可用于社会网络中的用户推荐等的实现,比如在某一个社交网中,由用户之间的好友关系构成用户关系图,经过一些社区划分算法之后,会出现多个子社区。在子社区计算中,可以用Simrank算法计算用户两两之间的形似度,按照相似度从高到低,为用户推荐好友。
上图为某相关公司的员工关系网络图,不同类型的节点表示不同类型的员工。员工之间可能存在一种联系,假设员工A和员工B都与项目经理C相连,那么员工A和B可能同属一个部门,同时被C领导,他们之间存在一种相似关系。假设项目经理C和D之间存在相似关系(可能是同公司或者同行业等),那么,分别与C和D相连的员工E和F之间也有形似关系。
Simrank算法通常应用于图算法中,假设图G是一个无向图,a和b表示图上任意两个节点,I(a)表示节点a相连的节点集合,同理,I(b)表示与节点b相连的节点集合,则节点a和节点b的相似度SimRank公式表示如下:
其中,C为衰减系数,取值为0到1,一般去0.8。|I(a)|和|I(b)|分别表示与节点a和b相连的节点的集合大小,为正整数。根据公式可知,节点a和节点b的相似度等于分别与a和b相连的节点之间的两两相似度的平均值。
Simrank算法是一种递归迭代的过程,初始时,节点与自身的相似度最高,一般设为1,与其他节点的相似度为0,如:
假设在第k迭代是,节点a,b之间的相似度用Rk(a,b)表示,那么,第k+1次迭代是,a和b只见的相似度为:
当迭代次数足够多(趋向无穷)时,R(a,b)就是节点a和节点b的相似度。
SimRank算法复杂度较高,用d表示节点a,b的入度积的平均值,n为阶段的数目,k表示迭代次数,则该算法时间复杂度为:
搜索引擎的检索结果页下方一般会提示多个相似的搜索关键词,这些词可以被看作查询关键词query的rewriting。在计算广告中,当某一个query没有对应的bid phase出价广告,或者该query对应的bid phase较少的时候,可以利用query rewriting获取相似query对应的广告进行显示,以期望获得更多的click。相似query的确定可以利用用户session中的搜索关键词上下文,但此方法需要确定query的边界,例如用户搜索过程中可能会突然跳到一个完全不相干的搜索,然后又跳回来。或者利用传统的文本相似度匹配,而由于query一般都很短,传统相似度匹配的语料也不足。
Simrank
Simrank算法是一种用于衡量结构上下文中个体相似度的方法,直观上的含义是利用已有个体的相似度来推算其他与有关联个体的相似度。形式化的定义如下:
有向图G={V,E}中,节点a的入边集合记为I(a),而出边集合记为O(a),则两个节点a,b(a != b时)相似度s(a,b)按照如下公式计算,其含义是个体a,b的相似度取决于所有与a,b相连节点的相似度,s(a,b)∈[0,1];当a=b时,s(a,b)=1;如果a != b,且只有同一个入节点c,我们不希望从c计算得到的s(a,b)也为1,因此c做为衰减因子,取值是[0,1],即s(a,b) = C。
对于二分图G’ = (V1,V2,E),对于任意的(A,a)∈E,有A∈V1和a∈V2,则所有V1集合中的节点相似度按照出度O(A)计算。V2集合中的节点相似度则按照上述公式,利用入度I(a)计算。
在搜索广告中,把query和ad看作节点,当用户搜索某个查询关键词q时,点击了广告a,则建立q至a的一条边,这样构成一个由query和ad组成的二分图G=(V,E),其中V=Vq∪Va,任何边e=(q,a,w),q∈Vq并且a∈Va,可以利用simrank算法来求query之间的相似度。E(q)表示q的边,N(q)表示E(q)的个数:
按照上述算法,我们看以下的例子,假设C等于0.8,则利用上述公式计算出的sim(pc,camera)的相似度在前5次迭代中都大于sim(camera,digital camera),但从直观上说,由于camera和digital camera的共同邻居较多,应该具备更高的相似度,而simrank的结果是反直观的。针对上述问题,Antonellis等人在VLDB 08上提出了Simrank在计算广告方面的改进——Simrank++。
Simrank++
Simrank++的改进主要包括两点,一是针对上面的问题对sim(q,q)进行调整,如果两个节点共同节点**{E(q)∩E(q
)}**越多,则给予这两个节点相似度更高的权值。
按照上述调整后,上面示例的计算结果如下。同时Antonellis等人也证明了,如果迭代的次数足够多,对于未调整前的simrank,最终sim(pc,camera)会和sim(camera, digital camera)相等,但实际使用中肯定无法计算那么多次迭代。
四:NetClus:
异构网络中基于排序模型的聚类算法
针对异构网络一种新的基于排序模型的聚类算法。这里的异构网络主要指星型结构的网络模型,其主要特点是:网络中包含多种类别的节点,其中一种为主节点(target object),以及其他属性节点(attribute object),主节点和属性节点都有链接关系。以论文领域举例,论文,作者,关键词,发表论文机构组成一个星型网络模型,其中论文为target object,作者,关键词,发表论文的机构等都为attribute object。该算法利用不同节点之间的链接关系构建了两种排序模型(Simple Ranking,Authority Ranking),并使用排序模型得到的节点概率分布构建高质量的用于描述节点在不同簇下分布的向量,从而完成聚类过程。聚类稳定后每一个簇都相当于一个领域,例如数据库领域,管理领域等。利用排序模型计算稳定聚类下每个簇中节点的概率分布,便可以得到该领域下,各属性节点的排序状况。
算法的主要步骤如下:
(流程图在这里展示不开,请打开http://www.xmind.net/embed/5TKK/)