用KNIME構建社會網絡
社會網絡分析(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.
過濾后以節點特征(這里是年齡)為標簽所呈現的網絡圖