罗兰关于MATLAB的艺术

将想法转化为MATLAB

我们能预测分手吗?MATLAB社会网络分析

R2015b释放其中一个令人兴奋的新功能让我们可以创建、探索和分析图表和网络。今天的客座博主Toshi Takeuchi向你展示了如何使用这个新功能开始社交网络分析。

内容

社交网络分析和机器学习

说到数据科学,你会想到机器学习和数据挖掘,但你应该考虑添加社会网络分析作为数据科学工具包的一部分。社交网络分析提供了新的方法,通过使用图表和网络映射和测量关系,从数据集中获取特征,它是传统机器学习技术的补充,如集群分析、

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

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

圣扎迦利空手道俱乐部数据集包含了上世纪70年代美国一所大学空手道俱乐部34名成员之间的社交网络。我们不知道细节,但是这个俱乐部里爆发的一场争执最终使它分裂成两派.我们是否可以通过观察其社交关系结构(类似于Facebook)来准确预测俱乐部将如何分裂?

让我们加载数据集

您可以下载数据集在这里但它是一种不熟悉的非表格文本格式。我创建了一个脚本loaddata.m来解析这个文本文件,但是你可以只加载MAT-file代替。

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

创建图形对象

单个成员被表示为节点,连接两个节点的边表示它们的友谊。因此,边只是一对节点。边缘将这些对表示为78 x 2矩阵中的行。节点是表示节点的数字数组。友谊是相互的,因此没有方向。我们可以用一个无向图来表示这个社会网络。您可以通过提供构成边的节点列表来创建图形。

G = graph(edges(:,1), edges(:,2));从边创建一个图形G.Nodes =表(名称);%命名节点数字可视化图表情节(G);标题(圣扎迦利”年代空手道俱乐部

谁是最有联系的人?

该图显示了一个典型的“轮毂和辐条”结构,其中有几个轮毂,这些轮毂是具有许多连接的节点。如果你有很多朋友,你就很受欢迎,所以这代表着受欢迎。量化受欢迎程度的一种方法是一个称为度的度量,即连接到每个节点的边数。让我们找出这个社会网络的度分布。

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

您可以看到,有两个人(节点1和34)的度数远远高于平均度数。节点33有很多朋友,但没有那两个那么多。让我们给这两个人的边(连接)涂上颜色。

N1 =邻域(G, 1);%得到1的朋友N1 = [N1;1);%加1N34 = neighbors(G, 34);得到34的朋友N34 = [N34;34);%增加34c1 = [1, 0, 1];% 1的组颜色c2 = (0.5 0 1);% 34的组颜色图P = plot(G);%作图突出(P, N1,“NodeColor”c1,“EdgeColor”、c1);%高亮1的好友突出(P N34“NodeColor”c2,“EdgeColor”c2);突出你的朋友标题(“节点1和34的朋友”

分手的

通过着色这两种关系,你可以看到俱乐部已经有两个基于社会关系的子群体。让我们根据上面链接的教科书中的信息,将前面的可视化与实际分手的可视化进行比较。

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

预测了分手

现在我们已经熟悉了这个数据集,让我们看看是否有一种方法可以检测这个数据集中的两个组。这是这个网络的邻接矩阵。每一行和每一列都是节点id,如果两个节点有关系,则交集为1,否则为0。对角线元素表示自参照连接,因此在这个社交网络中它们为0。

一个=邻接(G);创建邻接矩阵满=(一个);%将稀疏矩阵转换为全矩阵图显示亮度图像(一)%绘制矩阵广场标题(的邻接矩阵

层次聚类方法

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

dist = pdist (,“jaccard”);%使用雅卡尔距离来评分连接Z =连杆(经销);%创建树图系统树图(Z)%绘制系统树图标题(“系统树图的阴谋”)包含(“节点Id”);ylabel (“距离”

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

图像分割的方法

从图论中我们可以使用什么来划分图?一种方法,由帕特Quillen,使用代数的连接来根据创建两个子集所需的最小切割次数对节点进行加权,为此目的使用Fielder Vector。在典型的使用中,我们希望将节点划分为大小相同的两组。让我们用中值来划分节点。小于中值的节点连接较差,大于中值的节点连接较差。

现在,让我们使用Fielder Vector来标识图形分区,并将结果与实际的分割进行比较。

L =拉普拉斯算子(G);得到G的拉普拉斯矩阵[V, ~] = eig(full(L),“向量”);从L得到特征向量w = V (:, 2);%费德勒向量P1nodes = find(w <中位数(w));%选择中值以下的节点= setdiff(G1nodes, P1nodes)与实际的分割有什么不同吗?
错误=空矩阵:1 × 0

可以看到,Fielder Vector很好地确定了这个图的划分。如果你按Fielder Vector排序邻接矩阵,你也可以看到这个分裂。

[~, order] = sort(w);%按值排序权重sortedA = A(order, order);%对A应用排序顺序图显示亮度图像(sortedA)标题(邻接矩阵排序的

总结-这与Facebook的例子相比如何?

在这种情况下,我们只需要菲尔德向量来划分图。但在更复杂的情况下,您可以使用它作为聚类分析的距离度量,取代上面示例中的Jaccard距离。社交网络分析和机器学习应该是你的数据科学工具包中的补充工具。

这如何适用于Facebook预测情侣分手的情况呢?可以将节点1和34视为一对夫妇,图中是他们的Facebook好友。它看起来与上面文章中提到的图惊人地相似,除了它有两个以上的集群。如果你仔细想想,你有老同学、同事、家庭成员和其他社会活动,他们通常形成不同的群体。

有趣的是,这篇文章说,情侣共有的共同朋友的总数并不是恋爱关系的良好指标。如果他们共同的朋友关系不那么好,那就更好了。显然,恋爱关系和空手道俱乐部没有相同的社会动态。

尝试发布R2015b,看看这个新的图形特性,让我们知道你的想法在这里




发布与MATLAB®R2015b

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。