添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 20.1.1 Basic Concepts about Graph
  • 20.1.2 Add and Visualizing attributes
  • 20.1.3 Network Visualization
  • 20.2 Directed networks
  • 20.2.1 Basic Concepts
  • 20.2.2 Relationships between edges
  • 20.2.3 Relationships between vertices
  • 20.2.4 Identifying key vertices
  • 20.3 Network Structure
  • 20.3.1 Basic Structure metrics
  • 20.3.2 Random graphs
  • 20.3.3 Randomization test
  • 20.3.4 Substructures’ metrics
  • 20.3.5 Visualize largest cliques
  • 20.4 Do birds of a feather flock together?
  • 20.4.1 Community detection
  • 20.4.2 Interactive network visualizations
  • 21 Network analysis prediction
  • 21.1 具有标签的网络
  • 21.1.1 节点添加标签
  • 21.1.2 不同的标签设置颜色
  • 21.1.3 取出特定标签
  • 21.1.4 领近关系分类
  • 21.1.5 集体推理分类
  • 21.2 同性偏好的指标
  • 21.2.1 边的连接性
  • 21.2.2 二重性(Dyadicity)
  • 21.2.3 异质性(Heterophilicity)
  • 21.2.4 结论
  • 21.3 网络的特征
  • 21.3.1 更换数据
  • 21.3.2 邻接矩阵
  • 21.3.3 基于链接的特征
  • 21.3.4 节点的特征提取
  • 21.3.5 使用邻接矩阵计算特征的平均值
  • 21.4 PageRank算法
  • 21.4.1 个性化排名
  • 21.4.2 提取不同系数的排名
  • 21.5 提取特征信息
  • 21.5.1 转换为数据框
  • 21.5.2 相关系数
  • 21.6 预测模型
  • 21.6.1 划分数据集
  • 21.6.2 创建模型
  • 22 Network Analysis examples
  • 23 使用xts和zoo操作时间序列数据
  • 23.1 简介
  • 23.1.1 第一个时间序列对象
  • 23.1.2 基础操作
  • 23.1.3 基于时间的简单索引
  • 23.1.4 导入与转换数据类型
  • 23.2 时间索引
  • 23.2.1 时间段索引
  • 23.2.2 时间索引与更新
  • 23.2.3 时间序列的头和尾索引
  • 23.2.4 窗口函数
  • 23.2.5 时间序列其他频率
  • 23.2.6 时间序列的矩阵运算
  • 23.3 融合和修正时间序列
  • 23.3.1 按行或列的融合
  • 23.3.2 处理缺失值
  • 23.3.3 滞后和差分
  • 23.4 按时间应用和聚合
  • 23.4.1 时间上的应用
  • 23.4.2 时间上的聚合
  • 23.4.3 窗口滚动函数
  • 23.5 xts包的其他特点
  • 23.5.1 时区的设置(重要)
  • 23.5.2 周期与时间标记
  • 23.5.3 高频时间数据
  • 24 时间序列分析
  • 24.1 时间序列的创建
  • 24.1.1 原始数据
  • 24.1.2 创建时间序列
  • 24.1.3 多个时间序列
  • 24.1.4 回归率
  • 24.2 时间序列预处理
  • 24.2.1 平稳性定义
  • 24.2.2 白噪声(WN)
  • 24.2.3 随机游走(RW)
  • 24.2.4 自相关系数
  • 24.2.5 Wold分解定理
  • 24.3 ARMA(p, q)模型
  • 24.3.1 AR(p)模型
  • 24.3.2 MA(q)模型
  • 24.3.3 ARMA(p, q)模型
  • 24.3.4 AR模型估计
  • 24.3.5 MA模型估计
  • 24.3.6 ARMA模型相关性特征
  • 24.3.7 AIC与BIC评价
  • 24.3.8 残差分析
  • 24.3.9 模型选择
  • 24.3.10 integrated ARMA
  • 24.3.11 预测
  • 24.4 季节性模型
  • 24.4.1 季节性ARMA模型特征
  • 24.4.2 纯季节性模型
  • 24.4.3 混合季节性模型
  • References
  • 21.1 具有标签的网络

    具有标签的网络(labeled networks)很常见,我们可以从带标签的节点之间的关系去判断没有标签的节点。这里所说的标签其实是节点的属性(attr),标签通常只有两个对立的分类,比如:“喜欢使用R”和“不喜欢使用R”。

    该数据是一个客户的社会网络, edgeList 数据框的每一行代表网络中的一条边。这个网络中的边是不定向的,权重为1。

    上面那个关系网是没有节点属性的,下面将使用 customers 的数据框,其客户ID与网络中的客户ID相同。每个客户都有一个是否流失(churn)的标签,分别用1或0表示。我们可以将这个标签添加到网络中。

    我们对网络添加好标签之后,自然想到查看流失的客户与非流失的客户在网络是怎么分布的,所以我们绘制图的时候需要针对不同的标签设置不同的颜色。

    如果节点很多,节点之间关系也很多,绘制出来的图就很难看到有用的信息。所以需要对流失的客户单独拿出来,看关系图,则需要对这个网络取子集。因为有标签,所以这个操作很容易。

    最简单的想法是如果一个节点的邻居(neighbor)的流失多,那么这个节点很有可能流失。所以利用这个想法来找出哪些未流失节点可能流失.下面是我自己想出来的办法,非常笨拙,下一节介绍了更简单的方法

  • from 列固定为一个点, to 列看作它的邻居
  • 创建一个新的数据框,交换 from to ,使得能计算每一个节点的邻居(这一点需要验证数据里面是否已经有交换的节点)
  • 两个数据集合并
  • 内连接1,按照 from 的ID链接到 churn 列,得到每个点邻居是否流失
  • 内连接2,按照 to 的ID链接到 churn 列,得到每个点是否流失,这一步是因为我们只关心未流失的客户是否会变为流失状态,不关心已经流失节点与它的邻居的情况
  • 计算每个未流失节点的流失邻居数量和未流失邻居数量
  • 计算每个未流失节点的流失概率
  • 集体推理( Collective inference )是一种在相互连接的数据中同时标注节点以减少分类误差的程序。

    假设你不知道一个未知节点的邻居节点的标签,而是知道每个邻居节点的流失概率,你可以通过找到相邻节点的流失概率的平均值来更新节点的流失概率。

    21.2 同性偏好的指标

    Birds of a feather flock together

    Homophily on Wiki.

    21.2.1 边的连接性

    网络连接性(network connectance ),我们用p表示。它只是实际边数与网络完全连通时的边数之比。

    p = \dfrac{edges}{\binom{nodes}{2} } =\dfrac{2\cdot edges}{nodes\cdot (nodes-1)}

    要计算客户网络的连接性,我们先匹配 from to 用户的流失标签,然后相加,结果分为三种

  • 0:两点均为未流失
  • 1:其中一点为流失
  • 2:两点均为流失
  • 实际编写代码中,我们使用到了一个 match() 函数, match(x,y) 返回 x y 中的位置的向量.具体 使用方法 .

    有多种方法可以评估网络是否是同性的,并测量节点之间的关系依赖性。例如,您可以计算相同和交叉标签边缘的比率,以了解它们的分布情况。一种更先进的方法是衡量网络的二重性和异质性。事实上,当网络中有两个标签时,需要这两个独立的参数来捕捉网络结构和节点财产之间的详细相互作用。在这节课中,我们关注二重性(Dyadicity)。

    二重性衡量具有相同标签的节点之间的连接性。因此,我们需要用这个公式的组合学来计算 相同 标签边的预期数量。下面的 \(n_{l}\) 表示我们关注的标签节点的数量。

    \binom{n_{l}}{2} \cdot p = \dfrac{n_{l}(n_{l}-1)}{2} \cdot p 有了这个标签边的期望值,计算Dyadicity等于实际这个标签数量除以期望标签的数量

    D = \dfrac{\text{相同标签边的实际数量}}{\text{相同标签边的期望数量}} 计算的结果会有三种

  • \(D>1\) :表示这个网络是Dyadicity的,表明相同标签之间具有 比较高 的连接性
  • \(D\approx 1\) :表示这个网络与随机的网络没有区别
  • \(D<1\) :表示这个网络是反Dyadicity的,表明相同标签之间具有 比较低 的连接性
  • 我们利用上面已经分好的数据,进行分析:流失的客户之间是否有更高的连接性

    Heterophily, or love of the different, is the tendency of individuals to collect in diverse groups

    与上面二重性正好相反,异质性(Heterophilicty)衡量的是具有相反标签的节点之间的连接性,因此具有不同标签的节点之间有多少互动。关于异质性的 解释

    首先需要计算交叉标签边的期望数量,假设我们有两种标签,一种是 \(n_{a}\) ,另一种是 \(n_{b}\) 。 所以期望交叉标签边的数量为(这个公式由课程提供,是否具有意义不知道)

    n_{a}n_{b}\cdot p

    所以异质性为

    H = \dfrac{交叉标签边的实际数量}{交叉标签边的期望数量} 同样,异质性有三个结果

  • \(H>1\) :表示这个网络是异质性的,表明不同标签之间具有 比较高 的连接性
  • \(H\approx 1\) :表示这个网络与随机的网络没有区别
  • \(H<1\) :表示这个网络是反异质性的,表明不同标签之间具有 比较低 的连接性
  • 对于客户流失网络,我们利用之前计算好的数据计算这个网络的异质性

    网络是同性(Homophily 这个词也有同构的意思)的,需要 \(D>1\) \(H<1\) .

    21.3 网络的特征

    21.3.1 更换数据

    试图构造原本数据,但太消耗时间,故放弃 从现在开始就需要预测了,所以我们更换了客户的数据,客户网络有未来状态这一列了,同时我们对这个数据进行处理,选取其中一部分

    adjacency matrix)是网络的另外一种表示方式,它主要用于计算,我们可以使用 igraph包里面的这个函数。

  • as_adjaceny_matrix() : 获取图的一阶邻接矩阵
  • 二阶的邻接矩阵可以通过一阶邻接矩阵相乘得到,如果二阶邻接矩阵 \((i,j)\)元为1,它表示 \(i\)\(j\)之间的距离为2.我们用客户网络得到一阶邻接矩阵和二阶邻接矩阵,因为我们规定了每个节点不能自指,所以得到的二阶邻接矩阵需要将对角线全部变为0.

    对于每个节点客户是否流失的可能,我们现在可以简单的用邻接矩阵的方法算出来。你也可以用相同的方法计算由两步邻居流失情况确定的该节点流失概率,用到二阶邻接矩阵

    对于更好的预测节点标签,我们还要计算一些特征:

  • degree(): 节点的度数
  • neighborhood.size() : 我们使用这个函数计算节点的两步度数, 相关文档
  • count_triangles(): 计算节点构成三角形数量
  • betweenness() : 节点的间性
  • closeness() : 紧密性中心度指该节点与图中所有其他节点之间最短路径的平均长度。官方文档
  • eigen_centrality() : 特征向量中心性是衡量网络中一个节点的影响力的标准。
  • transitivity() : 见 20.3.4
  • 相邻节点的特征的值会对这个节点行为产生影响,我们使用邻接矩阵去计算这个节点的邻居对这个节点的影响的总和的平均值(存疑)

    Page Rank 是一种衡量节点重要性的一种算法,Wikipedia上面详细介绍了PageRank,这里不在介绍,只是简单列出计算方法。

    P R\left(p_{i}\right)=\frac{1-d}{N}+d \sum_{p_{j} \in M\left(p_{i}\right)} \frac{P R\left(p_{j}\right)}{L\left(p_{j}\right)} 其中 \(p_1, p_2, ..., p_N\)是需要考虑的页面(节点),\(M(p_i)\)是链接到 \(p_{i}\)的页面的集合,\(L(p_j)\)的外向链接数量, \(N\)是页面的总数. 在任何一步,该人继续点击链接的概率都是\(d\)。转而跳转到任意一个随机页面的概率是\(1-d\)

    对于图网络,我们使用page.rank()函数计算每个节点的重要程度,官方文档.上面所说的 \(d\)可以在函数的参数damping(意为阻尼系数)中设置

    下面的好像在函数中无法使用了,详情查看版本更新

    使用PageRank算法计算一次迭代(iteration),需要设置参数. 多次迭代之后, >各点PageRank的值会收敛(这个由条件,在随机过程中,但是没学好)

    如果事先知道某个节点更重要,可以设置节点,使其有更高的权重.参数personalized表示是否应使用个性化的PageRank算法。当为”true”时,重启向量对网络中的流失者为1(因为我们将流失者标签设为1了),对非流失者为0。默认值为FALSE,即不个性化。

    PageRank和个性化的PageRank算法之间的区别,可以创建一个函数boxplots,用两个独立的boxplots来显示churners和non-churners的分数分布。该函数有两个参数。

    这里的系数是 damping 的不同

    21.5.1 转换为数据框

    我们为节点添加了很多信息,现在可以使用这些信息进行预测了,首先需要提取这些信息并存储在数据框内。

    我们有很多特征,我们希望查看特征之间是否相关,所以使用 cor() 函数查看各个特征之间相关系数,利用 corrplot 包来绘图(这个包的简介查看 这里 )

    21.6.1 划分数据集

    拆成训练集合和测试集合

    对于二元分类,首先用逻辑回归

    我写到这里发现给的数据不一样,没有提供原数据,如果要构造原数据,会花费较大时间,所以不再继续下去了