<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Graphlet on bitJoy</title><link>https://bitjoy.net/tags/graphlet/</link><description>Recent content in Graphlet on bitJoy</description><generator>Hugo -- 0.148.2</generator><language>en</language><lastBuildDate>Sat, 14 May 2022 10:22:26 +0800</lastBuildDate><atom:link href="https://bitjoy.net/tags/graphlet/index.xml" rel="self" type="application/rss+xml"/><item><title>CS224W（1.14）Lecture 2. Traditional Methods for ML on Graphs</title><link>https://bitjoy.net/posts/2022-05-14-cs224w-0114-lecture-2-traditional-methods-for-ml-on-graphs/</link><pubDate>Sat, 14 May 2022 10:22:26 +0800</pubDate><guid>https://bitjoy.net/posts/2022-05-14-cs224w-0114-lecture-2-traditional-methods-for-ml-on-graphs/</guid><description>&lt;h1 id="前言">前言&lt;/h1>
&lt;p>这节课主要介绍传统的图机器学习方法。传统方法主要分为两步，第一步人工设计特征，第二步使用各种机器学习方法进行预测。因此，特征工程在传统图机器学习方法中有很重要的地位。本节课主要介绍图上的特征工程方法，分别介绍针对节点（node-level）、边（link-level）和图（graph-level）的特征工程方法。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://bitjoy.net/posts/2022-05-14-cs224w-0114-lecture-2-traditional-methods-for-ml-on-graphs/cs224w-lec2-1-traditional-ml-pipeline.png">&lt;/p>
&lt;h1 id="针对节点的特征工程方法">针对节点的特征工程方法&lt;/h1>
&lt;p>节点水平的特征主要有四类，下面分别介绍。&lt;/p>
&lt;ul>
&lt;li>节点的度（node degree）&lt;/li>
&lt;li>节点的中心性（node centrality）&lt;/li>
&lt;li>节点的集聚系数（clustering coefficient）&lt;/li>
&lt;li>非同构子图（graphlets）&lt;/li>
&lt;/ul>
&lt;h2 id="节点的度">节点的度&lt;/h2>
&lt;p>节点的度，这个最好理解了，即该节点的所连边的数目，或者说该节点的直接邻居数目。如果是有向图，还分为出度和入度。&lt;/p>
&lt;p>节点的度的不足是，没有考虑到不同邻居的重要性不同，只要有一个邻居，度就加1，即认为所有邻居的重要性是相同的。&lt;/p>
&lt;h2 id="节点的中心性">节点的中心性&lt;/h2>
&lt;p>节点的中心性这个特征考虑了节点的重要性，有多个中心性指标，如下：&lt;/p>
&lt;ul>
&lt;li>特征向量中心性（Engienvector centrality）&lt;/li>
&lt;li>中介中心性（Betweenness centrality）&lt;/li>
&lt;li>接近中心性（Closeness centrality）&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>特征向量中心性&lt;/strong>的定义是：节点v的重要性=v的邻居的重要性的和，除以λ进行归一化。
根据定义可知，特征向量中心性是递归定义的，写成矩阵形式就是Ac=λc，特征向量c的每个维度就是每个顶点的特征向量中心性的值。&lt;/p>
&lt;p>忘记了怎么求特征值和特征向量的同学可以复习一下：&lt;a href="https://blog.csdn.net/Junerror/article/details/80222540">https://blog.csdn.net/Junerror/article/details/80222540&lt;/a>。&lt;/p>
&lt;p>算出最大特征值λ_max对应的特征向量c_max之后，节点v的特征向量中心性就是向量c_max的第v个分量。具体看维基百科：&lt;a href="https://zh.wikipedia.org/zh-cn/%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F%E4%B8%AD%E5%BF%83%E6%80%A7">https://zh.wikipedia.org/zh-cn/%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F%E4%B8%AD%E5%BF%83%E6%80%A7&lt;/a>。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://bitjoy.net/posts/2022-05-14-cs224w-0114-lecture-2-traditional-methods-for-ml-on-graphs/cs224w-lec2-2-eigenvector-centrality.png">&lt;/p>
&lt;p>如果说特征向量中心性有点难以理解和计算的话，接下来介绍的中介中心性和接近中心性就很好理解了。&lt;/p>
&lt;p>&lt;strong>中介中心性&lt;/strong>，顾名思义，就是节点作为中介（枢纽）的重要性。计算方法是，所有节点对(s,t)的最短路径穿过节点v的比例。(s,t)的最短路径可以认为是(s,t)之间的交通要道，如果这条路径穿过节点v的话，说明v在交通要道上，所以v是很重要的中介枢纽。具体计算方法见下图，即v在所有(s,t)的最短路径中出现的比例。&lt;/p>
&lt;p>&lt;strong>接近中心性&lt;/strong>也很好理解，就是节点v与图中其他节点的接近程度。计算方法是：v到其他节点的最短路径之和的倒数。如果一个节点越中心，则它到其他节点的最短路径越短，则接近中心性越大。比如下图的D就比A更中心，所以D的接近中心性更大。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://bitjoy.net/posts/2022-05-14-cs224w-0114-lecture-2-traditional-methods-for-ml-on-graphs/cs224w-lec2-3-betweenness-and-closeness-centrality.png">&lt;/p>
&lt;h2 id="节点的集聚系数">节点的集聚系数&lt;/h2>
&lt;p>集聚系数是个很有意思的指标，它描述的不是节点本身，而是节点的邻居的集聚程度。其计算公式如下图所示，分子是v的邻居形成的边的数目，分母是v的邻居理论上能形成最多的边的数目，分母用来归一化的。&lt;/p>
&lt;p>集聚系数=1表示v的邻居都两两认识，=0表示v的邻居两两都不认识。集聚系数越大，表示邻居聚集程度越高，越有可能是一个紧密的团体。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://bitjoy.net/posts/2022-05-14-cs224w-0114-lecture-2-traditional-methods-for-ml-on-graphs/cs224w-lec2-4-clustering-coefficient.png">&lt;/p>
&lt;h2 id="非同构子图">非同构子图&lt;/h2>
&lt;p>非同构子图的英文定义是：rooted connected non-isomorphic subgraphs，很准确啊，有根的连通的非同构子图。比如下图中3个节点的graphlets有3个，G1中目标节点（根节点）在1和2形成的子图是不一样的（不同构），而在G2中3个点的位置是等价的，所以G2只有1个graphlet，加起来就是3个graphelts。从2个节点到5个节点，能形成的graphlets总数是73个。&lt;/p>
&lt;p>Graphlet Degree Vector（GDV）是基于graphlets的特征，它计算以目标节点v为根，能形成的不同graphlets的数目向量，相当于描述了v周围不同子结构的子图个数。如下子图3所示，红色节点v的2-3个节点的GDV向量是[2,1,0,2]。如果统计节点v周围的2~5个节点（包含v自己）形成的graphlets的数目，则会得到一个维度为73的GDV向量，相当于节点v的一个特征向量。这个73维度的特征向量是节点v周围四跳（4-hop）的结构信息。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://bitjoy.net/posts/2022-05-14-cs224w-0114-lecture-2-traditional-methods-for-ml-on-graphs/cs224w-lec2-graphlets.png">&lt;/p>
&lt;p>小结一下节点的特征大概可以分成两类，一类是基于重要性的特征，例如节点的度、节点的中心性；另一类是基于结构的特征，例如节点的度、集聚系数、非同构子图个数向量。基于重要性的特征可用于预测网络中的重要节点，例如社交网络中的名人节点；基于结构的特征可用于预测网络中不同节点的不同功能，例如蛋白质相互作用网络中不同蛋白质的功能，因为不同的局部子结构往往蕴含了不同的功能。&lt;/p>
&lt;hr>
&lt;h1 id="针对边的特征工程方法">针对边的特征工程方法&lt;/h1>
&lt;p>针对边&amp;lt;A,B&amp;gt;的特征工程方法，固然可以把节点A和B的节点特征concat起来作为边&amp;lt;A,B&amp;gt;的特征，但是丢失了很多边特有的信息，效果不一定好。专门针对边设计的特征工程方法有三个，下面分别介绍：&lt;/p>
&lt;ul>
&lt;li>基于距离的特征（Distance-based feature）&lt;/li>
&lt;li>局部邻居重叠比例（Local neighborhood overlap）&lt;/li>
&lt;li>全局邻居重叠比例（Global neighborhood overlap）&lt;/li>
&lt;/ul>
&lt;h2 id="基于距离的特征">基于距离的特征&lt;/h2>
&lt;p>两点之间的最短路径长度，这个最好理解了，可以用Dijkstra算法和Floyd算法求解。然而最短路径无法捕捉两个节点的共同邻居数目，比如下图中BH和BE的最短路径都是2，但BH有两个共同邻居CD，而BE只有一个共同邻居D，如果只用最短路径这个特征，则无法区分BH和BE这两对节点。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://bitjoy.net/posts/2022-05-14-cs224w-0114-lecture-2-traditional-methods-for-ml-on-graphs/cs224w-lec2-6-shortest-path.png">&lt;/p>
&lt;h2 id="局部邻居重叠比例">局部邻居重叠比例&lt;/h2>
&lt;p>局部邻居重叠比例衡量两个节点的邻居重叠程度，比如简单的Common neighbors直接计算两个节点的共同邻居数目；Jaccard&amp;rsquo;s coefficient用邻居交集数目除以并集数目做了归一化。&lt;/p>
&lt;p>Adamic-Adar index的计算方法是所有共同邻居的度的对数分之一加和。它的直观含义是，如果共同邻居的度越小，则说明两个节点的关系越紧密。比如下图中，A和B的共同邻居是C，C的度是4，说明C除了连接了A和B，还连了另外2个节点。如果C的度越大，则说明A和B占C的邻居的重要性越低；反之，如果C只连了A和B，则说明A和B通过C这个枢纽连接的关系很重要。举个简单的例子，比如两个人都喜欢一个很小众的电影，则他们的兴趣可能会很接近，但如果都喜欢一个大众电影，则他们的关系可能没那么强烈。&lt;/p>
&lt;p>局部邻居重叠比例的问题是：只考虑了一跳直接相连的邻居，没有考虑间接相连的邻居（潜在关系），后面介绍的全局邻居重叠比例可以解决这个问题。&lt;/p>
&lt;p>&lt;img loading="lazy" src="https://bitjoy.net/posts/2022-05-14-cs224w-0114-lecture-2-traditional-methods-for-ml-on-graphs/cs224w-lec2-7-local-neighborhood-overlap.png">&lt;/p>
&lt;h2 id="全局邻居重叠比例">全局邻居重叠比例&lt;/h2>
&lt;p>Katz index统计的是任意两个节点之间任意长度的路径的个数。在计算Katz index的时候，需要计算两个节点uv之间长度为l的路径个数。计算方法是邻接矩阵的l次方。&lt;/p></description></item></channel></rss>