论文|line算法原理代码实战和应用

搜索与推荐Wiki 搜索与推荐Wiki     2023-03-20     405

关键词:

1 概述

LINE是2015年微软发表的一篇论文,其全称为: Large-scale Information Network Embedding。论文下载地址:https://arxiv.org/pdf/1503.03578.pdf

LINE是一种基于graph产生embedding的方法,它可以适用于任何类型的graph,如无向图、有向图、加权图等,同时作者基于边采样进行了目标函数的优化,使算法既能捕获到局部的网络结构,也能捕获到全局的网络结构。

2 算法原理

2.1 新的相似度定义

该算法同时优化了节点的相似度计算方法,提出了一二阶相似度。

1、一阶相似度

一阶相似度用来描述的是两个顶点之间有一条边直接相连的情况,如果两个 u 、 v u、v uv 之间存在直连变,则其一阶相似度可以用权重 w u v w_uv wuv来表示,如果不存在直连边,则一阶相似度为0。

上图中,顶点6、7之间是直接相连的,且权重比较大(边比较粗),则认为顶点6、7是相似的,且一阶相似度较高,顶点5、6之间并没有直接相连,则两者的一阶相似度为0。

2、二阶相似度

二阶相似度描述的是两个顶点之间没有直接相连,但是他们拥有相同的邻居。比如顶点 u 、 v u、v uv 直接不存在直接相连,但是 顶点 u u u 存在其自己的一阶连接点, u u u 和 对应的一阶连接点 的一阶相似度可以形式化定义为: p ( u ) = ( w u , 1 , . . . , w u , ∣ V ∣ ) p(u) = (w_u,1, ..., w_u, |V|) p(u)=(wu,1,...,wu,V) ,同理可以得到顶点 v v v 和对应的一阶连接点的一阶相似度定义: p ( v ) = ( w v , 1 , . . . , w v , ∣ V ∣ ) p(v) = (w_v,1, ..., w_v, |V|) p(v)=(wv,1,...,wv,V) ,顶点 u 、 v u、v uv 之间的相似度即为 p ( u ) 、 p ( v ) p(u)、p(v) p(u)p(v) 之间的相似度。

上图中,顶点 5、6之间并没有直接相连,但是他们各自的一阶连接点是相同的,说明他们也是相似的。二阶相似度就是用来描述这种关系的。

2.2 优化目标

1、一阶相似度

对于每一条无向边 ( i , j ) (i,j) (i,j) ,定义顶点 v i , v j v_i, v_j vi,vj之间的联合概率为:
p 1 ( v i , v j ) = 1 1 + e x p ( − u i ⃗ ⋅ u j ⃗ ) p_1(v_i,v_j) = \\frac1 1+exp(- \\vecu_i \\cdot \\vecu_j) p1(vi,vj)=1+exp(ui uj )1
其中 u i ⃗ ∈ R d \\vecu_i \\in R^d ui Rd 为顶点 v i v_i vi 的低维向量表示(可以看作一个内积模型,计算两个item之间的匹配程度)。

同时定义经验分为:
p ^ 1 ( i , j ) = w i , j W \\hatp_1(i,j) = \\fracw_i,jW p^1(i,j)=Wwi,j
其中 W = ∑ i , j ∈ E w i , j W = \\sum_i,j \\in E w_i,j W=i,jEwi,j

为了计算一阶相似度,优化的目标函数为:
O 1 = d ( p ^ 1 ( ⋅ , ⋅ ) , p 1 ( ⋅ , ⋅ ) ) O_1 = d(\\hatp_1(\\cdot , \\cdot), p_1(\\cdot , \\cdot)) O1=d(p^1(,),p1(,))
其中 d ( ⋅ , ⋅ ) d(\\cdot , \\cdot) d(,) 是两个分布的距离,常用的衡量两个概率分布差异的指标为 KL 散度,使用 KL 散度并忽略常用项后有:
O 1 = − ∑ ( i , j ) ∈ E w i , j l o g   p 1 ( v i , v j ) O_1 = - \\sum_(i,j) \\in E w_i,j log \\, p_1 (v_i, v_j) O1=(i,j)Ewi,jlogp1(vi,vj)
一阶相似度只能用于无向图中。

2、二阶相似度

和一阶相似度不同的是,二阶相似度既可以用于无向图,也可以用于有向图。二阶相似度计算的假设前提是:两个顶点共享其各自的一阶连接顶点,在这种情况下,顶点被看作是一种特定的「上下文」信息,因此每一个顶点都扮演了两个角色,即拥有两个embedding向量,一个是顶点本身的表示向量,一个是该点作为其他顶点的上下文顶点时的表示向量。

对于有向边 ( i , j ) (i,j) (i,j),定义给定顶点 v i v_i vi 的条件下,产生上下文(邻居)顶点 v j v_j vj 的概率为:
p 2 ( v j ∣ v i ) = e x p ( u j ⃗ T ⋅ u i ⃗ ) ∑ k = 1 ∣ V ∣ e x p ( u k ⃗ T ⋅ u i ⃗ ) p_2(v_j|v_i) = \\frac exp(\\vecu_j^T \\cdot \\vecu_i) \\sum_k=1^|V| exp(\\vecu_k^T \\cdot \\vecu_i) p2(vjvi)=k=1Vexp(uk Tui )exp(uj T查看详情

论文|node2vec算法原理代码实战和在微信朋友圈的应用

...概述Node2vec是2016年斯坦福教授JureLeskovec、AdityaGrover提出的论文,论文的下载链接为:https://arxiv.org/pdf/1607.00653.pdf。其本质上是对Deepwalk的延伸,也是属于图神经网络种随机游走模型一类。不了解Deepwalk的可以看上一篇... 查看详情

论文|node2vec算法原理代码实战和在微信朋友圈的应用

...概述Node2vec是2016年斯坦福教授JureLeskovec、AdityaGrover提出的论文,论文的下载链接为:https://arxiv.org/pdf/1607.00653.pdf。其本质上是对Deepwalk的延伸,也是属于图神经网络种随机游走模型一类。不了解Deepwalk的可以看上一篇... 查看详情

论文|deepwalk的算法原理代码实现和应用说明(代码片段)

万物皆可Embedding系列会结合论文和实践经验进行介绍,前期主要集中在论文中,后期会加入实践经验和案例,目前已更新:万物皆可Vector之语言模型:从N-Gram到NNLM、RNNLM万物皆可Vector之Word2vec:2个模型、2... 查看详情

机器学习实战应用案例100篇(二十三)-粒子群算法从原理到实战应用案例(代码片段)

...群算法是由Kennedy和Eberhart在1995年提出的。正如在最初的论文中提到的, 查看详情

论文|deepwalk的算法原理代码实现和应用说明(代码片段)

万物皆可Embedding系列会结合论文和实践经验进行介绍,前期主要集中在论文中,后期会加入实践经验和案例,目前已更新:万物皆可Vector之语言模型:从N-Gram到NNLM、RNNLM万物皆可Vector之Word2vec:2个模型、2... 查看详情

论文|doc2vec的算法原理代码实现及应用启发(代码片段)

万物皆可Embedding系列会结合论文和实践经验进行介绍,前期主要集中在论文中,后期会加入实践经验和案例,目前已更新:万物皆可Vector之语言模型:从N-Gram到NNLM、RNNLM万物皆可Vector之Word2vec:2个模型、2... 查看详情

机器学习实战应用案例100篇-粒子群优化算法(pso)从原理到实战应用案例(附代码)(代码片段)

...群算法是由Kennedy和Eberhart在1995年提出的。正如在最初的论文中提到的,社会生物学家认为一群鱼或一群鸟在一个群体中移动,可以从所有其他成员的经验中获益。换句话说,当一只鸟在空中随机寻找食物时,鸟群中的所有鸟都... 查看详情

《graphembeddingline:算法原理,实现和应用》(代码片段)

...,或局部的?loss怎么定的问题 【GraphEmbedding】LINE:算法原理,实现和应用之前介绍过DeepWalk,DeepWalk使用DFS随机游走在图中进行节点采样,使用word2vec在采样的序列学习图中节点的向量表示。DeepWalk:算法原理,实现和应用?zh... 查看详情

论文|sdne的算法原理代码实现和在阿里凑单场景中的应用说明

1.概述SDNE(StructuralDeepNetworkEmbedding)算法是发表在KDD-2016上的一篇文章,论文的下载地址为:https://www.kdd.org/kdd2016/papers/files/rfp0191-wangAemb.pdfSDNE主要也是用来构建nodeembedding的,和之前介绍的n 查看详情

论文|doc2vec的算法原理代码实现及应用启发(代码片段)

万物皆可Embedding系列会结合论文和实践经验进行介绍,前期主要集中在论文中,后期会加入实践经验和案例,目前已更新:万物皆可Vector之语言模型:从N-Gram到NNLM、RNNLM万物皆可Vector之Word2vec:2个模型、2... 查看详情

swing算法介绍实现与在阿里飞猪的实战应用(代码片段)

...构比itemCF的单边结构更稳定,截止目前并没有公开的论文进行介绍和 查看详情

机器学习实战应用案例100篇(十七)-烟花算法从原理到实战应用

烟花算法(原理)1算法简介烟花算法(FireworksAlgorithm,简称FWA)是Tan和Zhu在2010年提出的基于模拟烟花爆炸产生火花这一自然现象的新颖的群智能算法。当一个烟花爆炸时,在它周围一定范围的区域内会产生一定数量的火花,但是... 查看详情

机器学习实战应用案例100篇(十七)-烟花算法从原理到实战应用

烟花算法(原理)1算法简介烟花算法(FireworksAlgorithm,简称FWA)是Tan和Zhu在2010年提出的基于模拟烟花爆炸产生火花这一自然现象的新颖的群智能算法。当一个烟花爆炸时,在它周围一定范围的区域内会产生一定数量的火花,但是... 查看详情

python应用实战案例-pythongeopandas包详解(附大量案例及代码)(代码片段)

前言以下为博主为大家准备的人工智能&算法研究类精品专栏,喜欢的小伙伴自行下载。深度学习100例全系列详细教程 深度学习算法原理介绍及应用案例tensorflow从入门到精通100讲 深度学习框架TensorFlow的应用案例手把... 查看详情

数学建模matlab应用实战系列(八十九)-critic法应用案例(附matlab和python代码)

前言该算法也是用来赋权重的一种方法。CRITIC是Diakoulaki(1995)提出一种评价指标客观赋权方法。该方法在对指标进行权重计算时围绕两个方面进行:对比度和矛盾性。其主要思路是利用指标的对比强度和冲突性来衡量指标权系... 查看详情

深入理解batchnorm的原理代码实现以及bn在cnn中的应用(代码片段)

...BatchNorm的原理、代码实现以及BN在CNN中的应用一、BatchNorm论文二、BatchNorm代码2.1torch.nn.BatchNorm1d2.2torch.nn.BatchNorm2d2.3BatchNorm层的参数γ,β和统计量2.3.1train模式2.3.2eval模式2.4代码:Pytorch实战演练三、BatchNorm在CNN中的应用3.1图解&#x... 查看详情

spark推荐系列之word2vec算法介绍实现和应用说明

...word2vec是Google2013年提出的用于计算词向量的工具,在论文EfficientEstimationofWordRepresentationsinVectorSpace中,作者提出了Word2vec计算工具,并通过对比NNLM、RNNLM语言模型验证了word2vec的有效性。word2vec工具中包含两种模型:... 查看详情