由于平台限制,公式无法显示,更好阅读体验,请访问( http://tianleme/2017/06/30/SDNE/ )
论文阅读 Structural Deep Network Embedding
本文的PDF版 深层网络结构嵌入
这学期选了非线性电路与系统,最近又在做网络表示的相关研究,特将平时看过比较好的论文写一写,和大家分享一下。
信息网络在现实世界中普遍存在,例如航空公司网络,出版物网络,通信网络和万维网。这些信息网络的规模从几百个节点到数百万和数十亿个节点不等。大规模信息网络的分析在学术界和工业界引起越来越多的关注。本文研究的是将信息网络嵌入到低维空间的问题,其中每个顶点都表示为一个低维向量。这种低维嵌入在各种应用中非常有用,如可视化,节点分类,链路预测和选择推荐。
网络嵌入目前依旧面临许多挑战。(1) 高维且非线性 ,深层的网络结构特征通常是非线性且高维的。因此,如何去描述学习这种高维非线性的特征是非常具有挑战性的。(2) 结构保持 ,为了能够将结果应用到一些具体的网络分析任务中,网络嵌入方法需要能够将网络结构较好的保存下来,但是隐藏的网络结构是非常复杂并且难以发现的。节点的特性往往依赖于其局部和全局的网络结构。(3) 稀疏性 ,真实世界中的大部分网络都是稀疏的,只能够利用极少数已发现的关系连接,因此还远远不能依此得到满意的效果。
近些年来,许多网络嵌入的方法相继被提出,它们采用了一些浅显的模型,比如说:IsoMAP,Laplacian Eigenmap(LE),Line。由于这些模型的局限性,它们很难获得网络高维的非线性特征。为了解决这个难题,本文提出了深层模型来学习网络中的节点表示。我们受深度学习的启发,因为其展现出了强大的表示学习能力,能够从复杂的网络中学习特征。它已经在图像、文本、语音等方面取得了卓越的成绩。特别的,我们提出的模型设计了多层的网络结构,这些结构是由许多非线性函数构成,能够将网络数据映射到隐藏的非线性空间中,从而挖掘出网络的非线性结构。
为了处理网络结构保存以及稀疏性问题,我们把一阶相似度和二阶相似度相结合,并融于学习过程中。一阶相似度是两个顶点之间的局部点对的邻近度,但由于网络的稀疏性,许多真实存在的边可能缺失,因此,一阶相似度不足以表示网络结构。因此我们更进一步地提出了二阶相似度,一对顶点之间的接近程度表示在网络中其邻域网络结构之间的相似性。通过一阶相似度和二阶相似度,我们可以很好的捕获网络的局部特性与全局特性。为了保证网络的局部和全局特性在我们的模型中有较好的表示,我们提出了一种半监督的结构,其中,无监督部分重构了二阶相似度,以保持全局网络结构。而有监督的部分利用一阶相似度作为监督信息来保存网络的全局结构。因此,所学的表示能够很好的保存网络的局部和全局结构。此外,从图1可以看出,在许多网络中二阶相似度邻近点对的数目比一阶相似度多很多。由此可以得到,二阶相似度的引入能够在描述网络结构方面提供更多的信息。因此,我们的方法对稀疏网络是鲁棒的。
[上传失败(image-a552b0-1510922608055)]
图1
算法主要步骤:
算法主要步骤:
在图上随机游走产生长度为$2w + 1$的路径,对每个点随机$\gamma $个随机游走序列。每一条随机游走路径便是相当于一个序列(相当于一句话),这样序列中的点就有上下文,定义一个时间窗口$w$,并进行马尔可夫假设,最后使用word2vec中的Skip-Gram训练每一个节点的向量。
Gram训练每一个节点的向量。
假设一个路径序列为{% raw %}$S = \left{ {{v_1},,{v_{|S|}}} \right} ${% endraw %},对于${v_i} \in S$,其上下文为{% raw %}$C = \left{ {{v_{i - w}},{v_{i - w + 1}},,{v_{i + w - 1}},{v_{i + w}}} \right}${% endraw %}, 那么DeepWalk的优化目标为:
{% raw %}$$f = \frac{1}{{\left| S \right|}}\sum\limits_{i = 1}^{\left| S \right|} {\sum\limits_{ - w \le j \le w,j \ne 0} {\log p({v_{i + j}}|{v_i})} } $${% endraw %}
其中:
{% raw %}$$p\left( {{v_j}|{v_i}} \right) = \frac{{exp\left( {c_{{v_j}}^T{r_{{v_i}}}} \right)}}{{\sum\nolimits_{v \in C} {exp\left( {c_{{v_j}}^T{r_{{v_i}}}} \right)} }}$${% endraw %}
{% raw %}${r_{{v_i}}}${% endraw %}是点${v_i}$的向量表征, {% raw %}${c_{{v_i}}}${% endraw %}是点{% raw %}${v_i}${% endraw %}上下文中点${v_j}$的向量表征。
DeepWalk使目标$f$最大化,使用Skip-Gram与Hierarchical Softmax进行训练得到每个点的vector,DeepWalk等价于MF(matrix factorization,矩阵分解)。
定义1(网络) :给定一个网络{% raw %}$G = \left( {V,E} \right)${% endraw %},其中{% raw %}$V = { {v_1}, \cdots ,{v_n}} ${% endraw %}表示为n个节点,{% raw %}$E = { {e_{i,j}}} {i,j = 1}^n${% endraw %}表示网络中所有边的集合。每一条边{% raw %}${e {i,j}}${% endraw %}与其网络中边的权重{% raw %}${s_{i,j}} \ge 0${% endraw %}相关联。如果{% raw %}${v_i}${% endraw %}和{% raw %}${v_j}${% endraw %}之间没有连接,那么{% raw %}${s_{i,j}} = 0${% endraw %},否则,对于无权图{% raw %}${s_{i,j}} = 1${% endraw %},有权图{% raw %}${s_{i,j}} > 0${% endraw %}
网络嵌入的目的是将原始的高维网络数据映射到低维的表示空间中,网络中的每一个节点即可表示为一个低维向量,同时网络计算将会变得非常方便。正如我们之前提到的,网络的局部结构和全局结构都非常有必要在降维后保存下来,下面将详细定义一阶相似度和二阶相似度。
定义2(一阶相似度) :网络中的一阶相似度是两个顶点之间的局部点对的邻近度。对于由边(u,v)链接的每对顶点,该边的权重${s_{u,v}}$表示u和v之间的一阶相似性,如果在u和v之间没有边,它们的一阶相似度为0。
一阶相似度通常意味着现实世界网络中两个节点的相似性。例如,在社交网络中成为朋友的人往往具有类似的兴趣;在万维网上互相链接的页面往往谈论类似的主题。由于一阶相似度的重要性,许多现有的图嵌入算法,如IsoMap,LLE,Laplacian Eigenmaps目的都是保持一阶相似度。
然而,在现实世界的信息网络中,能够观察到的链接只是小部分,许多隐藏的其他关系都没有被观察到。缺失链路上的一对节点,即使它们在本质上非常相似,然而他们的一阶相似度为0。 因此,只有一阶相似度对维持网络结构来说不是很有效。我们自然而然的想到,具有类似邻居的顶点往往是相似的。 例如,在社交网络中,分享相同内容的人往往具有相似的兴趣,从而成为朋友,在文本网络中,总是与同一组词汇共同出现的词往往具有相似的含义。 因此,我们定义二阶相似度,其补充了一阶相似性并能够保留网络结构。
定义3(二阶相似度) :二阶相似度对应于网络中的点对(u,v)是其邻域网络结构之间的相似性。数学上,让{% raw %}${{\rm{\mathcal{N}}} u} = { {s {u,1}}, \cdots ,{s_{u,\left| V \right|}}} ${% endraw %}表示一阶附近 u 与所有其他的顶点,那么 u 和v之间的二阶相似性由{% raw %}${{\rm{\mathcal{N}}}_u}$和${{\rm{\mathcal{N}}}_v}${% endraw %}之间的相似性来决定。如果没有一个顶点同时和 u 与 v 链接,那么 u 和 v的二阶相似性是0。
定义4(网络嵌入) :给定网络{% raw %}$G = \left( {V,E} \right)${% endraw %},网络嵌入的问题是将每个顶点$v \in V$表示为低维空间{% raw %}${\mathbb{R}^d}${% endraw %}中的向量,学习函数$f:\left| V \right| \mapsto {\mathbb{R}^d}$,其中$d \ll \left| V \right|$。在空间{% raw %}${\mathbb{R}^d}${% endraw %}中,顶点之间的一阶相似度和二阶相似度都被保留。
在本篇文章中,我们提出了一个半监督的网络嵌入深度框架,整体框架如图2所示。具体来说,为了捕捉高维非线性的网络结构,我们提出了一个深层的体系结构,它由多个非线性映射函数组成,将输入数据映射到一个高维非线性的隐藏空间,以捕获网络结构。为了解决网络结构保持和稀疏性问题,我们提出了一个半监督模型来利用一阶和二阶相似度。对于每个顶点,我们都可以得到它的邻域。因此,我们设计了无监督的组件来保持二阶相似度,并重建每个顶点的邻域结构。同时,对节点的一部分,我们可以获得他们的一阶相似度。因此,我们设计了有监督的组件,利用一阶相似度作为监督信息来改进隐藏空间中的表示。通过联合优化所提出的半监督深度模型,SDNE可以保持高维的非线性网络结构,保证稀疏网络的健壮性。在接下来的部分中,我们将详细介绍如何实现半监督的深度模型。
[上传失败(image-4ccde2-1510922608055)]
图2网络整体结构
我们首先描述无监督组件如何利用二阶近似保持全局网络结构。
二阶相似性值指的是节点的邻居相似,因此模型的二阶相似性,需要每个节点邻居的性质。给定一个网络{% raw %}$G = \left( {V,E} \right)${% endraw %},我们可以获得到它的邻接矩阵S,它包含了n个元素${s_1}, \cdots {s_n}$,对于每一个元素{% raw %}${s_i} = { {s_{i,j}}} {j = 1}^n${% endraw %},如果${v_i}$与${v_j}$间有相连的边,那么{% raw %}${s {i,j}} > 0${% endraw %}。因此,${s_i}$描述了节点${v_i}$的邻居结构,$S$提供了每一个节点的邻居结构信息。对于$S$来说,我们将传统的深度自编码器的进行延伸,用来保存网络的二阶相似性。
下面简单回顾一下深度自编码器的主要思想。它属于一种非监督模型,包含编码器与解码器。编码器由许多非线性函数构成,将输入数据映射到表示空间。对应的,解码器也由许多非线性函数构成,它将表示空间映射到输入数据的重构空间。给定输入数据${x_i}$,其中对于各个层的隐藏表示如下公式进行计算:
{% raw %}$$y_i^{(1)} = \sigma ({W^{(1)}}{x_i} + {b^{(1)}})$${% endraw %}
{% raw %}$$y_i^{(k)} = \sigma ({W {(k)}}y_i {(k - 1)} + {b^{(k)}}),k = 2, \cdots ,K$${% endraw %}
通过一系列编码器的计算,我们可以获得输出${\hat x_i}$。自动编码器的目标是尽量减少输入和输出的重构误差。损失函数可以表示为:
{% raw %}$${\rm{\mathcal{L}}} = \sum\limits_{i = 1}^n {\left| {{{\hat x} i} - {x_i}} \right| 2^2} $${% endraw %}
通过最小化损失函数能够较好的还原输入数据的原始表达,其表示空间能够提取出原始输入数据的特征。基于上述特性,我们将网络的邻接矩阵S作为自动编码器的输入,如: ${x_i} = {s_i}$,那么每一个元素${s_i}$表示节点${v_i}$邻居节点的特征。因此,通过重构可以让具有相似邻居结构的节点在隐藏的表示空间也具有相似的表达。
但是,仅仅通过这种方式还不能直接解决问题。因为在网络中,我们可以观察到一些连接,但是也有一些合法的连接是缺失的。此外,由于网络的稀疏性,在邻接矩阵$S$中,零元素远远大于非零元素。如果我们直接将S输入到传统的自编码器中,可能会导致大量的零元素出现在重构空间,这并不是我们想要的结果。为了解决这个问题,我们让其对非零元素的重构误差比零元素的惩罚更大。改进的目标函数如下所示:
{% raw %}$$\begin{array}{l}{{\rm{\mathcal{L}}} {2nd}} = \sum\limits{i = 1}^n {\left| {({{\hat x} i} - {x_i}) \odot {b_i}} \right| 2^2} \{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} = \left| {(\hat X - X) \odot B} \right| F^2\end{array}$${% endraw %}
其中$ \odot $表示Hadamard积,{% raw %}${b_i} = { {b {i,j}}} {j = 1}^n${% endraw %},如果{% raw %}${s {i,j}} = 0${% endraw %},那么{% raw %}${b{i,j}} = 1${% endraw %},否则${b{i,j}} = \beta > 1$。通过这种改进的损失函数,可以更好的让具有相似邻居的点在获得的表示空间也相似。换句话说,这个非监督部分能够很好的保存网络的二阶相似度。
不仅要维持全局网络结构,而且要捕获局部结构。我们使用一阶相似度表示网络局部结构。一阶相似度可以作为监督信息来约束一对顶点在隐藏表示空间的相似性。因此,我们设计了监督部分来利用一阶相似度。损失函数如下所示:
{% raw %}$$\begin{array}{l}{{\rm{\mathcal{L}}} {1nd}} = \sum\limits {i = 1}^n {{s_{i,j}}\left| {y_i^{(K)} - y_j^{(K)}} \right| 2^2} \{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} = \sum\limits {i = 1}^n {{s_{i,j}}\left| {{y_i} - {y_j}} \right| 2^2} \end{array}$${% endraw %}
其中{% raw %}${Y^{(k)}} = { y_i^{(k)}} {i = 1}^n${% endraw %}为编码器获得的隐藏表示空间。
该公式的灵感来源于拉普拉斯特征映射(Laplacian Eigenmaps),在表示空间中,如果相似的节点相距较远,那么会受到一个较大的惩罚。通过这一 *** 作,我们的模型能够很好的保持网络的一阶相似度。
我们同时考虑网络的一阶相似度和二阶相似度,另外在加上L2正则项,共同构成了自动编码器的损失函数:
{% raw %}$$\begin{array}{l}{{\rm{\mathcal{L}}} {mix}} = {{\rm{\mathcal{L}}}{2nd}} + \alpha {{\rm{\mathcal{L}}} {1nd}} + \upsilon {{\rm{\mathcal{L}}} {reg}}\{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} = \left| {(\hat X - X) \odot B} \right| F^2 + \alpha \sum\limits {i = 1}^n {{s_{i,j}}\left| {{y_i} - {y_j}} \right| 2^2} + \upsilon {{\rm{\mathcal{L}}} {reg}}\end{array}$${% endraw %}
其中:
{% raw %}$$\begin{array}{l}{{\rm{\mathcal{L}}} {mix}} = {{\rm{\mathcal{L}}} {2nd}} + \alpha {{\rm{\mathcal{L}}} {1nd}} + \upsilon {{\rm{\mathcal{L}}} {reg}}\{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} = \left| {(\hat X - X) \odot B} \right| F^2 + \alpha \sum\limits {i = 1}^n {{s_{i,j}}\left| {{y_i} - {y_j}} \right| 2^2} + \upsilon {{\rm{\mathcal{L}}} {reg}}\end{array}$${% endraw %}
为了能够全面地评价算法得到的低维表示,我们使用了5个真实的网络数据,包括3个社交网络,1个引文网络,1个语言网络;实验了2类网络应用任务,包括多标签分类和可视化。考虑到各个网络数据的本身属性,对于每一类应用,我们使用了至少一个数据集进行试验。数据集的参数如下表所示:
表1 网络数据集参数
我们实验与以下几个基准算法进行比较:DeepWalk、LINE、GraRep、Laplacian Eigenmaps、Common Neighbor。
对于多标签分类问题,我们采用micro-F1和macro-F1指标进行评价。对于标签A,我们将TP(A),FP(A)和FN(A)分别表示为属于A的样本被正确分类到A的数目,不属于A的样本被错误分类到A的数目和不属于A的样本被正确分类到了类别A的其他类的数目。假设 是整个标签集。Micro-F1和Macro-F1定义如下:
Macro-F1是一个每个类的权重的度量。 定义如下:
{% raw %}$$Macro - F1 = \frac{{\sum\nolimits_{A \in {\rm{\mathcal{C}}}} {F1(A)} }}{{\left| {\rm{\mathcal{C}}} \right|}}$${% endraw %}
其中F1(A)是标签A的F1度量。
Micro-F1是对每个实例权重的度量。定义如下:
{% raw %}$$\Pr = \frac{{\sum\nolimits_{A \in {\rm{\mathcal{C}}}} {TP(A)} }}{{\sum\nolimits_{A \in {\rm{\mathcal{C}}}} {(TP(A) + FP(A))} }}$${% endraw %}
{% raw %}$$R = \frac{{\sum\nolimits_{A \in {\rm{\mathcal{C}}}} {TP(A)} }}{{\sum\nolimits_{A \in {\rm{\mathcal{C}}}} {(TP(A) + FN(A))} }}$${% endraw %}
{% raw %}$$Micro - F1 = \frac{{2\Pr R}}{{\Pr + R}}$${% endraw %}
我们在本文中提出了一种多层的神经网络结构,层数随不同的数据集而做相应调整。每层的神经元数目如表2所示。其中BLOGCATALOG,ARXIV GR-QC和20-EWSGROUP使用了三层神经网络,FLICKR和YOUTUBE使用了四层。如果我们使用更深的模型,性能几乎保持不变,甚至变得更糟。
表2 神经网络结构
对于我们的方法,通过在验证集上使用网格搜索(grid search)来调整 , 和 三个超参数。对于LINE,随机梯度下降的mini-batch大小设置为1。学习速率的初始值为0025。负采样数(number of negative samples)为5,总采样数(the total number of samples)设为100亿。对于DeepWalk,我们将窗口大小设置为10,步长为40,每次采样40个顶点。对于GraRep,我们将最大转移矩阵步长(maximum matrix transition step)设置为5。
我们通过本实验中的多标签分类任务来评估不同网络表示的有效性。顶点的表示是从网络嵌入方法生成的,并被用作将每个顶点分成一组标签的特征。具体来说,我们采用LIBLINEAR软件包来训练分类器。训练分类器时,我们随机抽取标签节点的一部分作为训练数据,其余作为测试。对于BLOGCATALOG,我们随机抽取10%至90%的顶点作为训练样本,并使用剩余顶点来测试性能。对于FLICKR和YOUTUBE,我们随机抽取1%至10%的顶点作为训练样本,并使用剩余顶点来测试性能。另外,我们删除没有在YOUTUBE中被任何类别标记的顶点。我们重复进行5次实验,取Micro-F1和Macro-F1指标的平均值进行度量。结果分别如图3到图5所示。
[上传失败(image-8c4a6-1510922608055)]
图3 Micro-F1和Macro-F1在BLOGCATALOG上的表现
[上传失败(image-953fed-1510922608055)]
图4 Micro-F1和Macro-F1在FLICKR上的表现
[上传失败(image-bce93a-1510922608055)]
图5 Micro-F1和Macro-F1在YOUTUBE上的表现
在图3到图5中,我们算法的曲线一直高于其他基准算法的曲线。它表明,在多标签分类任务中我们算法学习得到的网络表示比其他算法得到的效果更好。
在图3(BLOGCATALOG)中,当训练百分比从60%下降到10%时,我们的方法在基准线上的改善幅度更为明显。它表明当标签数据有限时,我们的方法可以比基准算法有更显着的改进。这样的优势对于现实世界的应用尤其重要,因为标记的数据通常很少。
在大多数情况下,DeepWalk的性能是网络嵌入方法中最差的。原因有两个方面。首先,DeepWalk没有明确的目标函数来捕获网络结构。其次,DeepWalk使用随机游走来获得顶点的邻居,由于随机性而引起了很多噪音,特别是对于度数高的顶点。
网络嵌入的另一个重要应用是在二维空间上生成网络的可视化。对此我们在20-NEWSGROUP网络进行可视化的实验。我们使用不同网络嵌入方法学习的低维网络表示作为可视化工具t-SNE的输入。因此,每个新闻组文档被映射为二维向量。然后我们可以将每个向量可视化为二维空间上的一个点。对于被标记为不同类别的文档,我们在对应的点上使用不同的颜色。因此,良好的可视化结果能让相同颜色的点彼此靠近。可视化结果如图6所示。
[上传失败(image-b52fc7-1510922608055)]
图6 20-NEWSGROUP的可视化
每个点表示一个文档。点的颜色表示文档的类别。蓝色表示recsportbaseball的主题,红色表示compgraphics的主题,绿色表示talkpoliticsguns的主题。
从图7可以看出,LE和DeepWalk的结果并不理想,属于不同类别的点相互混合。对于LINE,形成不同类别的群集。然而,在中心部分,不同类别的文件仍然相互混合。对于GraRep,结果看起来更好,因为相同颜色的点分割成分组,但是,每个群体的边界不是很清楚。显然,SDNE的可视化效果在群体分离和边界方面都表现最好。
在本文中,我们提出了一种深层网络结构嵌入,即SDNE来执行网络嵌入。具体来说,为了捕获高维非线性的网络结构,我们设计了一个具有多层非线性函数的半监督深度模型。为了进一步解决网络结构保持和稀疏问题,我们同时使用了一阶邻近度和二阶邻近度来表示网络的局部和全局特征。通过在半监督的深度模型中优化它们,所学习的表示能够体现出网络的局部和全局特征,并且对稀疏网络是鲁棒的。我们在真实的网络数据集上试验了多标签分类和可视化任务。结果表明,我们的算法与当前最好的算法(state-of-the-art)相比有本质性的提高。
经过一周,现已初步完成,其中多出代码不够美观以及效率不高,还请指点
# __ coding:utf-8 __
# ==================================================================================
#
# Description: Influence Maximization on Multiple Social Networks
#
# ==================================================================================
import matplotlibpyplot as plt
import networkx as nx
import heapq
#总图
G = nxDiGraph()
def load_graph(file):
'''
加载文件为列表格式,并得到G,画出图结构
'''
#将总列表设成全局格式
global gllist
#迭代文件中每个元素
with open(file) as f:
lines = freadlines()
mylist = [linestrip()split() for line in lines]
gllist = []
#将字符串型转换为整型
for i in mylist:
gllistappend(i[:-2]+map(lambda x: float(x), i[-2:]))
print '初始全局列表:'
print gllist
drawlist=[]
#提取二维列表mylist每行前三个元素,赋给新的列表drawlist
for i in range(len(mylist)):
drawlistappend([])
for j in range(3):
drawlist[i]append(mylist[i][j])
#将列表drawlist加载为有向加权图
Gadd_weighted_edges_from(drawlist)
nxdraw(G, with_labels=True, width=1, node_color='y', edge_color='b')
pltshow()
print 'G图中所有节点:',Gnodes()
print 'G图中所有边:',Gedges()
print '\n'
def get_self_node(gllist, target=None):
'''
获取目标节点的自传播节点,返回selflist并包含目标节点
'''
#初始化自传播节点列表
selflist = [target]
#存放已传播节点列表
haslist = []
flag = 0
while (flag != 0):
flag = 0
for target in selflist:
if target not in haslist:
for i in range(len(gllist)):
#判断二维列表中,每行第三个元素是否为1,若为1,则为自传播节点
if ((gllist[i][0] == target)or(gllist[i][1]==target))and(gllist[i][3]==10):
if gllist[i][0] == target:
if gllist[i][1] not in haslist:
selflistappend(gllist[i][1])
haslistappend(gllist[i][1])
flag += 1
else:
if gllist[i][0] not in haslist:
selflistappend(gllist[i][0])
haslistappend(gllist[i][0])
flag += 1
#去除重复元素
haslist = set(haslist)
selflist = set(selflist)
#去除重复元素
selflist = set(selflist)
return selflist
def longest_path(gllist,source=None,target=None):
'''
获取起始点到实体的最大路径集合,返回为longestpath列表
'''
longestpath = []
newlist = []
for i in range(len(gllist)):
newlistappend([])
for j in range(3):
newlist[i]append(gllist[i][j])
#构建图结构
G1 = nxDiGraph()
#添加带权有向边
G1add_weighted_edges_from(newlist)
#获取目标节点的所有自传播街边,并存入selflist中
selflist = get_self_node(gllist, target)
max_path = 0
val_path = 1
#获取初始节点到目标节点及目标节点的自传播节点的最大路径
for v in selflist:
if v != source:
#遍历两点之间所有路径,并进行比对
for path in nxall_simple_paths(G1,source=source,target=v):
#判断路径后两个元素是否为相同实体(如:b1->b2)
if is_self_transmit_node(path[-2], v) == 0:
for i in range(0, len(path)-1):
val_path = G1get_edge_data(path[i], path[i+1])['weight']
if max_path < val_path:
max_path = val_path
val_path = 1
#若目标节点为起始节点则直接跳出
else: continue ############ 有待商榷 ##############
longestpathappend(max_path)
#返回初始节点到实体的最大路径
return longestpath
def is_self_transmit_node(u, v):
'''
判断目标节点不为起始节点的自传播点
'''
flag = 0
#获得起始节点的所有自传播点
selflist = get_self_node(gllist, v)
for x in selflist:
if u == x:
flag = 1
return flag
def single_strong_infl(longestpath):
'''
计算起始点到实体的传播概率(影响强度),返回影响强度stronginfl
'''
temp = 1
for x in longestpath:
temp = 1-x
stronginfl = 1-temp
return stronginfl
def all_strong_infl(G):
'''
获得每个节点对实体的影响概率
'''
allstrong = [] #初始化所有节点的加权影响范围列表
gnodes = [] #初始化节点列表
tempnodes = [] #初始化临时节点列表
gnodes = Gnodes()
for u in gnodes:
strong = 0 #存储初始节点对每个实体的影响范围加权,初始化为0
#重置临时节点列表
tempnodes = Gnodes()
for v in tempnodes:
#非自身节点
if u != v:
#判断目标节点不为起始节点的自传播点
if is_self_transmit_node(v, u) == 0:
#获取起始节点到实体间最大加权路径,并存入longestpath
longestpath = longest_path(gllist, u, v)
#去除已遍历目标节点的所有自传播节点
renode = get_self_node(gllist, v)
for x in renode:
if x != v:
tempnodesremove(x)
#计算起始节点到实体间传播概率(影响强度)
stronginfl = single_strong_infl(longestpath)
strong += stronginfl
#添加单个节点到所有实体的加权影响范围
allstrongappend([u, round(strong, 2)])
#返回每个节点到所有实体的加权影响范围
return allstrong
#output allstrong : [['a1', 248], ['a2', 16880000000000002], ['b1', 07], ['b2', 0], ['c1', 0], ['d2', 06]]
def uS_e_uppergain(u, ev, S):
'''
获取节点u在集合S的基础上对实体ev的影响增益, 传入候选节点,上界gain(u|S, ev)
'''
#获取目前实体的所有自传播节点
selflist = get_self_node(gllist, ev)
stronglist = []
#遍历自传遍节点
for v in selflist:
'''
判断节点v是否存在种子集合S中
其中v为单个节点,如v(ev, Gi)
S为种子节点集合,如['a1','a2','b1','b2','c1','d2']
'''
if v in S:
ppSv = 1
else:
longestpath = []
#遍历种子集合
for s in S:
#初始化路径权值与最大路径权值
val_path = 1
max_path = 0
#遍历两点之间所有路径,并进行比对
for path in nxall_simple_paths(G,source=s,target=v):
#判断路径后两个元素是否为相同实体(如:b1->b2)
if is_self_transmit_node(path[-2], v) == 0:
for i in range(0, len(path)-1):
val_path = Gget_edge_data(path[i], path[i+1])['weight']
if max_path < val_path:
max_path = val_path
#重置路径权值为1
val_path = 1
#将最大加权路径存入longestpath列表
longestpathappend(max_path)
#得到上界pp(S,v)的影响概率,上界pp(S,v)
ppSv = single_strong_infl(longestpath)
stronglistappend(ppSv)
#得到上界pp(S,ev)的影响概率,上界pp(S,ev)
ppSev = single_strong_infl(stronglist)
#获取pp(u,ev)
ppuev = single_strong_infl(longest_path(gllist, u, ev))
#计算上界gain(u|S,ev)
uSevgain = (1 - ppSev) ppuev
return uSevgain
def uppergain(u, emu, ems, S):
'''
在已有种子集合S的基础上,求得节点u的影响增益上界,
其中传进参数ems为二维列表,如[['a1',248],['a2',1688]],S则为['a1','a2']
'''
uSgain = 00
#遍历emu得到列表形式,得到如['a1',248]形式
for ev in emu:
#判断节点是否存在种子集合中
if ev[0] in S:
uSgain += uS_e_uppergain(u, ev[0], S)
else:
uSgain += ev[1]
#返回上界gain(u|S)
return uSgain
def bound_base_imms(G, k):
'''
完全使用影响增益上界的方式选择top-k个种子节点的过程
'''
#初始化emu,H,初始化ems=空集,S=空集
Htemp = []
Htemp = all_strong_infl(G)
H = []
#遍历Htemp=[['a1',248],['a2',1688]],得到如['a1',248]形式
for x in Htemp:
#逐个获取二维列表中每一行,形式为['a1',248,0]
Happend([x[0],x[1],0])
emu = []
emu = all_strong_infl(G)
ems = []
S = []
for i in range(k):
#提取堆顶元素,tnode的形式为['a1',248,0]
tnode = heapqnlargest(1, H, key=lambda x: x[1])
#将[['b2', 31, 0]]格式改为['b2', 31, 0]格式
tnode = sum(tnode, [])
while (tnode[2] != i):
gain = 00
#获取节点u的影响增益上界
gain = uppergain(tnode, emu, ems, S)
#赋值影响范围
tnode[1] = gain
#修改status
tnode[2] = i
#对堆进行排序
H = heapqnlargest(len(H), H, key=lambda x: x[1])
#获取堆顶元素
tnode = heapqnlargest(1, H, key=lambda x: x[1])
tnode = sum(tnode, [])
#添加node到种子集合
Sappend([tnode[0]])
#更新ems,添加新节点及节点对每个实体的影响范围加权
emsappend([tnode[0], tnode[1]])
#删除堆顶元素
Hremove(tnode)
print ems
return sum(S, [])
if __name__=='__main__':
#大小为k的种子集合S
k = 60
#加载文件数据,得到图G和初始列表gllist
load_graph('testtxt')
#完全使用影响增益上界值的计算过程函数,打印种子集合S
print '种子集合:',bound_base_imms(G, k)
testtxt
a1 b1 02 0
a1 c1 08 0
a2 b2 04 0
a2 d2 1 0
b1 c1 07 0
c2 a2 08 0
d2 b2 06 0
a1 a2 1 1
a2 a1 01 1
a1 l1 05 0
a1 m1 05 0
a1 q1 05 0
a1 v1 05 0
a1 z1 05 0
a1 s1 05 0
a1 w1 05 0
a1 u1 05 0
其中前两列为传播实体,第三列为实体间传播概率,最后一列为0代表同一网络传播,为1代表网络间自传播。
下来要进行优化:
1采用独立级联模型,设置阈值
2将最大路径改为最短路径,利用log
社交网络数据分析与应用
根据最近的一份调查数据显示,美国互联网媒体的市值已达10890亿美元,是传统媒体的3倍,类似的在中国,根据艾瑞咨询发布的2014年第二季度网络经济核心数据显示,截止2014年6月30日,中国主要上市互联网公司市值前五的为腾讯(14056亿美元)、百度(6545亿美元)、京东(3897亿美元)、奇虎360(1209亿美元)、唯品会(1119亿美元)。与此同时,以Facebook,Twitter,微博,微信等为代表的社交网络应用正蓬勃发展,开启了互联网时代的社交概念。据全球最大的社会化媒体传播咨询公司We Are Very Social Limited分析指出,目前社交类软件使用的人数已达25亿——占世界总人数约的35%,另据艾瑞咨询发布的2014年第二季度社区交友数据显示,2014年5月,社区交友类服务月度覆盖人数达到47亿,在总体网民中渗透率为925%;2014年5月社交服务在移动App端月度覆盖人数为19亿人,其中微博服务在移动端优势较为明显,月度覆盖人数达到11亿人;互联网媒体和社交网络是Web20时代两个非常重要的应用,那么一个自然的问题是这两个领域将会如何互动发展?本报告主要从数据分析(非财务、非战略)的角度尝试探讨网络结构会给互联网媒体带来什么样的机遇和挑战。具体而言,我们根据自己的研究经验只关注以下几个方面:新闻、影音和搜索,根据艾瑞咨询发布的2013网络经济核心数据显示,这三部分的收入占到中国市值TOP20互联网企业总市值的3216%,其重要性不可忽视。我们通过具体的案例并结合理论前沿做探索性的研讨。
一、音乐推荐
根据《2013中国网络音乐市场年度报告》显示,2013年底,我国网络音乐用户规模达到45亿。其中,手机音乐用户人数由2012年的096亿增长到2013年的291亿,年增长率达203%。从网络音乐用户规模的飞跃式增长可以看到音乐流媒体服务蕴含着巨大的商机。在国外,科技巨头争夺音乐市场的野心也初露端倪,今年年初,苹果斥资30亿美元买下Beats Electronics,而谷歌也随后收购了流媒体音乐服务提供商Songza。
音乐产业在新媒体时代占据重要地位。本报告主要关注移动互联网环境下在线音乐服务商(酷狗音乐、QQ音乐、天天动听等)的发展现状并且对当前的音乐个性化推荐提出我们的一些见解。
11 音乐推荐与社交网络
根据国内知名研究机构CNIT-Research 8月份发布的《2014年第二季度中国手机音乐APP市场报告》的数据显示,排名前三的手机音乐App为酷狗音乐、QQ音乐、天天动听。他们所占的市场份额分别为:201%,170%以及158%。
酷狗音乐 QQ音乐 天天动听
其中,酷狗音乐和天天动听凭借在在线音乐领域长期积累的用户资源、高品质音质、卓越的UI界面以及完美的下载体验取胜。而QQ音乐主要依附强大的社交工具QQ应运而生,可谓是“社交音乐”领域的先驱者。从2014年第二季度手机音乐数据来看,QQ音乐增势迅猛,连续三个月用户下载量增速均超过行业增速水平,而酷狗音乐、天天动听均增速低于市场行业增速,用户市场份额有所下降。
根据速途研究院对手机音乐用户愿景的调查显示,有58%的用户希望增强个性化音乐推荐的功能,这说明有很多用户在收听音乐时其实并不清楚自己喜欢什么类型的歌曲,如果音乐电台能根据用户的个人喜好“猜出”用户喜欢什么歌曲并为其进行推荐,那将会给用户带来意想不到的完美体验。目前的很多音乐软件都支持推荐这一功能。以下是音乐App市场中常见的音乐产品的个性化推荐以及定制方式:
酷狗音乐 QQ音乐 天天动听
根据研究,推荐模式主要分为以下几种:(1) 热点推荐,可以根据大众的搜索记录,通过排行榜的形式得到,也可以根据近期发生的音乐娱乐事件推荐,如中国好声音、我是歌手等;(2)根据用户的听歌记录推荐,包括用户对每首歌的喜恶记录;(3)根据地理位置信息结合用户兴趣进行推荐;(4)根据用户喜欢的歌手信息进行推荐。但是,以上这些推荐模式都没有能够充分利用社交网络的信息。在社交网络风靡全球的时代,有越来越多的音乐服务商发现,社交网络可以帮助商家留住更多的用户,同时,充分利用社交网络信息将带来更加卓越完美的用户体验。可以看到,酷狗音乐和天天动听都允许用户使用第三方账户(微博、QQ)进行绑定登录,并提供分享到微博、微信等选项;QQ音乐特设了“动态”专栏,用于显示好友分享的音乐。另外,酷狗和QQ音乐都可以通过定位的方式推荐附近的志趣相投的好友。
酷狗音乐 QQ音乐 天天动听
上述事实说明,社交音乐存在巨大的潜力和价值。那么,这一方面有无突出的企业呢?其中英国的Lastfm和中国的QQ音乐可以算得上是这方面的一个代表。
Lastfm QQ音乐
Lastfm是 Audioscrobbler 音乐引擎设计团队的旗舰产品,有遍布232个国家超过1500万的活跃听众。2007年被CBS Interactive以28亿美元价格收购,目前,Lastfm是全球最大的社交音乐平台。QQ音乐是中国互联网领域领先的网络音乐平台及正版数字音乐服务提供商,在中国手机音乐市场所占份额跻身四大巨头(其他三个分别是酷狗、天天动听、酷我),月活跃用户已达到3亿,是中国社交音乐领域的****。
以QQ音乐为例,我们详细分析它在利用社交网络信息进行个性化推荐的优势与可能存在的不足。QQ音乐依附强大的社交工具QQ而生,长期以来受到广大用户的喜爱,这与QQ背后的亿万级用户是无法割离的,可以说,QQ音乐是有先天的社交优势的。用户登录QQ音乐后,可以看到动态栏中显示的好友音乐动态,同时,它还允许用户绑定自己的微博账号,把音乐分享给微博好友。不仅如此,QQ音乐允许用户自己编辑生成歌单,并分享给好友,这起到了一定的自媒体的作用。在“明星部落”这一功能中,QQ音乐允许粉丝之间交流互动,并形成一定的社交规模。从上述总结中,我们已经可以看到,QQ音乐已经有意识的把社交信息融合到产品设计和运营中,以增加客户粘性。但是从数据分析的基础和推荐算法的构建上,是否真正做到有效利用社交网络信息了呢?为此,使用QQ音乐于2012年全面更新升级的“猜你喜欢”功能,并发现了如下问题:当笔者没有任何听歌记录时,这一模块并不能为笔者推荐歌曲。根据提示内容,目前该功能可能主要依靠用户的历史听歌记录进行推荐。同样的问题出现在QQ音乐馆的推荐栏中:大部分初始推荐音乐来源于当下热门音乐歌曲,缺少个性化成分。
QQ音乐:猜你喜欢 QQ音乐馆
以上事实说明音乐服务商在推荐算法上没有充分利用社交网络的信息。事实上,在获得用户个人绑定社交网络账号的基础上,可以得到用户的朋友关系,进一步可以获得用户好友的听歌记录,这些歌曲可以成为初始推荐曲目的备选项,将这些备选项通过一定规则(热度、好友相似度)排序,可以用于音乐推荐;另外,众所周知,社交网络(如微博)是明星与粉丝互动的一个重要渠道,因此,可以重点提取用户对于社交网络中歌手以及音乐人的关注关系,以获得对用户偏好的推测。以上这些过程可以用下图表示。
可以看到,在以社交网络绑定的音乐社区中,每个人并不是孤立的个体,而是通过好友关系,以及粉丝与明星的关注关系联系起来。音乐活动的多元化为QQ音乐的推荐场景带来了新的挑战。我们认为存在以下几个需要处理的问题:(1)如何高效利用好友的音乐信息对用户进行推荐?用户的好友众多,每个好友会留下很多音乐记录,这些信息综合起来的话数量极其庞大,如何迅速整合朋友及其收听记录并按照优先程度排序对用户进行推荐是提高用户体验的前提条件。(2)如何整合多种信息渠道进行推荐?随着时间的推进,一个音乐账户留下的信息是多元化的。例如,用户主动搜索的音乐记录、用户对历史收听音乐记录的反馈,用户选择的电台种类、用户自己总结生成的歌单、用户对朋友分享音乐的反馈信息等。因此,如何对这些异质的信息来源进行有效整合,或者,在资源有限的情况下,如何判断和筛选出对于提高推荐精度最有效的指标是提高音乐推荐效果的关键法宝。(3)如何整合当前音乐潮流趋势与用户个人兴趣基因?音乐是充满了潮流和娱乐性的产业,因此,用户的音乐兴趣不仅受其自身兴趣基因驱使,也受到当前音乐流驱使的影响。因此,如何结合用户个人兴趣以及音乐潮流趋势对用户进行有效推荐,是对于音乐这一特殊娱乐行业的特别要求。综上我们认为QQ音乐虽然是利用社交关系进行音乐推荐的先驱者,但是在利用网络数据的层面上仍有很大的改进和提升空间。
12 基于社交网络的音乐推荐
在此我们给出如何利用网络数据对用户进行推荐的技术思想。由于音乐推荐场景实体的多元化,我们将常见的推荐场景列举如下:推荐歌曲、推荐歌单、推荐电台、推荐歌手、推荐用户。接下来,我们将从音乐分类与结构化、用户信息整合、网络结构应用三个步骤详细阐述我们的观点。
音乐结构化与归一化
1歌曲标签化
首先,基于音乐的不同风格,我们需要对系统中存在的海量歌曲进行分类,通过打标签的方式,使音频信息通过文本的方式结构化。分类的方法多种多样,标准各异,从几个音乐主流网站的标签组织形式看来,主要从客观、主观两个角度进行分析。从客观的角度讲,音乐可以按照流派、地域、年代、演奏乐器等方式分类,如“流行”、“摇滚”、“乡村音乐”、“90后”、“钢琴曲”等等,且大类下面可以设小类,如“流行”下可以设置“华语流行”、“欧美流行”等小类;从主观的角度讲,音乐风格与听歌时的心情、场景高度相关,如分为“甜蜜”、“安静”、“治愈”、“酒吧”、“咖啡馆”等等,这种标签使得用户在听音乐时仿佛有一种身临其境的感觉,带来更高的视听享受。除此之外,标签也可以由用户自己生成,如用户的热搜关键词记录、用户自行备注标签等。这在一定程度上正是利用自媒体的形式扩充标签库,使之更能反应用户兴趣。
2歌手信息提取
除了可以将歌曲标签化,我们还可以进一步的对歌手信息进行提取。比如根据地域我们可以把歌手分为大陆、港台、欧美等,根据年代可以分为60后、70后、80后歌手,根据他们的曲风可以分为摇滚、抒情、朋克等。通过打标签的形式把歌手进行分类,从而形成结构化的数据格式,方便以后快速清晰的定位用户喜欢哪一类型的歌手。同样的我们也可以对歌单、作词者、作曲者进行标签化处理,例如歌单的标签可以模仿歌曲的形式,因为歌单是由歌曲组成,所以可以用歌曲的标签来代表歌单的标签。作词者和作曲者的标签可以参考歌手打标签的方法,另外值得注意的是,由于音乐人之间形成合作、作曲、写词等合作关系,可以认为是一个社交网络关系,常常可以见到的现象是某些歌手与词作者存在密切的合作关系,而这部分信息也可用于音乐的个性化推荐。例如,对于一些有特定合作的歌手和词(曲)作者,我们应该特别留意,比如周杰伦和方文山这对组合。
3歌词的语义分析
歌曲的重要组成部分就是歌词,由于歌词属于文本,我们不可能直接对其打标签,所以首先要进行的是语义分析,通过语义分析我们可以大概知道歌词的内容,比如我们可以把歌词切分成短语,然后对每一个短语进行归纳总结,可以判断短语的情感极性(如积极还是消极),对短语进行主题分类,由于歌词数目庞大,可以利用自然语言处理的方式,如主题模型等预先提取主题,再通过人工加以校正。这样就可以对歌词进行标签化处理了。下面我们以歌曲为例,简要的说明具体标签化过程。
通过标签的形式我们可以对每个歌曲的主题予以分类和描述。用于描述一支单曲的标签数目越多,对于音乐主题的描述就更加清晰、明朗;但同时,冗余和重复的信息也可能越多,处理的难度就越大。因此,我们要对标签进行排序和筛选,一个比较简单高效的办法是选择最热门的N个标签作为我们的目标词库,并且对该词库定期进行更新。具体来说,我们将所有标签按照重要程度由高到低进行排序,选择前p个标签作为我们的标签集合。给定一首歌曲t,我们用一个超高维向量Xt=(Xt1,…,Xtp)∈p表示它的标签信息,其中Xtj=1表示该歌曲含有第j个标签,否则,该歌曲不含有第j个标签。例如对于一首钢琴曲演奏的纯音乐,对其打的标签可能是:钢琴曲、安静、咖啡馆等。设钢琴曲、安静、咖啡馆分别对应于标号为1、3、5的标签,那么向量Xt可以表示为Xt=(1,0,1,0,1,0,…0) 。通过以上步骤,我们就可以把看似杂乱的音乐风格通过打标签的形式进行结构化,用一个只含0、1元素的超高维向量对每首歌曲进行分类。
对于歌单、电台这些由歌曲集合而成的实体,我们也可以通过标签的方式对其进行刻画。例如,对于给定的一个歌单m,我们同样用一个超高维向量
社会网络对健康相关行为的影响,在公共卫生领域、复杂性和系统科学领域都是一个比较重要的话题,最著名的就是基于费莱明心脏队列的肥胖是否传染的NEJM。这篇文章总结下一些零碎的要点,文章内容来自2019年9月发表于Plos Medcine上的一篇系统评价“Social network interventions for health behaviours and outcomes: A systematic review and meta-analysis”。
1 网络的定义
“社交网络”的广泛定义是社交互动和个人关系,例如与朋友、学校朋友、非学校朋友、家庭成员、性伴侣、工作同事、邻居以及共享不健康行为(例如滥用药物和危险性行为)的网络。需要测量社会关系,并且该关系必须已用于干预设计或实施的某些方面。
关系的量度必须超出二元性水平,并包括多个参与者之间的联系(即,排除了针对配偶或一对朋友之间的互动的干预措施)。所包括的干预措施必须针对性地改变健康行为或健康结果(或其替代指标)。
社交网络干预已成功地覆盖,保留和改变了所谓的隐性,难以到达和处于危险之中的人群的行为,包括MSM,注射毒品的人和其他优先人群(例如,低收入或少数民族人口)。
2 网络干预
网络干预是 使用现有网络、建立新网络、破坏有害网络或使用社交网络数据来教育参与者关于其健康行为对其网络成员(包括真实和在线社交网络)的潜在影响。网络干预支持各种类型的健康促进工作(如,健康沟通、家庭或组织方法),并扩大现有干预措施的覆盖面或提高其有效性。
个体网络干预措施包括那些专门使用网络数据来识别要招募的个体的行为,这些个体是根据某些网络属性来充当行为改变的支持者。细分网络干预措施包括针对网络中聚集的人群的干预措施。归纳网络干预涉及激发和激活社交网络中现有的社会纽带,以传播信息或健康行为。变更网络干预措施包括通过增加新成员来改变网络的结构或打破与那些促进和促进不健康,冒险行为的人的联系。
(1)根据网络属性选择的个人参与其中,并且可能是意见领袖。 An informal school-based peer-led intervention for smoking prevention in adolescence (ASSIST): a cluster randomised trial Lancet 2008
(2)与特定人群互动的人 Randomized trial testing the effect of peer education at increasing fruit and vegetable intake J Natl Cancer Inst 1999
(3)那些鼓励或增强点对点交互,将信息和影响级联给其他网络成员的过程(称为感应的过程;A peer-educator network HIV prevention intervention among injection drug users: results of a randomized controlled trial in St Petersburg, Russia AIDS Behav
(4)涉及通过添加或删除成员,添加或删除特定的社会纽带或更改整个网络来更改网络。Changing network support for drinking: initial findings from the network support project J Consult Clin Psychol
3 理论模型
这类研究有一部分社会科学的意味,所以肯定有一些理论模型。总结下来:行为变化模型包括社会认知理论,合理行为理论,计划行为理论,健康信念模型,社会规范理论,社会影响力,社会生态模型,社会学习理论和社会认同理论。对于网络元素,引用最多的理论是创新理论的传播。
4 一些解释
(1)对于这些干预措施至关重要的高参与率和保留率,旨在激活和刺激促进健康的网络和社会环境机制。从理论上讲,此类干预通过重新定义社会规范来避免高风险行为而起作用。通常,社会规范是通过观察流行同龄人的行为,然后采用并建模这些行为来形成的,从而进一步将其传播到网络中的其他人。(Randomised, controlled, community-level HIV-prevention intervention for sexual-risk behaviour among homosexual men in US cities Community HIV Prevention Research Collaborative Lancet1997)
(2)需要加强在线社交实验( The spread of behavior in an online social network experiment Science 2010)
(3)没想到实验设计评估因果竟然发到机器学习会议上。Toulis P, Kao E Estimation of causal peer influence effects[C]//International conference on machine learning PMLR, 2013: 1489-1497 另外两篇也是混杂效应评估要考虑的:On causal inference in the presence of interference Stat Methods in Med Res 2012//// Causal diagrams for interference Stat Sci 2014
(4) 时间效应对这类研究有很大影响,6个月,12个月,24个月结果差异很大,也是这篇meta主要结果。
(5)针对个人的干预最有效。
(6) 社会认同,社会支持,社会交流和社会学习过程。社会传染理论表明健康结果,行为和信仰(例如肥胖,幸福)是通过社会网络“传播”的。网络理论和社会生态模型的运用建立在个人层面模型及其对社会因素如何影响个体生物学,信念,决定和行为的基础上。传统上,健康行为干预无法成功地长期维持新的行为。而社交网络在行为维持中的重要作用在习惯养成理论(强调外部线索的重要性)和维持行为改变理论(强调社会规范在增强新行为中的作用)中显而易见。
(7) Social network targeting to maximise population behaviour change: a cluster randomised controlled trial Lancet 2015 无需知道整个网络即可实验的方法。
(8)网络干预措施在资源和基础设施有限的地区可能特别有用,网络可以用来增加参与人数,或者可以促进这些干预措施的传播和采用。
(9)网络科学的方法识别外围节点、桥接节点和早期采用者。多阶段优化策略(MOST)使用析因实验设计来识别特定干预成分的独特效果和交互作用,这些成分可能包括社交网络方法或其他有效成分(例如,教育材料)。有助于为评估网络干预的有效性和成本效益的最佳设计提供依据。局限性包括对自我报告结果的依赖,这些结果具有内在的回忆和期望偏差,并且在关键人群的研究中获得的结果可能会限制研究结果对其他人群或群体的普遍性。The Multiphase Optimization Strategy (MOST) and the Sequential Multiple Assignment Randomized Trial (SMART): New methods for more potent eHealth interventions Am J Prev Med 2007
(10)网络现象是我们干预措施中固有的,但目前被忽视并未得到充分充分利用。也就是设计RCT的时候要考虑网络的效应,可能也是一种混杂。
5 总结一下
要考虑干预时间,在线社会网络干预还是很空白的点,网络研究产生的混杂校正和评估方法很重要。MOST可能是目前比较好的网络干预研究设计方法。
耦合复杂网络和复杂网络是两个不同的概念。复杂网络是指由大量节点和连接构成的复杂结构,节点之间的连接可以是随机的、规则的或者是具有一定的权重和方向性的。而耦合复杂网络则是指由多个相互作用的复杂网络组成的网络系统,这些网络之间通过节点或者边的耦合相互联系。因此,耦合复杂网络是一种更加复杂的网络结构,需要考虑多个网络之间的相互作用和影响。
非量化表数据指的是不易用数字或统计数据来衡量和分析的数据,例如自然语言、图像、音频等。以下是一些常见的适用于非量化表数据的模型:
1 自然语言处理模型: 这些模型主要应用于文本数据,例如文本分类、情感分析、机器翻译、问答系统等等。常见的自然语言处理模型包括BERT、GPT-2、ELMo、Seq2Seq等。
2 图像处理模型:这些模型用于处理数据,并通常用于物体识别、图像分类、风格转换、图像生成等任务。常用的图像处理模型包括ResNet、Inception、GAN等。
3 音频处理模型:这些模型主要用于语音识别、情感分析、声音转换等任务。常用的音频处理模型包括Wav2Vec、DeepSpeech、WaveNet等。
4 图网络模型:这些模型广泛应用于社交网络、知识图谱等关系性数据领域,用于处理节点和边关系的模型,例如GCN、GraphSAGE等。
需要注意的是,这些模型都需要大量的数据进行训练和优化,因此对于数据不充足的非量化表数据问题可能需要更多的深入研究和定制化的解决方案。
新型模型是什么意思啊,建筑模型行业正随着现代化技术的发展,也在不断的改变着自身的展现方式,新型的建筑模型也慢慢崭露头角。从建筑模型制作行业发展的过程来看,近出现的新型模型的展现方式有两种:科技模型和数字沙盘模型。
所谓的科技模型是在传统的物理沙盘模型的基础上,再往上加入带有科技感的类似中控集成、多点触控、虚拟现实等科技方法,通过触摸、感应等各种互动方式,控制建筑模型中的楼层、升降、灯光、视频影视、音响等内容,展现出实物的各区位特点,让观众达到身临其境的感觉。 特点:科技模型因其良好的互动特性和立体感觉, *** 作简单便捷,展示内容又面面俱到,很受观众认可。
科技模型应用广泛,它可以适用于售楼营销中心、大酒店、房地产招商中心、旅游景点、商业建筑、各种展馆展厅等,能根据客户的需求,自定规格大小和展现方式的多少。科技模型是温州瑞枫建筑模型公司在多年的温州模型行业摸索规律、沙盘模型制作经验的积累上,再结合现代科学技术独创的另一套新的模型展示方法。
也许,在建筑模型行业里边还有其它的潜在的新型模型出现,但目前在这个行业内,能引导潮流的也就只有这两种。
数字模型是一个模型行业里新兴的名词,数字模型了单调的实体模型沙盘展示方式,在传统的沙盘基础上,增加了多媒体自动化程序,充分表现出区位特点,四季变化等丰富的动态视效。它也许会在不远的未来取代传统的建筑模型,成为展示内容的另一个新亮点。对客户来说是一种全新的体验,这样能够产生强烈的视觉震憾感。客户还可通过触摸屏选择观看相应的展示内容,简单便捷,大大提高了整个展示的互动效果。
在制作模型的实际 *** 作中,不少人员因为 *** 作失误而给自己带来危险,所以,模型制作的环境必须拥有良好的光和通关条件,同时具备足够的安全电源插座。同时,模型制作者自身在进行工具 *** 作时也要小心谨慎,避免受伤
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)