【发布时间】:2016-12-09 06:48:35
【问题描述】:
目前我正致力于从具有给定结构的数据集中实现“关系提取”功能:
Name1 Name2
Bob Tom
Mike Bob
Denise John
Kate Bob
John Kate
Mike Tom
Mark Denise
Denise Kate
Tom John
两列都是“字符”类型,基本上数据集包含具有“Name1”的用户知道具有“Name2”的用户的信息(对称关系)。 我想做的是找到“每个人都认识每个人”的用户组(我不确定他们是如何用英语称呼的,我的讲师称他们为“超级组”)。该函数的输出应包含提取的组列表和每个组的成员列表。所以对于上面的示例数据集,它将是(当它有 3 个或更多成员时,组被认为是“有效的”):
Group 1: Bob Tom Mike
Group 2: Denise John Kate
格式真的没那么重要,它只需要包含那种信息。现在,我实际上实现了有效的功能,但是执行时间非常长(对于具有约 550 000 行的数据集,大约需要 9 个小时) - 我所做的基本上是为每个关系创建朋友子集,所以对于关系 Bob - Tom 来自示例数据如下所示:
Subset 1:
Name1 Name2
Bob Mike
Bob Kate
Subset 2:
Name1 Name2
Tom Mike
Tom John
然后我检查了来自第一个子集的“Name2”列中的用户是否出现在第二个子集中的同一列中等等......我知道这种方法远非最佳,我一点也不惊讶它需要这么长时间来执行那个功能。我想知道是否有人可以为这个问题提出更好的解决方案(我什至不需要代码,只需要链接到一些算法或解释如何以最佳方式进行这种“组提取”)。
【问题讨论】:
-
查看 igraph 包。图论是您所描述内容的标准工具。
标签: r feature-extraction