三、图半监督学习

3.1 标签传播算法

  1. 给定一个数据集,可以将其映射为一个图,数据集中每个样本对应于图中的一个结点。若两个样本之间的相似度很高(或者相关性很强),则对应的结点之间存在一条边,边的强度正比于样本之间的相似度(或相关性)。

    将有标记样本所对应的结点视作为已经染色,而未标记样本所对应的结点尚未染色。于是半监督学习就对应于“颜色”在图上扩散或者传播的过程。这就是标记传播算法label propagation

  2. 给定标记样本集 三、图半监督学习 - 图1 ,和未标记样本集 三、图半监督学习 - 图2,其中 三、图半监督学习 - 图3

    基于 三、图半监督学习 - 图4 构建一个图 三、图半监督学习 - 图5 。其中

    • 结点集 三、图半监督学习 - 图6

    • 边集 三、图半监督学习 - 图7 的权重可以表示为一个亲和矩阵 affinity matirx 三、图半监督学习 - 图8,一般基于高斯函数,其定义为:

      三、图半监督学习 - 图9

      其中 三、图半监督学习 - 图10 是用户指定的高斯函数带宽参数。

      可以看到:

      • 三、图半监督学习 - 图11 ,因此 三、图半监督学习 - 图12 为对称矩阵。
      • 三、图半监督学习 - 图13 是全连接的,任意两点之间都存在边。
      • 两个点的距离越近,说明两个样本越相似,则边的权重越大;距离越远,说明两个样本越不相似,则边的权重越小。
      • 权重越大说明样本越相似,则标签越容易传播。

3.1.1 能量函数

  1. 假定从图 三、图半监督学习 - 图14 学得一个实值函数 三、图半监督学习 - 图15, 其对应的分类规则为: 三、图半监督学习 - 图16

    直观上看,相似的样本应该具有相似的标记,于是可以定义关于 三、图半监督学习 - 图17 的能量函数energy function

    三、图半监督学习 - 图18

    • 两个点距离越远, 三、图半监督学习 - 图19 平方级的增大,而 三、图半监督学习 - 图20 指数级下降,因此 三、图半监督学习 - 图21 下降。

      因此能量函数 三、图半监督学习 - 图22 由距离较近的样本对决定。

    • 标签传播算法假定系统能量最小,即 三、图半监督学习 - 图23 最小。

      考虑到三、图半监督学习 - 图24 由距离较近的样本对决定,而 三、图半监督学习 - 图25 是已知的量,因此算法倾向于使得:距离较近的样本具有相近的输出

  2. 定义对角矩阵 三、图半监督学习 - 图26 ,其中 三、图半监督学习 - 图27 为矩阵 三、图半监督学习 - 图28 的第 三、图半监督学习 - 图29 行元素之和。

    三、图半监督学习 - 图30 的物理意义为:第 三、图半监督学习 - 图31 个顶点的度(所有与它相连的边的权重之和)。因此 三、图半监督学习 - 图32 也称作度矩阵。

    三、图半监督学习 - 图33

    定义 三、图半监督学习 - 图34 为函数 三、图半监督学习 - 图35 在所有样本上的预测结果。 其中:

    • 三、图半监督学习 - 图36 为函数 三、图半监督学习 - 图37 在有标记样本上的预测结果。
    • 三、图半监督学习 - 图38 为函数 三、图半监督学习 - 图39 在未标记样本上的预测结果。

    结合 三、图半监督学习 - 图40 的定义以及 三、图半监督学习 - 图41 的对称性,有:

    三、图半监督学习 - 图42

  3. 标签传播算法将样本 三、图半监督学习 - 图43 的标记 三、图半监督学习 - 图44 视作能量。

    • 有标记样本的能量是已知的,未标记样本的能量是未知的。

    • 能量在样本之间流动。对于样本 三、图半监督学习 - 图45 ,它流向样本 三、图半监督学习 - 图46 的能量为 三、图半监督学习 - 图47

      • 三、图半监督学习 - 图48 表示边的权重,它就是能量流出的比例(类比于管道的大小)。
      • 流出的能量可正可负,因为 三、图半监督学习 - 图49
      • 注意:能量不能在有标记样本与有标记样本之间流动,也不能从未标记样本流向有标记样本。
    • 流经每个未标记样本的能量是守恒的。对未标记样本三、图半监督学习 - 图50

      • 其能量流向其它的所有未标记结点,能量流出为:三、图半监督学习 - 图51
      • 其它所有结点(包括有标记样本)都向其汇入能量,能量流入为:三、图半监督学习 - 图52

      考虑到 三、图半监督学习 - 图53 ,以及 三、图半监督学习 - 图54 ,则有:三、图半监督学习 - 图55 。 考虑所有的未标记样本,则有:

      三、图半监督学习 - 图56

    • 从每个有标记样本流出的能量也是守恒的。对于有标记样本三、图半监督学习 - 图57 ,它仅仅流出到未标记样本,因此流出能量为:三、图半监督学习 - 图58

      由于有标记样本只有能量流出,没有能量流入,因此有:三、图半监督学习 - 图59

    • 综合两种能量守恒的情况,有:

      三、图半监督学习 - 图60

      即有:三、图半监督学习 - 图61

  1. ![LPA](/projects/huaxiaozhuan-ai/89aee52244c6f646fe2c0577fc798335.png)
  1. 标签传播算法假定在满足约束条件的条件下,能量函数 三、图半监督学习 - 图62 最低。其中约束条件为:

    • 标记约束:函数 三、图半监督学习 - 图63 在标记样本上满足 三、图半监督学习 - 图64
    • 能量守恒:定义拉普拉斯矩阵 三、图半监督学习 - 图65 ,则有:三、图半监督学习 - 图66

    因此标签传播算法就是求解约束最优化问题:

    三、图半监督学习 - 图67

    ​ .

3.1.2 最优化求解

  1. 以第 三、图半监督学习 - 图68 行第 三、图半监督学习 - 图69 列为界,采用分块矩阵表示方式:

    三、图半监督学习 - 图70

    则:

    三、图半监督学习 - 图71

    考虑到 三、图半监督学习 - 图72 是已知的,因此 三、图半监督学习 - 图73 完全由 三、图半监督学习 - 图74 决定。为求得 三、图半监督学习 - 图75 的最小值,则根据 三、图半监督学习 - 图76 有:

    三、图半监督学习 - 图77

  2. 令:

    三、图半监督学习 - 图78

    令: 三、图半监督学习 - 图79 ,则有:

    三、图半监督学习 - 图80

    于是,将 三、图半监督学习 - 图81 上的标记信息作为 三、图半监督学习 - 图82 代入上式,即可求得未标记样本的预测值 三、图半监督学习 - 图83

  3. 三、图半监督学习 - 图84 矩阵其实为概率转移矩阵:

    三、图半监督学习 - 图85

    它表示从节点 三、图半监督学习 - 图86 转移到节点 三、图半监督学习 - 图87 的概率。

    注意到 三、图半监督学习 - 图88,因此 三、图半监督学习 - 图89 不是对称的。即:节点 i 转移到节点 j 的概率 不等于 节点i 转移到节点 j 的概率 。因此在Label Spreading 算法中,提出新的标记传播矩阵 三、图半监督学习 - 图90

    三、图半监督学习 - 图91

    因此有:三、图半监督学习 - 图92节点 i 转移到节点 j 的概率 等于 节点i 转移到节点 j 的概率 。此时的转移概率是非归一化的概率。

  4. 矩阵求逆 三、图半监督学习 - 图93 的算法复杂度是 三、图半监督学习 - 图94 。如果未标记样本的数量 三、图半监督学习 - 图95 很大,则求逆的过程非常耗时。这时一般选择迭代算法来实现。

    • 首先执行初始化:三、图半监督学习 - 图96

    • 迭代过程:

      • 执行标签传播:三、图半监督学习 - 图97
      • 重置 三、图半监督学习 - 图98 中的标签样本标记:三、图半监督学习 - 图99

3.2 多类标签传播算法

  1. 给定标记样本集 三、图半监督学习 - 图100 ,和未标记样本集 三、图半监督学习 - 图101,其中 三、图半监督学习 - 图102

    与二类标签传播算法一样,首先基于 三、图半监督学习 - 图103 构建一个图 三、图半监督学习 - 图104 ,然后定义边的权重矩阵 三、图半监督学习 - 图105 和度矩阵 三、图半监督学习 - 图106

  2. 三、图半监督学习 - 图107 的标记向量为 三、图半监督学习 - 图108, 其中 三、图半监督学习 - 图109 表示 三、图半监督学习 - 图110 属于类别 三、图半监督学习 - 图111 的概率。根据概率的定义有:

    三、图半监督学习 - 图112

    • 对于标记样本 三、图半监督学习 - 图113三、图半监督学习 - 图114 中只有一个值为1 ,其他值为 0。设 三、图半监督学习 - 图115 的标记为 三、图半监督学习 - 图116 ,即有:

      三、图半监督学习 - 图117

    • 对于未标记样本 三、图半监督学习 - 图118三、图半监督学习 - 图119 表示一个概率分布,依次是该样本属于各个类别的概率。

  3. 当给定 三、图半监督学习 - 图120 的标记向量 三、图半监督学习 - 图121 时,样本的分类规则为:

    三、图半监督学习 - 图122

    其中 三、图半监督学习 - 图123 表示模型对样本 三、图半监督学习 - 图124 的预测输出。

  4. 定义非负的标记矩阵为: 三、图半监督学习 - 图125

    三、图半监督学习 - 图126

    即:三、图半监督学习 - 图127 的每一行代表每个样本属于各类别的概率。因此 三、图半监督学习 - 图128 也称为软标记soft label矩阵。

    定义非负的常量矩阵 三、图半监督学习 - 图129 为:

    三、图半监督学习 - 图130

    即:三、图半监督学习 - 图131 的前 三、图半监督学习 - 图132 行就是 三、图半监督学习 - 图133 个有标记样本的标记向量。后 三、图半监督学习 - 图134 行全为 0 。

3.2.1 Label Propagation

  1. Label Propagation 算法通过节点之间的边来传播标记,边的权重越大则表示两个节点越相似,则标记越容易传播。

    • 定义概率转移矩阵 三、图半监督学习 - 图135 ,其中:

      三、图半监督学习 - 图136

      它表示标签从结点 三、图半监督学习 - 图137 转移到结点 三、图半监督学习 - 图138 的概率。

    • 定义标记矩阵 三、图半监督学习 - 图139,其中:

      三、图半监督学习 - 图140

      即:若 三、图半监督学习 - 图141,则第 三、图半监督学习 - 图142 行的第 三、图半监督学习 - 图143 个元素为1,该行其他元素都是 0。

    • 定义未标记矩阵 三、图半监督学习 - 图144 ,矩阵的第 三、图半监督学习 - 图145 行为样本 三、图半监督学习 - 图146 属于各标签的概率。

    • 合并 三、图半监督学习 - 图147三、图半监督学习 - 图148 即可得到 三、图半监督学习 - 图149

  2. Label Propagation 是个迭代算法。算法流程为:

    • 首先执行初始化:三、图半监督学习 - 图150

    • 迭代过程:

      • 执行标签传播:三、图半监督学习 - 图151
      • 重置 三、图半监督学习 - 图152 中的标签样本标记:三、图半监督学习 - 图153 ,其中 三、图半监督学习 - 图154 表示 三、图半监督学习 - 图155 的前 三、图半监督学习 - 图156 行。
  3. Label Propatation 算法:

    • 输入:

      • 有标记样本集 三、图半监督学习 - 图157
      • 未标记样本集 三、图半监督学习 - 图158
      • 构图参数 三、图半监督学习 - 图159
    • 输出:未标记样本的预测结果 三、图半监督学习 - 图160

    • 步骤:

      • 根据下式,计算 三、图半监督学习 - 图161

      三、图半监督学习 - 图162

      • 基于 三、图半监督学习 - 图163 构造概率转移矩阵 三、图半监督学习 - 图164。 其中 三、图半监督学习 - 图165三、图半监督学习 - 图166 为矩阵 三、图半监督学习 - 图167 的第 三、图半监督学习 - 图168 行元素之和。

      • 构造非负的常量矩阵 三、图半监督学习 - 图169

        三、图半监督学习 - 图170

      • 初始化 三、图半监督学习 - 图171三、图半监督学习 - 图172

      • 初始化 三、图半监督学习 - 图173

      • 迭代,迭代终止条件是 三、图半监督学习 - 图174 收敛至 三、图半监督学习 - 图175。 迭代过程为:

        • 三、图半监督学习 - 图176
        • 三、图半监督学习 - 图177 ,其中 三、图半监督学习 - 图178 表示 三、图半监督学习 - 图179 的前 三、图半监督学习 - 图180 行。
        • 三、图半监督学习 - 图181
      • 构造未标记样本的预测结果:

      三、图半监督学习 - 图182

      • 输出结果 三、图半监督学习 - 图183

3.2.2 Label Spreading

  1. Label Spreading 算法也是个迭代算法:

    • 首先初始化 三、图半监督学习 - 图184 为:三、图半监督学习 - 图185 ,其中 三、图半监督学习 - 图186 表示第 0 次迭代。

    • 然后迭代:三、图半监督学习 - 图187 。其中:

      • 三、图半监督学习 - 图188 为标记传播矩阵 三、图半监督学习 - 图189 ,其中 三、图半监督学习 - 图190

      • 三、图半监督学习 - 图191 为用户指定的参数,用于对标记传播项 三、图半监督学习 - 图192 和初始化项 三、图半监督学习 - 图193 的重要性进行折中。

        • 三、图半监督学习 - 图194,则每次迭代时尽可能保留初始化项 三、图半监督学习 - 图195 。最终数据集的分布与初始化项 三、图半监督学习 - 图196 非常相近。
        • 三、图半监督学习 - 图197 ,则每次迭代时尽可能不考虑 三、图半监督学习 - 图198 。最终数据集的分布与 三、图半监督学习 - 图199 差距较大。

    迭代直至收敛,可以得到:三、图半监督学习 - 图200 。于是可以从 三、图半监督学习 - 图201 中可以获取 三、图半监督学习 - 图202 中样本的标记。

  2. 由于引入 三、图半监督学习 - 图203 ,因此 Label Spreading 最终收敛的结果中,标记样本的标签可能会发生改变。这在一定程度上能对抗噪音的影响。

    如:三、图半监督学习 - 图204 意味着有 80% 的初始标记样本的标签会保留下来,有 20% 的初始标记样本的标签发生改变。

  3. Label Spreading算法:

    • 输入:

      • 有标记样本集 三、图半监督学习 - 图205
      • 未标记样本集 三、图半监督学习 - 图206
      • 构图参数 三、图半监督学习 - 图207

      • 折中参数 三、图半监督学习 - 图208

    • 输出:未标记样本的预测结果 三、图半监督学习 - 图209

    • 步骤:

      • 根据下式,计算 三、图半监督学习 - 图210

      三、图半监督学习 - 图211

      • 基于 三、图半监督学习 - 图212 构造标记传播矩阵 三、图半监督学习 - 图213。 其中 三、图半监督学习 - 图214三、图半监督学习 - 图215 为矩阵 三、图半监督学习 - 图216 的第 三、图半监督学习 - 图217 行元素之和。

      • 构造非负的常量矩阵 三、图半监督学习 - 图218

        三、图半监督学习 - 图219

      • 初始化 三、图半监督学习 - 图220三、图半监督学习 - 图221

      • 初始化 三、图半监督学习 - 图222

      • 迭代,迭代终止条件是 三、图半监督学习 - 图223 收敛至 三、图半监督学习 - 图224。 迭代过程为:

        • 三、图半监督学习 - 图225
        • 三、图半监督学习 - 图226
      • 构造未标记样本的预测结果:

      三、图半监督学习 - 图227

      • 输出结果 三、图半监督学习 - 图228

3.3 性质

  1. 其实上述算法都对应于正则化框架:

    三、图半监督学习 - 图229

    其中:

    • 三、图半监督学习 - 图230 为正则化参数 。当 三、图半监督学习 - 图231 时,上式的最优解恰好为 三、图半监督学习 - 图232
    • 上式第二项:迫使学得结果在有标记样本上的预测与真实标记尽可能相同。
    • 上式第一项:迫使相近样本具有相似的标记。

    这里的标记既可以是离散的类别,也可以是连续的值。

  2. 虽然二类标签传播算法和多类标签传播算法理论上都收敛,而且都知道解析解。但是:

    • 对二类标签传播算法,矩阵求逆 三、图半监督学习 - 图233 的算法复杂度是 三、图半监督学习 - 图234 。如果未标记样本的数量 三、图半监督学习 - 图235 很大,则求逆的过程非常耗时。
    • 对多类标签传播算法,矩阵求逆 三、图半监督学习 - 图236 的算法复杂度是 三、图半监督学习 - 图237 。如果样本总数量 三、图半监督学习 - 图238 很大,则求逆的过程非常耗时。

    因此标签传播算法一般选择迭代算法来实现。

  3. 图半监督学习方法在概念上相当清晰,且易于通过对所涉及矩阵运算的分析来探索算法性质。

    缺点:

    • 在存储开销上较大,使得此类算法很难直接处理大规模数据。
    • 由于构图过程仅能考虑训练样本集,难以判断新的样本在图中的位置。因此在接收到新样本时,要么将其加入原数据集对图进行重构并重新进行标记传播,要么引入额外的预测机制。

3.4 标签传播与 PageRank

  1. PageRank 算法用于对网页进行排名。它也是利用能量在有向图 三、图半监督学习 - 图239 中的流动来获得网页的重要性得分。

    • 每个网页代表图 三、图半监督学习 - 图240 中的一个顶点,所有顶点的集合为 三、图半监督学习 - 图241

    • 如果存在超链接,该超链接从顶点 三、图半监督学习 - 图242 对应的网页指向顶点 三、图半监督学习 - 图243 对应的网页,则存在一条有向边从顶点 三、图半监督学习 - 图244 指向顶点 三、图半监督学习 - 图245

      所有的边的集合为 三、图半监督学习 - 图246

    • 每个顶点都存储有能量,能量对应着网页的重要性得分。

    • 对每个网页,设其能量为 三、图半监督学习 - 图247

      • 用户以概率 三、图半监督学习 - 图248 选择一个超链接,进入下一个网页。这意味着有 三、图半监督学习 - 图249 的能量从当前顶点流失,流向下一个网页。

      • 用户以概率 三、图半监督学习 - 图250 随机选择一个网页。这意味着有 三、图半监督学习 - 图251 的能量从当前顶点流失,流向全局能量池。同时有 三、图半监督学习 - 图252 的能量流入当前顶点,其中 三、图半监督学习 - 图253 是系统中所有顶点的总能量,三、图半监督学习 - 图254 为顶点数量。

        这是因为每个顶点都有 三、图半监督学习 - 图255 比例的能量流入全局能量池,则全局能量池的流入能量为 三、图半监督学习 - 图256 。而全局能量池的能量又平均流入到每个顶点中,则每个顶点从全局能量池得到的能量为 三、图半监督学习 - 图257

    • 当系统取得平衡时,满足以下条件:

      • 全局能量池的流入、流出能量守恒。
      • 每个顶点的流入、流出能量守恒。
      • 系统所有顶点的总能量为常数。

    page_rank

  2. 假设 三、图半监督学习 - 图259 ,即系统所有顶点的总能量恒定为 1 。对给定的顶点 三、图半监督学习 - 图260 ,假设其能量为 三、图半监督学习 - 图261

    • 流出能量为: 三、图半监督学习 - 图262
    • 流入能量为:三、图半监督学习 - 图263 。其中 三、图半监督学习 - 图264 为能量从顶点 三、图半监督学习 - 图265 流向顶点 三、图半监督学习 - 图266 的概率。

    则顶点 三、图半监督学习 - 图267 的净入能量为:三、图半监督学习 - 图268

    考虑所有顶点,令 三、图半监督学习 - 图269三、图半监督学习 - 图270三、图半监督学习 - 图271,则系统每个顶点净流入能量组成的向量为:

    三、图半监督学习 - 图272

    当系统稳定时,每个顶点的净流入能量为 0 。因此有:三、图半监督学习 - 图273

  3. 考虑到所有顶点的总能量恒定为 1,则有 三、图半监督学习 - 图274

    定义矩阵 三、图半监督学习 - 图275 为:

    三、图半监督学习 - 图276

    则有:三、图半监督学习 - 图277 。因此有:三、图半监督学习 - 图278

    三、图半监督学习 - 图279 ,则有 三、图半监督学习 - 图280。此时的 三、图半监督学习 - 图281 就是对应于 三、图半监督学习 - 图282 的特征值为 1 的特征向量(经过归一化使得满足的总能量恒定为 1)。

3.5 标签传播与社区发现

  1. 设图 三、图半监督学习 - 图283 ,社区发现就是在图 三、图半监督学习 - 图284 中确定 三、图半监督学习 - 图285 个社区 三、图半监督学习 - 图286 ,其中满足 三、图半监督学习 - 图287

    若任意两个社区的顶点集合的交集均为空,则称 三、图半监督学习 - 图288 为非重叠社区,此时等价于聚类。否则称作重叠社区,此时一个顶点可能从属于多个社区。

  2. 社区划分的好坏是通过考察当前图的社区划分,与随机图的社区划分的差异来衡量的。

    • 当前图的社区划分:计算当前图的社区结构中,内部顶点的边占所有边的比例 :三、图半监督学习 - 图289

      其中:

      • 三、图半监督学习 - 图290 表示顶点 三、图半监督学习 - 图291 与顶点 三、图半监督学习 - 图292 之间的边的权重, 三、图半监督学习 - 图293 表示图 三、图半监督学习 - 图294 中所有边的权重之和 三、图半监督学习 - 图295

      • 三、图半监督学习 - 图296 表示顶点 三、图半监督学习 - 图297 所属的社区, 三、图半监督学习 - 图298 表示顶点 三、图半监督学习 - 图299 所属的社区。三、图半监督学习 - 图300 函数定义为:

        三、图半监督学习 - 图301

      • 因为 三、图半监督学习 - 图302 ,因此每条边被计算了两次,所以系数为 三、图半监督学习 - 图303

      它可以简化为:三、图半监督学习 - 图304,其中 三、图半监督学习 - 图305 表示社区 三、图半监督学习 - 图306 中所有内部边的总权重。

    • 随机图的社区划分:计算随机图的社区结构中,内部顶点的边占所有边的比例的期望。

      随机图是这样生成的:每个顶点的度保持不变,边重新连接。

      记顶点 三、图半监督学习 - 图307三、图半监督学习 - 图308 之间的边的期望权重为 三、图半监督学习 - 图309 ,则它满足下列条件:

      • 因为每个顶点的度不变,则最终总度数不变。即:三、图半监督学习 - 图310
      • 对每个顶点,它的度保持不变。即:三、图半监督学习 - 图311 。其中 三、图半监督学习 - 图312 表示顶点 三、图半监督学习 - 图313 的度。
      • 随机连边时,一个边的两个顶点的选择都是独立、随机的。因此对于 三、图半监督学习 - 图314 ,选到 三、图半监督学习 - 图315 的概率与 三、图半监督学习 - 图316 有关,选到 三、图半监督学习 - 图317 的概率与 三、图半监督学习 - 图318 有关。根据独立性有:三、图半监督学习 - 图319 ,其中 三、图半监督学习 - 图320 为某个映射函数。

      根据 三、图半监督学习 - 图321 ,以及 三、图半监督学习 - 图322 有:三、图半监督学习 - 图323

      由于 三、图半监督学习 - 图324 不包含 三、图半监督学习 - 图325 ,因此 三、图半监督学习 - 图326三、图半监督学习 - 图327 是倍乘关系。不妨假设 三、图半监督学习 - 图328,其中 三、图半监督学习 - 图329 为常量。则有:

      三、图半监督学习 - 图330

      考虑到 三、图半监督学习 - 图331,则有: 三、图半监督学习 - 图332 。因此有:

      三、图半监督学习 - 图333

      因此有:三、图半监督学习 - 图334

      因此随机图的社区结构中,内部顶点的边占所有边的比例的期望为:

      三、图半监督学习 - 图335

  3. 定义modularity 指标为 三、图半监督学习 - 图336

    三、图半监督学习 - 图337

    它就是:当前网络中连接社区结构内部顶点的边所占的比例,与另外一个随机网络中连接社区结构内部顶点的便所占比例的期望相减,得到的差值。用于刻画社区划分的好坏。

    • 第一项:

      三、图半监督学习 - 图338

    • 第二项:

      三、图半监督学习 - 图339

    因此,经过化简之后为:

    三、图半监督学习 - 图340

    其中:

    • 三、图半监督学习 - 图341 表示社区 三、图半监督学习 - 图342 中所有内部边的总权重 三、图半监督学习 - 图343

    • 三、图半监督学习 - 图344 表示社区 三、图半监督学习 - 图345 中所有顶点的度之和 三、图半监督学习 - 图346

      • 三、图半监督学习 - 图347 表示社区 三、图半监督学习 - 图348 的内部顶点的度数之和,占总权重的比例。
      • 三、图半监督学习 - 图349 也可以表示为:三、图半监督学习 - 图350,其中 三、图半监督学习 - 图351 表示社区 三、图半监督学习 - 图352 与其它所有社区之间的边的数量。
    • 三、图半监督学习 - 图353 的值在 (-1,1) 之间。

      • 当社区之间不存在边的连接时, 三、图半监督学习 - 图354 最大。
      • 当每个点都是一个社区时, 三、图半监督学习 - 图355 最小。

3.5.1 Fast Unfolding

  1. Fast Unfolding 算法是基于modularity 的社区划分算法。

    它是一种迭代算法,每一步3迭代的目标是:使得划分后整个网络的 modularity 不断增大。

  2. Fast Unfolding 算法主要包括两个阶段:

    • 第一阶段称作 modularity optimization:将每个顶点划分到与其邻接的顶点所在的社区中,以使得 modularity 不断增大。

      考虑顶点 三、图半监督学习 - 图356 ,设其邻接顶点 三、图半监督学习 - 图357 位于社区 三、图半监督学习 - 图358 中。

      • 未划分之前,顶点 三、图半监督学习 - 图359 是一个独立的社区,它对 三、图半监督学习 - 图360 的贡献为:三、图半监督学习 - 图361 。因为该社区只有一个顶点,因此所有顶点的度之和就是 三、图半监督学习 - 图362

      • 未划分之前,社区 三、图半监督学习 - 图363 对于 三、图半监督学习 - 图364 的贡献为:三、图半监督学习 - 图365

      • 划分之后,除了社区 三、图半监督学习 - 图366 与顶点 三、图半监督学习 - 图367 之外,所有社区、顶点在划分前后保持不变,因此 三、图半监督学习 - 图368 的变化为:

        三、图半监督学习 - 图369

        其中 三、图半监督学习 - 图370 分别表示划分之后社区 三、图半监督学习 - 图371 的所有内部边的总权重、所有顶点的度之和。

      设顶点 三、图半监督学习 - 图372 与社区 三、图半监督学习 - 图373 相连的边的度数之和为 三、图半监督学习 - 图374 (可能 三、图半监督学习 - 图375 有多条边与 三、图半监督学习 - 图376 相连) ,则有:三、图半监督学习 - 图377

      由于顶点 三、图半监督学习 - 图378 现在成为社区 三、图半监督学习 - 图379 的内部顶点,因此 三、图半监督学习 - 图380

      因此有:

      三、图半监督学习 - 图381

      • 如果 三、图半监督学习 - 图382 ,则将顶点 三、图半监督学习 - 图383 划入到社区 三、图半监督学习 - 图384 中。
      • 如果 三、图半监督学习 - 图385 ,则顶点 三、图半监督学习 - 图386 保持不变。
    • 第二阶段称作 modularity Aggregation:将第一阶段划分出来的社区聚合成一个点,这相当于重新构造网络。

    重复上述过程,直到网络中的结构不再改变为止。

  3. Fast Unfolding 算法:

    • 输入:

      • 数据集 三、图半监督学习 - 图387
    • 输出:社区划分 三、图半监督学习 - 图388

    • 算法步骤:

      • 构建图:根据 三、图半监督学习 - 图389 构建图 三、图半监督学习 - 图390

      • 初始化社区:构建 三、图半监督学习 - 图391 个社区,将每个顶点划分到不同的社区中。

        此时每个社区有且仅有一个顶点。

      • 迭代,迭代停止条件为:图保持不变 。迭代步骤为:

        • 遍历每个顶点:

          随机选择与其相连的顶点的社区,考察 三、图半监督学习 - 图392 。如果 三、图半监督学习 - 图393 ,则将该顶点划入到该社区中;否则保持不变。

        • 重复上述过程,直到不能再增大modularity 为止。

        • 构造新的图:将旧图中每个社区合并为新图中的每个顶点,旧社区之间的边的总权重合并为新图中的边的权重。

          然后重复执行上述两步。

  4. 对于顶点 三、图半监督学习 - 图394 ,在考察 三、图半监督学习 - 图395 时,可以遍历与其相连的所有顶点所属的社区,然后选择最大的那个 三、图半监督学习 - 图396

  5. 上述算法是串行执行:逐个选择顶点,重新计算其社区。在这个过程中其它顶点是不能变化的。

    事实上可以将其改造为并行算法,在每一步迭代中同时更新多个顶点的信息。

  6. Fast Unfolding 算法的结果比较理想,对比LPA 算法会更稳定。另外Fast Unfolding 算法不断合并顶点并构造新图,这会大大减少计算量。

3.5.2 LPA

  1. Usha 等人于2007年首次将标签传播算法用于社区发现。

    不同于半监督学习,在社区发现中并没有任何样本的标注信息,这使得算法不稳定,可能得到多个不同的社区划分结果。

  2. 标签传播算法在迭代过程中,对于顶点 三、图半监督学习 - 图397 ,会根据它的邻居顶点更新 三、图半监督学习 - 图398 的社区。更新规则为:三、图半监督学习 - 图399 的邻居顶点中,哪个社区出现最多,则顶点 三、图半监督学习 - 图400 就属于哪个社区。

    如果多个社区出现的次数都是最多的,则随机选择一个。

  3. 标签传播算法:

    • 输入:

      • 数据集 三、图半监督学习 - 图401
    • 输出:社区划分 三、图半监督学习 - 图402

    • 算法步骤:

      • 构建图:根据 三、图半监督学习 - 图403 构建图 三、图半监督学习 - 图404

      • 初始化:为每个顶点指定一个唯一的标签。

      • 迭代,迭代停止条件为社区划分收敛。迭代步骤为:

        • 随机打乱顶点的顺序。

        • 遍历每个顶点 三、图半监督学习 - 图405 ,设置顶点 三、图半监督学习 - 图406 的标签为:

          三、图半监督学习 - 图407

          其中 三、图半监督学习 - 图408 表示顶点 三、图半监督学习 - 图409 的邻居顶点集合, 三、图半监督学习 - 图410 表示顶点 三、图半监督学习 - 图411 的标签, 三、图半监督学习 - 图412 表示示性函数。

        • 判断是否收敛。收敛条件为:遍历每个顶点 三、图半监督学习 - 图413 ,满足:

          三、图半监督学习 - 图414

          即:顶点 三、图半监督学习 - 图415 的邻居顶点集合中,标签为 三、图半监督学习 - 图416 的点的个数最多。

          之所以取 = 是因为:可能出现个数一样多的情况,这时也是满足条件的。

  4. 标签传播算法的优点是:简单、高效、快速。缺点是每次迭代结果不稳定,准确率不高。

  5. 标签传播算法中,顶点的标签有同步更新和异步更新两种方式。

    • 同步更新(假设更新次数为 三、图半监督学习 - 图417 ):

      三、图半监督学习 - 图418

      同步更新方法在二分图中可能出现震荡的情况,如下图所示。

      lpa

    • 异步更新:

      三、图半监督学习 - 图420

      三、图半监督学习 - 图421 为顶点 三、图半监督学习 - 图422 的最新的标签值。如果它最近的更新是在第 三、图半监督学习 - 图423 轮,则 三、图半监督学习 - 图424 ;如果它最近的更新是在第 三、图半监督学习 - 图425 轮,则 三、图半监督学习 - 图426

      异步更新可以保证收敛,因此标签传播算法采用异步的策略更新顶点的标签,并在每次迭代之前对顶点重新进行随机排序从而保证顶点是随机遍历的。

  6. 标签传播算法的时间复杂度为 三、图半监督学习 - 图427,空间复杂度为 三、图半监督学习 - 图428 。因此标签传播算法具有线性的时间复杂度并且可以很好地适应大规模社区的检测。

    它既不需优化预定义的目标函数,也不需要关于社区的数量和规模等先验信息。

3.5.3 SLPA

  1. SLPAJierui Xie 等人于 2011 年提出,它是一种重叠型社区发现算法。通过设定参数,也可以退化为非重叠型社区发现算法。

  2. SLPALPA 的重要区别:

    • SLPA 引入 ListenerSpeaker 的概念。其中Listener 就是待更新标签的顶点, Speaker 就是该顶点的邻居顶点集合。

      LPA 中,Listener 的标签由 Speaker 中出现最多的标签决定。而SLPA 中引入了更多的规则。

    • SLPA 会记录每个顶点的历史标签序列。假设更新了 三、图半监督学习 - 图429 次,则每个顶点会保存一个长度为 三、图半监督学习 - 图430 的序列。

      当迭代停止之后,对每个顶点的历史标签序列中各标签出现的频率作出统计,按照某一给定的阈值 三、图半监督学习 - 图431 过滤掉那些频率小的标签,剩下的就是该顶点的标签,通常会有多个标签。

  3. SLPA 算法:

    • 输入:

      • 数据集 三、图半监督学习 - 图432
      • 迭代步数 三、图半监督学习 - 图433
      • 标签频率阈值 三、图半监督学习 - 图434
      • Speaker rule
      • Listener rule
    • 输出:社区划分 三、图半监督学习 - 图435

    • 算法步骤:

      • 构建图:根据 三、图半监督学习 - 图436 构建图 三、图半监督学习 - 图437

      • 初始化:为每个顶点分配一个标签队列;为每个顶点指定一个唯一的标签,并将标签加入到该顶点的标签队列中。

      • 迭代 三、图半监督学习 - 图438 步。迭代步骤为:

        • 随机打乱顶点的顺序。

        • 遍历每个顶点 三、图半监督学习 - 图439 ,将顶点 三、图半监督学习 - 图440 设置为Listener, 将顶点 三、图半监督学习 - 图441 的邻居顶点都设置为Speaker

          • Speaker 根据Speaker ruleListener 发送消息。

            Speaker rule为发送规则,如:Speaker 从它的标签队列中发送最新的标签、或者Speaker 从它的标签队列中随机选择一个标签发送(标签选择的概率等于标签队列中各标签出现的频率)。

          • Listener 接收消息,并根据Listener rule 更新标签,并将最新的标签加入到它的标签队列中。

            Listener rule 为接收规则。如:Listener 选择接受的标签中出现最多的那个作为最新的标签。

      • 遍历每个顶点 三、图半监督学习 - 图442 ,将顶点 三、图半监督学习 - 图443 的标签队列中,标签出现频率低于 三、图半监督学习 - 图444 的标签丢弃。标签队列中剩下的标签就是顶点 三、图半监督学习 - 图445 的标签(可能有多个)。