社会网络分析(Social Network Analysis)是大数据分析的主要应用方向。社会网络分析关注的是关系,这种关系可以是人与人之间的关系,也可以是组织之间或是国家之间的关系,甚至可以是“啤酒”与“尿布”等物与物之间的关系。(注:“啤酒”与“尿布”的故事是一个数据挖掘的经典案例,经过数据挖掘与分析,沃尔玛超市发现美国奶爸们买尿布的时候常常也会顺带着买啤酒,从而带来营销启示。)
沈浩老师一直致力于社会网络分析的研究,今天,主要介绍的是如何用数据挖掘软件KNIME来构建社会网络。软件作为工具,背后是理论的指导,所以,我们先来简要说明一下关于社会网络的基本理论。
要研究网络,先要明白什么是网络。网络由节点(node)以及节点之间的连线(也叫边,edge)构成。一个节点代表着一个行动者,或者说是一个实体,可以是一个人、一个组织、一个国家、一个商品、一个学科,等等。边是网络中两点之间的联系。在社会网络分析中,正是边体现出了彼此之间的关系。边分为有向边和无向边,网络图从而也分为有向图和无向图。
下面以案例的形式介绍用KNIME构建社会网络图的详细步骤:
步骤1:建立一个空网络并读取关系数据
这是本例中所用的关系数据,Col0和Col1两列是node,Row ID是edge,利用Object Inserter,我们将数据插入到网络中。在Object Inserter中还可以选择对边的无向或有向以及边的权重进行设置,本例中我们设置边为无向边,不设置边的权重。
步骤2:读取节点特征数据,向网络中插入特征数据
这是本例中使用的节点特征数据,我们能够看到。这里的特征,指的是节点所代表的人的信息,分别是年龄、性别、收入和人生阶段。分别将这4个特征插入到网络中。也可以插入满足研究需要的节点特征,本例中将参与人数(也就是节点数)也插入其中。
细心的读者可能会发现,在“人生阶段(phase oflife)”中,有一些标了“?”的缺失值,对于这些缺失值,可以用决策树来进行预测,然后将预测值填入使数据完整。
可以看到,模型的准确率是83.636%。
步骤3:生成可视化网络图
将预测值插入网络中,用Network Viewer节点可视化呈现网络图。在该节点中,可以设置网络布局的算法、颜色、形状等等。
以节点名称(人名)为标签所呈现的网络图
以节点特征(这里是年龄)为标签所呈现的网络图
值得注意的一点是,Network Viewer并不支持处理超图(注:一般来讲,网络图中的一条边最多只能关联2个节点,但超图hypergraph中,它的超边hyperedge的关联节点可以大于2)和空边(边的关联节点小于1),所以如果网络中有这样的超边或空边,可以对其先进行过滤。有时,根据研究者的需要,也可以对网络的节点或边做一些符合需要的过滤。
叶子节点(leaf)指的是没有子节点的节点。环(loop)指的是边的关联节点数为1.
过滤后以节点特征(这里是年龄)为标签所呈现的网络图