Netflix 等流媒体平台如何推荐适合您晚上观看的完美电影?我们如何优化足球等运动中的球员位置?我们如何识别金融网络中的欺诈活动?我们如何预测 Tinder 等约会应用程序中的匹配情况?
所有这些挑战都有相同的解决方案:社交网络分析。
社交网络分析 (SNA) 是一个强大的数据科学领域,可以探索实体网络内复杂的关系,发现隐藏的模式并捕获见解。网络实体可以是一切:它们可以是 Instagram 等社交网络上的人、互联网上的网站,甚至是锦标赛网络中的运动队。
在下面的部分中,我将帮助您了解什么是数据科学中的网络,我将描述最常见的类型,并且我将实现几种算法以从网络中提取有价值的信息。
所有理论部分都将与实际例子相结合。您将找到几个Python 代码片段来熟悉NetworkX Python 库。
了解网络
网络,也称为图,是信息的特殊表示,由两个基本组件组成:节点和边。
节点是网络的构建块。它们代表网络内的各个实体。它们可以模仿各种各样的事物,例如社交网络中的人,以及生物网络中的基因。
相反,边表示节点之间的关系。它们可以定义两个人之间的交互、关联或依赖关系。边可以是有向的,这意味着它们表示的关系从一个节点到另一个节点。想象一下代表一个人向另一个人支付的有向边,了解货币兑换的方向确实是有益的。这种不对称性用箭头表示。
在NetworkX中,节点和边很容易表示如下:
import networkx as nx
# Create an instance of a graph
G = nx.Graph()
# Create an edge between two nodes. The nodes will be also created.
G.add_edge('A', 'B', weight=6)
上面的“Hello world”代码的结果是这个小而幼稚的网络: