图机器学习(传统的图机器学习如何进行特征工程)
1. Traditional Feature-based Methods: Node
1.半监督学习任务
如(figure 13)所示案例,任务是预测灰点属于红点还是绿点。区分特征是度数(红点度数是1,绿点度数是2)
2.特征抽取目标:找到能够描述节点在网络中结构与位置的特征
3. 用节点度作为特征只计算了相连节点的个数,缺点是没有办法描述节点在图中的重要性。
4. 点度中心性(Degree centrality)(当前节点的度/(总节点数量-1))
k i ∑ j ∈ n n k j − 1 \frac{k_i}{\sum_{j\in n}^{n}{k_j}-1} ∑j∈nnkj−1ki
1. 特征向量中心性(Engienvector centrality):认为如果节点邻居重要,那么节点本身也重要
因此节点 v 的中心性是邻居中心性的加总:(λ 是某个正的常数)
c
v
=
1
λ
∑
u
∈
N
(
v
)
c
u
c_v= \frac{1}{\lambda}\sum_{u\in N(v)}{c_u}
cv=λ1u∈N(v)∑cu
这是个递归式,解法是将其转换为矩阵形式:λ c = A c A 是邻接矩阵,c是中心性向量。 根据 Perron-Frobenius Theorem可知最 大的特征值max(λ)总是为正且唯一,对应的前导特征向量max©就是中心性向量
2. 中介中心性(Betweenness centrality):认为如果一个节点处在很多节点对的最短路径上,那么这个节点是重要的。(衡量一个节点作为bridge或transit hub 的能力。)如(figure 14)
c v = ∑ s ≠ v ≠ t s 和 t 之间包含 v 的最短路径 s 和 t 之间的最短路径 c_v=\sum_{s\neq v\neq t}\frac{s和t之间包含v的最短路径}{s和t之间的最短路径} cv=s=v=t∑s和t之间的最短路径s和t之间包含v的最短路径
3.接近中心性(Closeness centrality):如果一个节点跟其他所有节点的距离越近,该节点的中心性就高。
c
v
=
1
∑
u
≠
v
u
和
v
之间的最短距离
c_v=\frac{1}{\sum_{u\neq v}{u和v之间的最短距离}}
cv=∑u=vu和v之间的最短距离1
5.聚类系数(clustering coefficient):描述一个图中的节点之间结集成团的程度的系数。例如:社交网络中,我的朋友之间相互认识的程度。(figure 16)
e v = 当前节点的邻居节点之间的边的数量 ( k v 2 ) ∈ [ 0 , 1 ] e_v=\frac{当前节点的邻居节点之间的边的数量}{{k_v\choose 2}}\in[0,1] ev=(2kv)当前节点的邻居节点之间的边的数量∈[0,1]
用例子来说,对于中间的图,v有4个朋友,4个朋友两两组合应该有6个朋友对,但是实际上只有3个朋友对,因此,其聚集系数是3/6=0.5
6. graphlets :一系列连通的非同构子图
3个节点的时候 , G 1 G_1 G1中1号和2号节点为根是不同的图,是不同构的。
那么如图,可以包含v的子图有三种,且列出不同构的形态Graph Degree Vector (GDV),就是能够包含节点v匹配的到的graphlets的个数,得到Graphlet instances,GDV可以用来判定两个结点的局部网络拓扑结构是否类似。
小结:考虑2-5个节点的graphlets,我们得到一个长度为73个坐标坐标(就前图所示一共73种graphlet)的向量GDV,描述该点的局部拓扑结构节点邻域的拓扑,可以捕获距离为4hops的互联性互连性。相比节点度数或聚类系数,GDV能够描述两个节点之间更详细的节点局部拓扑结构相似性局部拓扑相似。
7. Node Level Feature: Summary
1. Importance-based features: 捕获节点在图中的重要性(例如:可以用于社交网络中的重要人物识别)
-
节点度(node degree):简单的计算相邻节点的数量
-
节点中心性(node centrality) :模型的邻接节点在图中的重要性;不同的建模选择(特征向量中心性、中介中心性、接近中心性)
2.Structure-based features: 捕获节点附近的拓扑属性(例如:可以用于类似固定结构的蛋白质网络预测任务)
- 节点度:统计相邻节点个数。
- 聚类系数:测量相邻节点的链接程度
- Graphlet 度向量:计算不同graphlet的出现次数
8. 讨论:
通过上述的公式得出:传统节点特征只能识别出结构上的相似,不能识别出图上空间、距离上的相似
2.Traditional Feature-based Methods: Link
1. 预测任务是基于已知的边,预测新链接的出现。测试模型时,将每一对无链接的点对进行排序,取存在链接概率最高的K个点对,作为预测结果。(figure 21)
2. 特征在点对上
3. 有时你也可以直接将两个点的特征合并连接起来作为点对的特征,来训练模型。但这样做的缺点就在于失去了点之间关系的信息。
4. 链接预测任务的两种类型:随机缺失边;随时间演化边
第一种假设可以以蛋白质之间的交互作用举例,缺失的是研究者还没有发现的交互作用。(但这个假设其实有问题,因为研究者不是随 机发现新链接的,新链接的发现会受到已发现链接的影响。在网络中有些部分被研究得更彻底,有些部分就几乎没有什么了解,不同部 分的发现难度不同)
第二种假设可以以社交网络举例,随着时间流转,人们认识更多朋友。
5. 基于相似性进行链接预测:计算两点间的相似性得分(如用共同邻居衡量相似性),然后根据得分将点对进行排序,得分最高的n组点对就是预测结果,与真实值作比(figure 21)
6.distance-based feature:两点间最短路径的长度
如图(figure 22)这种方式的问题在于没有考虑两个点邻居的重合度,所以这个方法对于领域的特征表示并不明显,如B-H有2个共同邻居,B-E和A-B都只有1个共同邻居。
7. local neighborhood overlap:捕获节点的共同邻居数
如图(figure 23)可知common neighbors的问题在于度数高的点对就会有更高的结果,Jaccard’s coefficient是其归一化后的结果。Adamic-Adar index在实践中表现得好。在社交网络上表现好的原因:有一堆度数低的共同好友比有一堆名人共同好友的得分更高。
但是这个衡量方式有缺点:当两个点之间没有共同邻居
∣
N
(
v
1
)
∩
N
(
v
2
)
∣
=
ϕ
∣ N ( v 1 ) ∩ N ( v 2 ) ∣ = ϕ
∣N(v1)∩N(v2)∣=ϕ则该特征为0,但是实际上二者未来还是可能有边的。例如上图中的节点A和E,二者从图中看是有间接关系,但是Local neighborhood overlap没法表示这种关系。
8. Global neighborhood overlap:捕获节点的全局邻居数(Katz index)
Katz index:计算步骤如下
公式:
s
=
∑
i
=
1
∞
β
i
A
i
=
(
I
−
β
A
)
−
1
−
I
【
1
】
s=\sum_{i=1}^{\infty}{\beta}^{i}A^{i}=(I-{\beta}A)^{-1}-I【1】
s=i=1∑∞βiAi=(I−βA)−1−I【1】
【1】β 是权重衰减因子,为了保证数列的收敛性,其取值需小于邻接矩阵A最大特征值的倒数。(具体原因见参考资料⑤)
该方法权重衰减因子的最优值只能通过大量的实验验证获得,因此具有一定的局限性。解析解推导过程:
矩阵形式的表达式为:S=βA+β2A2+β3A3…
( I − β A ) ( I + S ) = ( I + β A + β 2 A 2 + β 3 A 3 … ) − ( β A + β 2 A 2 + β 3 A 3 … ) = I (I-βA)(I+S)\\ =(I+βA+β^2A^2+β^3A^3…)-(βA+β^2A^2+β^3A^3…) =I (I−βA)(I+S)=(I+βA+β2A2+β3A3…)−(βA+β2A2+β3A3…)=I所以 s + I = ( I − β A ) − 1 所以s+I=(I-{\beta}A)^{-1} 所以s+I=(I−βA)−1
9.总结:
- Global neighborhood overlap可以解决local neighborhood overlap上没有共同邻居的问题。
- Katz index:计算点对之间所有长度路径的条数。(计算方式:邻接矩阵求幂)
- 使用全局图形结构对两个节点进行评分
- Katz 索引对两个节点之间所有长度的paths进行计数。
3. Traditional Feature-based Methods: Graph
1. 图级别特征构建目标:找到能够描述全图结构的特征
2. Background: Kernel Methods(核方法)
这个 ϕ \phi ϕ是个表示向量,可能不需要被显式地计算出来
3.graph kernel: key idea
- bag-of-words相当于是把文档表示成一个向量,每个元素代表对应word出现的次数。
- 特征抽取方法也将是bag-of-something的形式,将图表示成一个向量,每个元素代表对应something出现的次数(这个something可以是node, degree, graphlet, color)光用node不够的话,可以设置一个degree kernel,用bag-of-degrees来描述图特征.
- Key idea: Count the number of different graphlets in a graph.
- 图的Graphlet 和节点级别的Graphlet 有2点不一样
- 这里的小图中的节点不需要连接(允许隔离的节点)
- 这里的小图不是根的。
- graphlet count vector:每个元素是图中对应graphlet的数量
那么给定一个图G,求其k = 3的graphlets的数量个数组成向量表示(figure 26),写成 f G = ( 1 , 2 , 6 , 0 ) T f_G=(1,2,6,0)^T fG=(1,2,6,0)T。
- graphlet kernel就是直接点积两个图的graphlet count vector得到相似性。对于图尺寸相差较大的情况需进行归一化
1. graphlet的表达式为 K ( G , G ′ ) = f G T f G ′ K(G,G^′)= f_G^Tf_G^′ K(G,G′)=fGTfG′,
2. 这里如果两个图大小相差较大,那么得到的相似度也会差很大,大图包含的Graphlet数量肯定会比较多。改进加上归一化后:
h
G
=
f
G
∑
(
f
G
)
K
(
G
,
G
′
)
=
h
G
T
h
G
′
h_G=\frac{f_G}{\sum(f_G)}\\ K(G,G^′)= h_G^Th_G^′
hG=∑(fG)fGK(G,G′)=hGThG′
缺点:Graphlet计算复杂度较高,在n个节点的图中计算k 个节点大小的Graphlet,时间复杂度高达:
n
k
n^k
nk(属于NP-hard问题)
如果图的节点度小于d ,那么计算k个节点大小的Graphlet,时间复杂度为:
O
(
n
d
k
−
1
)
O(nd^{k-1})
O(ndk−1)
-
Weisfeiler-Lehman Kernel:相比graphlet kernel计算代价较小,效率更高。
-
用节点邻居结构迭代地来扩充节点信息,实际上就是将Bag of node degrees(只包含一跳信息)扩展到多跳信息。
-
算法实现:
-
为所有节点设置一个初始颜色 c ( 0 ) ( v ) c^{(0)}(v) c(0)(v)
-
使用如下公式迭代更新节点的颜色:
c v ( k + 1 ) = H A S H 【 2 】 ( c ( v ) ( k ) { c ( u ) ( k ) } u ∈ N ( v ) ) c_{v}^{(k+1)}=HASH^{【2】}({c_{(v)}^{(k)}\{c_{(u)}^{(k)}\}_{u\in N(v)}}) cv(k+1)=HASH【2】(c(v)(k){c(u)(k)}u∈N(v))
-
【2】颜色HASH函数如下(figure 27):
3. 具体计算步骤:
1. 两个要比较的图,初始化节点的颜色值为1(figure 28)
2. 使用sum的方式来汇聚邻居信息(k=1):(figure 29)
3. 对照颜色的hash函数得到:(figure 30)
4. 再次使用sum的方式来汇聚邻居信息(k=2):(figure 31)
5. 对照颜色的hash函数得到:
6. 至此,color refinement算法介绍,接下来使用kernel得到各个图的表征,就是计算每个颜色对应的个数(figure 33),最后 求两个图的相似度,可以直接转置后求乘法得50.这个算法的好处是,算法是线性的,计算时间复杂度和边成正比关系。整 个算法的思想相当于bag of color。
4. 总结
1. 传统 ML流程:
手工制作的功能+ ML模型
2. 图形数据手工制作的功能
-
节点级:
节点度、中心性、聚类系数、graphlets -
链路级别:
基于距离的特征提取
局部、全局邻域节点捕获 -
图形级别:
Graphlet kernel, WL kernel