《Graph learning》

2023-11-07

上周发布的《图传播算法(上)》中讲了关于图传播算法的基本范式和PageRank算法,本文将延续上周的文章,继续讲解剩下的三个算法。


2· HITS

HITS(Hyperlink - Induced Topic Search)另一个典型的图传播算法,其所解决的问题与PageRank算法一样,在一个给定的由网页构成的有向图中,返回高质量的排名结果。与PageRank直接建模重要性排名指标不同的是,HITS更细致的建模了两个衡量指标,包括Authority值和hub值。

  • Authority:可理解为权威页面,一般包含高质量内容。

  • hub:可理解为导航页面,指向很多Authority页面。


其经验假设为:

  1. 被越多的hub页面所指向的页面,内容质量越高。

  2. 一个hub页面会尽可能地指向更高质量的内容页面。


很显然,其更新函数可量化为:

虽然HITS算法为每个页面都计算了两个指标,但是最后返回给用户的只是那些Authority值很高的页面。这样看来,HITS的思路只是在迭代过程中,利用hub值这一合理的中间指标来指导Authority值的精确计算,这种思考方式可以很快在后面算法中再次看到。


另外,在迭代过程中,为了保证算法的收敛性,HITS会对Authority值与hub值分别作为均方根归一化。

Weisfeiler-Lehman

Weisfeiler-Lehman算法通常被用在解决图的相似性问题上,虽然算法要解决的问题聚焦在Graph层面上,但是其立足点还是在节点上,如果我们能够找到一种衡量节点独立性(unique)的方法,那么我们就可以将图视作一个包含这些独立性节点的集合,两张图的相似性可以转化为两个集合的Jaccard相似度。


何谓节点独立性?其实在前面《浅析图卷积神经网络》中,我们谈到图中的一个节点同时具有attribute和structure的信息,需要同时从这两方面来对节点作Identifaction。很自然地,structure信息还是通过节点的邻居来刻画,Identifaction可以通过hashing来高效判断。如果设Φ(vi)表示节点vi的特征信息(attribute),那么更新函数可量化为:

其中,h是一个哈希函数,理想的性质是满足仅有相同的输入才有相同的输出,这里相当于对每个节点都计算了一个指纹(fingerprint),算法里需要不断地迭代更新上式,直到独立性节点个数不再上升,但实际为了计算效率与效果的综合考虑迭代2~3轮就可以了。


 

下面举例说明Wisfeiler-Lehman算法

给定两图G和G',其中每个节点都已经打上了标签(实际应用中,有些时候我们并拿不到节点的标签,这时可以对节点都标上“1”这个标签)

要比较G和G'的相似性,我们来看看weisfeiler-lehman算法是怎么做的:


1、aggregate邻居节点的标签得到一个标签的字符串,对字符串进行升序排列。

2、对字符串进行哈希处理,这里生成了一个一一映射的字典,这一步也可以使用其它的字符串哈希函数,只要保证碰撞率尽量小就可以。

  3. 将哈希过的值重新赋值给相应的节点

这样第一轮迭代之后,G={6、6、8、10、11、13},G'={6,7,9,10,12,13}于是利用Jaccard公式就可以计算出G和G`的相似度了,如果需要更严格的对比,可以持续迭代上述过程。


4· RVE2

由于笔者所属行业的关系,所以这里选了一个解决恶意评分场景下问题的算法,文章发表在WSDM2018会议上,名为《RVE2:Fraudulent User Prediction in Rating Platforms》。RVE2也是一个非常典型的图传播算法,其更新公式虽然看上去比较复杂,但是整个思路还是十分符合一般范式的。


首先,我们来把背景问题定义下,给定一个有向的,带有权重的二部图Bipartite Graph G=(U,R,P)。其中,U代表用户集合,P代表商品集合,R表示所有边的集合,边(μ,p)表示用户μ对商品p的一次评分操作,设评分为score(μ,p),score(μ,p)∈[-1,1]。

我们的问题是找到是哪些恶意的用户在进行虚假评分,这里算法分别对用户、商品、评分设计了衡量指标:

  • User-fairness(用户-公平度),公正的用户会依据商品的质量作出如实的评价,越多的公正用户对商品进行评价,我们就能够确定商品的真实质量指标,F(u) ∈ [0, 1], 1 表示100%公正的用户。


  • Products-goodness(商品-质量),商品的质量是对商品价值的真实衡量。G(p)∈[-1,+1],“+1”表明商品具有很高的质量,“-1”表明商品比较劣质。


  • Rating-reliability(评分-可靠度),可靠度指标R(μ,p)∈[0,1],可靠度为0说明用户对商品的评分不可靠,反之则可靠。


刻画了上述三个指标之后,可以总结出下面5条经验假设:

  1. 质量好的商品得到更高的评分

  2. 质量好的商品得到更多可靠的正面评分

  3. 可靠的评分在数值上更接近商品的质量

   4. 可靠的评分来自公正用户

   5. 给出越可靠评分的用户公正度越高

可以发现算法以可靠度为逻辑枢纽去衡量另外两个指标,这与HITS算法里面以hub值去指导Authority值的计算是相通的,只是这里的衡量指标更多,逻辑关系更复杂。


基于上面的5条经验假设,作者设计了下面三个更新公式:


可以看到,上述更新公式会趋向于忽略低可靠度的评分,而加大高可靠度评分的权重。也可证明,更新公式全部符合上述五条经验假设。


作者在论文后面详细阐述了初始化,融合先验异常信息以及怎么在RVE2上面做监督学习的思路,实验部分的效果也十分理想,有兴趣可以去看看原轮文。

总结

这一章我们通过4个算法介绍了图传播算法的一般范式,其核心就在于:


老实说,这样一种解决问题的方法存在很大的门槛,需要系统逻辑式地去思考并量化思维过程,这种能力唯有来源于大量的学习和思考锻炼。当然,如果比较走运,研究的数据有大量的标记集,我们也可以让图卷积等基于 learning 的方法去进行监督学习,让模型自动化地学习出数据内在的规律模式。


参考链接:

http://www.jmlr.org/papers/volume12/shervashidze11a/shervashidze11a.pdf

https://cs.stanford.edu/~srijan/rev2/


想要学习和探讨图学习相关内容的小伙伴可以关注我们的微信公众号geetest_jy,还可以添加我们的技术助理geetest1024,进入技术交流群和作者以及众多技术小伙伴探讨问题!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Graph learning》 的相关文章

随机推荐

  • Spring Security在前端后端分离项目中的使用

    Spring Security 是 Spring 家族中的一个安全管理框架 可以和Spring Boot项目很方便的集成 Spring Security框架的两大核心功能 认证和授权 认证 验证当前访问系统的是不是本系统的用户 并且要确认具
  • H5 调用扫一扫识别条形码 并返回内容值

  • 计算机网路课程设计——电子邮件客户端的设计与实现——接收邮件(POP3协议)

    上一篇已经写了SMTP发送邮件客户端的代码 https blog csdn net dayexiaofan article details 85257320 这一篇我们来写一下POP3接收方的代码 注意这里的密码也是授权码 看代码 如果你能
  • React、Vue和Angular的优缺点

    React React 是一个用于构建用户界面的 JAVASCRIPT 库 React 主要用于构建 UI 很多人认为 React 是 MVC 中的 V 视图 React 起源于 Facebook 的内部项目 用来架设 Instagram
  • 数组的定义与使用

    一 数组的基本用法 1 什么是数组 数组本质上就是让我们能 批量 创建相同类型的变量 如果我们需要创建一个数据 int a 需要创建两个数据 int a int b 需要创建三个数据 int a int b int c 那如果要创建100万
  • 第五章:存储系统和结构

    5 1存储系统的组成 存储器的分类 1 按存储器在计算机系统中的作用分类 高速缓冲存储器 主存储器 辅助存储器 2 按存取方式分类 随机存取存储器RAM 只读存储器ROM 顺序存取存储器SAM 直接存取存储器DAM 3 按存储介质分类 磁芯
  • 【VScode设置免密登录及出现的问题】

    前言 使用VScode进行远程服务器代码调试时 每次都要输入密码 很麻烦 有木有 之前的操作请看 安装并使用VScode进行远程服务器代码调试及遇到的问题和解决办法 一 打开终端 登录上之后 创建一个新的终端 二 创建公钥和私钥 命令如下
  • Attention! No symbol directories found - please check your native debug configuration</font>

    我出现问题的版本是Android Studio2 2 3 之前项目是正常的 可以调试JNI代码 但是突然有一次不知道什么原因就无法调试 断点无法断下 调试时有这样的警告 Now Launching Native Debug Session
  • java进阶篇--TCP 为什么需要三次握手?

    TCP 协议是我们每天都在使用的一个网络通讯协议 因为绝大部分的网络连接都是建立在 TCP 协议上的 比如你此刻正在看的这篇文章是建立在 HTTP Hypertext Transfer Protocol 超文本传送协议 应用层协议的基础上的
  • 手把手教你微信第三方平台开发

    本文适合想接入第三方平台开发的同学 通过真实经验大致讲解一下相关业务 建议收藏以备不时之需 一 什么是微信开放平台 微信开放平台地址 微信开发平台实际上就是给微信外部人员提供微信能力的平台 我们可以在这个平台创建相关的应用 管理对应的认证
  • React服务端渲染框架Next.js入门之旅三:路由跳转和参数传递

    不带参数 静态路由 带参数 根据参数不同显示不同内容 动态路由 一 路由跳转 标签式跳转 在pages下新建juanA js以及juanB js作为两个跳转页面 juanA js import Link from next link exp
  • Vue => Vue监听组件滚动事件

    在dom元素上加ref 利用this refs recordwrapper获取到元素 添加滚动监听事件 希望得到的结果是滚动触发事件handleScroll 现在情况是失效 并没有监听到滚动动作 或者说滚动动作并没有出发事件 问题 监听事件
  • hadoop之hdfs分布式文件

    架构 HDFS是一个主从 Master Slaves 架构 由一个NameNode和一些DataNode组成 面向文件包含 文件数据 data 和文件元数据 metadata NameNode 负责存储和管理文件元数据 并维护了一个层次型的
  • 动态的为实体字段添加注解/注解属性

    可以动态的给实体添加注解 比如 导出表格的时候 根据条件决定是否导出该字段的列等使用 本例子将所有代码都放入工具类中 实际上有些不能实例化到内存中 只能作为一部分代码放在逻辑中 此种代码以再程序中标注 另一部分是可以持久化到内存 使用完工具
  • 移动端750怎么做响应式

    minimum scale 1 0 这个是同时设置最小缩放比例为1 0 在这里不写 user scalable no 禁用用户缩放功能 这样做的目的是为了确保网页在各种设备上都能够有合适的展示效果 缩放比例的限制可以避免用户过度缩放导致页面
  • JAVA IDEA中sout无法正常弹出,System.out.print,和System.out.println以及其他语句标红报错的问题。

    问题 在写代码时发现sout无法正常识别 println方法和println方法标红报错显示无法解析 问题分析 使用输出函数属于代码 而类中只能容纳变量以及方法 代码应该放在代码块 即方法 中 解决方法 在类中写一个方法 将代码放入方法中
  • macOS下 anaconda 虚拟环境及依赖包管理

    文章目录 环境管理 适用mac 1 2 创建虚拟环境失败后 排查问题 并再次成功创建虚拟环境的过程 依赖包管理 环境管理 适用mac 检查conda版本或是否已经安装 base lzh mac conda version conda 4 1
  • Yolo5の网络结构训练策略

    搬来的可能还是熟人的 抱歉啊 为了自己学习 讲解yolov5模型结构 数据增强 以及训练策略 官方地址 https github com ultralytics yolov5 yolov5模型训练流程 https blog csdn net
  • qt 编译时提示error: multiple definition of

    今天在用QT 5 4 1 编译程序时 提示error multiple definition 错误 以下红色字体为错误提示 D Wind PLT Projects BCS tmp moc Cntrlane cpp 156 error mul
  • 《Graph learning》

    上周发布的 图传播算法 上 中讲了关于图传播算法的基本范式和PageRank算法 本文将延续上周的文章 继续讲解剩下的三个算法 2 HITS HITS Hyperlink Induced Topic Search 另一个典型的图传播算法 其