The first 12 videos cover this topic.
The first four videos are part of the basic track, and cover machine-learning techniques for finding the best set of “overlapping communities,” following the intuition that people generally belong to more than one community, e.g., their high-school friends, their coworkers, etc.
Videos 5-12 are part of the advanced track. They use concepts from linear algebra to explain how to break graphs optimally (i.e., break the fewest edges) into disjoint “communities.”
想要将社交网络所属的不同组给划分开来。
如何从模型推出社交网络
所谓社交网络,就是两个人U,V是不是朋友,或者理解成图论中的两个node是否需要连接。
Community-Affiliation Graph
flexibility
AGM是一种计算P(u,v),即u,v两个点之间是否有edge的概率。 同样的,bigClam也是计算两点间是否有edge的概率。
区别是: 前者有:社区C中的任何两个人是朋友的概率 后者有:每个人对于特定组的归属度
这里讨论的是,已知一个网络,求解模型的问题。
已知: 网络中的任何两个人是否是好友,是否有edge相连。也就是前面讨论中求出的连接概率。 求: 网络的参数F矩阵。
转化成优化问题,可以使用梯度法求解。 并且根据一些trick,将问题的复杂性减小。
注意,这里对优化问题去了log值,理由是:
对每个点进行一次迭代,每经过一个点更新参数,直到达到稳定值。
注意,这里是求最大似然值
但是,这种方法有个缺点,对于和u不适邻居的数据,都要进行迭代计算,所以每次更新的话会遍历所有的样本点,这样时间复杂度是O(N)O(N)的,不利于大数据的计算。
改进后的方法,只需要预先计算一次全体值,然后cache方便之后计算。 接下来每次只需要计算与u相邻的节点值,这样的话在大数据的情况下极大地减少了时间,时间复杂度是关于邻居集合的线性的。