罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经退休,不会被更新。

我们可以预测分手吗?社会网络分析和MATLAB

R2015b释放在这里,让我们创建一个令人兴奋的新功能,探索和分析图表和网络。今天的嘉宾博客古原竹内,向您展示如何使用这个新功能开始使用社交网络分析。

内容

社会网络分析和机器学习

科学的数据时,你想到的机器学习和数据挖掘,但是你应该考虑增加社会网络分析数据科学工具包的一部分。社会网络分析提供了新的方法来从你的数据集映射和捕获特性测量使用图形和网络的关系,它是传统的机器学习技术的补充集群分析、

让我们用一个例子来告诉你它是如何工作的。本文解释了Facebook是如何知道什么时候你会离婚(甚至在你之前就知道了)。不幸的是我们没有访问Facebook的数据集,但我们可以使用一个公开的数据集来做一个类似的分析。

扎卡里的空手道俱乐部的数据集

圣扎迦利空手道俱乐部数据集包含一个社交网络之间的友谊34空手道俱乐部的会员在1970年代的美国大学。我们不知道的细节,但是在这个俱乐部爆发争端最终导致它打破分成两组。我们可以预测这个俱乐部究竟要如何分割通过观察其社会关系的结构,类似于Facebook吗?

让我们加载数据集

你可以下载数据集在这里但这是在一个陌生的non-tabular文本格式。我创建了一个脚本loaddata.m解析这个文本文件,但你可以加载MAT-file代替。

websave karate2.mathttps://blogs.mathworks.com/images/loren/2015/karate.mat;负载karate2.mat

创建图形对象

个别成员表示为节点,连接两个节点的边代表他们的友谊。边缘因此只是一对节点。边缘代表了对78 x 2的矩阵中的行。节点只是一个数字,代表了节点数组。友谊是相互的,因此他们没有方向。我们可以用一个无向图表示这个社交网络。您可以创建一个图提供的节点的列表形式边缘。

图G =(边缘(:1),边缘(:,2));%从边缘创建图表G。节点=表(名称);%的名字节点%可视化图形情节(G);标题(圣扎迦利”年代空手道俱乐部)

谁是最连接?

情节显示了一个典型的“轮毂和轮辐”结构的中心,有很多连接的节点。你是受欢迎的,如果你有很多朋友,这表示欢迎。量化的受欢迎程度的一种方法是名为程度的度量,边缘连接到每个节点的数量。让我们找到这个社交网络的度分布。

D = (G)程度;%得到每个节点度μ=意味着(D);%的平均度图直方图(D);%绘制柱状图持有线([μμ],[0,10],“颜色”,“r”)%的平均度线标题(“空手道俱乐部程度分布”)包含(度(#)的连接的);ylabel (“#节点”);sprintf(文本(μ+ 0.1,10日的平均百分比。2 f度”,μ)文本(14.5,1.5,节点1的2)文本(11日,“33节点”2)文本(16日,“34节点”)

你看到两人(节点1和34)远高于度的平均数量。33节点有很多朋友但不是这两个。让我们颜色边缘(连接)的这两个人。

N1 =邻居(G, 1);% 1的朋友N1 = [N1;1);%加1N34 =邻居(G, 34);%得到34的朋友N34 = [N34;34);%增加34c1 = [1, 0, 1];% 1的颜色c2 = (0.5 0 1);% 34的颜色图P =情节(G);%画出图突出(P, N1,“NodeColor”c1,“EdgeColor”、c1);%突出1的朋友突出(P N34“NodeColor”c2,“EdgeColor”c2);%突出34的朋友标题(节点1和34岁的朋友)

分手的

到这两个颜色的连接,你可以看到俱乐部已经有了两个基于社会关系的子组。让我们比较前面的可视化和可视化的实际分手基于上面的信息从教科书有关。

G1nodes = [1, 2, 3, 4, 5, 6, 7, 8, 9,%节点1的组11、12、13、14、17、18、20、22];图P =情节(G);%画出图突出(P G1nodes“NodeColor”c1,“EdgeColor”、c1);%突出集团标题(“俱乐部在两组分手了”)

预测了分手

现在我们熟悉这个数据集,看看有一种方法来检测两组在这个数据集。这是这个网络的邻接矩阵。每行和每列节点id,如果两个节点有一个关系,那么交集变成1,否则为0。对角元素代表了自我参照的连接,因此他们在这个社交网络都是0。

一个=邻接(G);%建立邻接矩阵满=(一个);%将稀疏矩阵转换为完整的矩阵图显示亮度图像(一)%画出矩阵广场标题(的邻接矩阵)

层次聚类方法

在机器学习中,这可以作为一个处理聚类问题。让我们尝试分层聚类距离度量与共享连接的数量——连接你分享得越多,越接近。因为我们有二进制数据,我们将使用Jaccard距离。

dist = pdist (,“jaccard”);%使用Jaccard距离取得联系Z =连杆(经销);%创建树图系统树图(Z)%绘制系统树图标题(“系统树图的阴谋”)包含(“节点Id”);ylabel (“距离”)

这看起来不正确,因为它完全忽略了连接在网络的结构。这是一个很好的例子,传统的机器学习方法本身并不能解决问题。

图像分割的方法

我们可以用从图论到分区图吗?,提出了一个方法帕特Quillen,使用代数的连接体重节点基于最小数量的减少你需要创建两个子集,和外野手向量用于这一目的。在一个典型的使用,我们想分区大小相近的节点分成两组。让我们分区中值的节点。连接节点与lower-than-median值不如那些有更高的价值。

现在让我们使用外野手向量识别图分区和比较结果实际分裂。

L =拉普拉斯算子(G);%得到拉普拉斯算子矩阵G[V ~] = eig((左),“向量”);%从L得到特征向量w = V (:, 2);%菲德勒向量P1nodes =找到(w <值(w));%选择节点中值以下错误= setdiff (G1nodes P1nodes)%的任何diff实际分裂吗?
错误=空矩阵:1-by-0

可以看到,外野手向量做一个完美的不错识别的分区图。如果你手的邻接矩阵向量,你也可以看到这种分裂。

[~,顺序]= (w)进行排序;%的权重值sortedA =(订单,订单);%的排序顺序图显示亮度图像(sortedA)标题(邻接矩阵排序的)

总结——Facebook的例子相比如何?

在这种情况下,外野手向量都是我们需要分区图。但在更复杂的情况下,你可以使用它作为聚类分析的距离度量,在上面的例子中取代Jaccard距离。社会网络分析和机器学习应该是相辅相成的工具在你的数据科学工具包。

如何将这种方法应用于Facebook的情况预测夫妻之间分手?考虑节点1和34作为夫妻,和图作为他们的Facebook上的朋友。看起来令人惊讶的是类似于图在上面引用的文章中,除了它拥有超过两个集群。如果你仔细想想,你老同学,同事,家庭成员,以及其他社会活动,他们通常形成明显的集群。

有趣的是,这篇文章说,共同的朋友几个份额总数不是恋爱关系的良好指标。最好是如果他们共同的朋友不太好联系。显然,浪漫关系和空手道俱乐部不共享相同的社会动态。

试着释放R2015b,看看这个新的图形功能,让我们知道你的想法在这里




发表与MATLAB®R2015b

|
  • 打印
  • 发送电子邮件