Main question:给定一个在某些节点上有标签的网络,我们如何将给网络中的所有其他节点分配标签?
个体行为与网络环境是相互关联的,如以下三种关联:
马尔科夫假设:节点 i 的标签Y_i依赖于它的邻居N_i的标签
相似的节点通常紧密相连或直接连接,利用这些相关性,即节点的特征,节点邻居的特征,节点邻居的标签,来分配标签的三种近似方法,因为求解精确标签是NP难问题:
- 关系分类算法(Relational classification)
- 迭代分类算法(Iterative classification)
- 置信度传播算法(Belief propagation)
一、关系分类算法(Relational classification)
问题设置:
- 任意节点 i 有特征向量f_i
- 给定了一些节点的标签
- 任务:找到节点类概率P(Yi)
算法思想:节点 i 的类概率是其相邻节点的类概率的加权平均值。
对于已经标记了类的节点,以真实标签进行初始化。
对于未标记类的节点,以统一值进行初始化。
按随机顺序更新所有节点,直到收敛或达到设置的最大迭代次数。
对于节点 i 类 c 根据以下公式重复进行更新:
方法不保证收敛,且没有利用节点本身的特征信息。
例子:
其中节点4的类概率为0.5,这是因为它在两个集群的边界上。
二、迭代分类算法(Iterative classification)
算法思想:根据节点 i 的自身的属性和相邻节点集N_i的标签对节点 i 进行分类。
- 为每个节点 i 创建一个特征向量a_i
- 训练一个分类器使用特征向量a_i进行分类
- 节点可能有不同数量的邻居,我们可以使用一些方法将它们聚合在一起,如计数,众数,比例,平均,存在等。
初始化阶段:
- 将每个节点 i 转换为特征向量a_i
- 使用局部分类器 f(a_i)(如SVM, kNN)计算Yi的最优值
迭代阶段: - 对于任意节点 i ,更新节点的特征向量a_i,根据 f(a_i)更新节点的标签Yi
- 迭代直到节点的类标签稳定或达到设置的最大迭代次数
- 这种方法同样不保证收敛
例子1:
首先根据节点的特征向量w1,w2,w3训练一个分类器。由于只有节点信息没有邻居信息,分类器会产生错误。
为特征向量添加邻居节点的信息I_A,I_B,O_A,O_B。
例子2:
首先在训练集中分别使用节点特征向量和完整的特征向量训练两个分类器。
根据节点特征向量分类器初始化测试集中节点的标签,根据这些标签更新节点的邻居信息。
根据完整的特征向量分类器更新节点的标签,根据这些标签更新节点的邻居信息。不断迭代直至收敛或达到设置的最大迭代数。
不断迭代直至收敛或达到设置的最大迭代数。
三、应用:假评论评论者检测
REV2: Fraudulent User Prediction in Rating Platforms
用户行为和使用的语言很好进行伪装,但用户和用户之间,用户和商店之间的图结构难以进行伪装。
问题设置:
- 输入为二部划分加权图,其中节点是用户和产品,边为-1到1的评分。
- 输出为给出家评分的用户集合。
算法的基本思想是用户、产品和评分都具有内在的质量分数: - 用户的公平度分数
- 产品的优良度分数
- 评级的可信度分数
固定优良度和可信度,用户公平度按如下公式更新:
固定公平度和可信度,产品优良度按如下公式更新:
固定公平度和优良度,评价可信度按如下公式更新:
以最优值进行初始化:
经过迭代,收敛后:
- 保证能够收敛
- 迭代知道收敛到分数的上界
- 时间复杂度与图的边数呈线性关系
四、置信度传播算法(Belief propagation)
置信度传播算法是一种在图模型中回答条件概率问题的动态规划方法。迭代过程中,相邻变量相互“交谈”,传递消息。但当图中出现环形路径时,会出现错误。
那么一个图中的节点 i 应该发什么信息给节点 j 呢? - 取决于节点 i 从它的邻居节点 k 那里听到的信息
- 每个邻居节点 k 都向节点 i 传递一条信息,它将节点 i 状态的置信度传递给节点 i
符号:
信息初始设置为1,对于每个节点按如下公式更新:
收敛后,按如下公式计算节点 i 为状态Y_i的置信度:
若图中存在环形结构,消息会不断循环叠加。
但通常在实践中,循环的影响是微弱的,因为通常循环周期很长或至少包含一个很弱的连接。
例子:
Netprobe: A Fast and Scalable System for Fraud Detection in Online Auction Networks
Pandit et al., World Wide Web conference 2007