0. 社区划分简介 0x1:非重叠社区划分方法 在一个网络里面,每一个样本只能是属于一个社区的,那么这样的问题就称为非重叠社区划分. 在非重叠社区划分算法里面,有很多的方法: 1. 基于模块度优化的社区划分 基本思想是将社区划分问题转换成了模块度函数的优化,而模块度是对社区划分算法结果的一个很重要的衡量标准. 模块度函数在实际求解中无法直接计算得到全局最优解析解(类似深度神经网络对应的复杂高维非线性函数),所以通常是采用近似解法,根据求解方法不同可以分为以下几种方法: . 凝聚方法(down t…
转载请注明出处:http://www.cnblogs.com/bethansy/p/6953625.html LPA算法的思路: 首先每个节点有一个自己特有的标签,节点会选择自己邻居中出现次数最多的标签,如果每个标签出现次数一样多,那么就随机选择一个标签替换自己原始的标签,如此往复,直到每个节点标签不再发生变化,那么持有相同标签的节点就归为一个社区. 算法优点:思路简单,时间复杂度低,适合大型复杂网络. 算法缺点:众所周知,划分结果不稳定,随机性强是这个算法致命的缺点. 体现在:(1)更新顺序.…
众所周知,机器学习可以大体分为三大类:监督学习.非监督学习和半监督学习.监督学习可以认为是我们有非常多的labeled标注数据来train一个模型,期待这个模型能学习到数据的分布,以期对未来没有见到的样本做预测.那这个性能的源头--训练数据,就显得非常感觉.你必须有足够的训练数据,以覆盖真正现实数据中的样本分布才可以,这样学习到的模型才有意义.那非监督学习就是没有任何的labeled数据,就是平时所说的聚类了,利用他们本身的数据分布,给他们划分类别.而半监督学习,顾名思义就是处于两者之间的,只有…
这是我最近看到的一篇论文,思路还是很清晰的,就是改进的LPA算法.改进的地方在两个方面: (1)结合K-shell算法计算量了节点重重要度NI(node importance),标签更新顺序则按照NI由大到小的顺序更新 得到ks值后,载计算一下节点邻居ks值和度值d的比值 (2)当出现次数最多的标签不止一个时,再计算一下标签重要度LI(label importance) 其实就是找到节点相同标签的那些令居计算一个合值,看着也不难啊 (3)最后这个算法使用的是异步传播 下面是我实现的代码 func…
其中部分转载的社区发现SLPA算法文章 一.概念 社区(community)定义:同一社区内的节点与节点之间关系紧密,而社区与社区之间的关系稀疏. 设图G=G(V,E),所谓社区发现是指在图G中确定nc(>=1)个社区C={C1,C2,...,Cnv},使得各社区的顶点集合构成V的一个覆盖. 若任意两个社区的顶点集合的交际均为空,则称C为非重叠社区(disjoint communities);否则称为重叠社区(overlapping communities). 二.SLPA算法思想与流程 SLP…
最近在研究基于标签传播的社区分类,LabelRank算法基于标签传播和马尔科夫随机游走思路上改装的算法,引用率较高,打算将代码实现,便于加深理解. 这个算法和Label Propagation 算法不同的是计算复杂度较高,对每个标签都确定了概率,但是准确性比Label Propagation算法好. 一.概念 相关概念不再累述,详情见前两篇文章 二.算法思路 首先建立一个标签集合,C={1,2,……n},n是节点的数量.标签概率向量Pi(1*n),Pi(c)=节点i对标签c的概率估计,迭代过程中…
动手实践标签传播算法 复现论文:Learning with Local and Global Consistency1 lgc 算法可以参考:DecodePaper/notebook/lgc 初始化算法 载入一些必备的库: from IPython.display import set_matplotlib_formats %matplotlib inline #set_matplotlib_formats('svg', 'pdf') import numpy as np import matp…
虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解.因此特意先对深度学习中的相关基础概念做一下总结.先看看前向传播算法(Forward propagation)与反向传播算法(Back propagation). 1.前向传播 ​​ 如图所示,这里讲得已经很清楚了,前向传播的思想比较简单. 举个例子,假设上一层结点i,j,k,…等一些结点与本层的结点w有连接,那么结点w的值怎么算呢?就是通过上一层的i,j,k等结点以及对应的连接权值进行加权和运算,最终结果再…
package lpa; import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class LPA { public static float sigma = 1; public static int tag_num = 2; public static void main(String[] args) { float[][] data = { {1,1}, {1,2}, {2,1}, {2…
之前我们在计算神经网络预测结果的时候我们采用了一种正向传播方法,我们从第一层开始正向一层一层进行计算,直到最后一层的ℎ…