R語言社群主題檢測演算法應用
使用R檢測相關主題的社群
建立主題網路
對於Project Mosaic,我正在通過分析抽象文字和共同作者社交網路來研究UNCC在社會科學和計算機和資訊學方面的出版物。
我遇到的一個問題是:如何衡量主題之間的關係(相關性)?特別是,我想建立一個連線類似主題的網路視覺化,並幫助使用者更輕鬆地瀏覽大量主題(在本例中為100個主題)。
在本教程中,我通過組合來自兩個非常棒的資源的程式碼來實現這一目標:
- Tyler Rinker的主題建模回購(參見“關於主題的詞語分佈的網路”)
- Katherine Ognyanova的網路視覺化教程。
資料準備
我們的第一步是載入作為LDA輸出的主題矩陣。LDA有兩個輸出:字主題矩陣和文件主題矩陣。在本教程中,我上傳了以前儲存為平面(csv)檔案的已儲存LDA結果。
作為載入平面檔案的替代方法,您可以使用topicmodels包lda函式的輸出來建立任何單詞主題和文件主題矩陣。獲取函式的輸出並在輸出上lda執行該posterior函式。
# load in author-topic matrix, first column is word
author.topic <- read.csv("./author_topics.csv", stringsAsFactors = F)
# load in word-topic matrix, first column is word
top.words <- word.topics[order(-word.topic[,i])]
name$topic_name[i] <- paste(top.words[1:5], collapse = " + ")
}
# rename topics
colnames(author.topic) <- c("author_name",name$topic_name)
與摘要是文件的標準LDA不同,我運行了一個“以作者為中心”的LDA,其中所有作者的摘要被合併並被視為每個作者的一個文件。我跑這是因為我的最終目標是使用主題建模作為資訊檢索過程來確定研究人員的專業知識。
建立靜態網路
在下一步中,我使用每個主題的單詞概率之間的相關性建立一個網路。
首先,我決定只保留具有顯著相關性(20%+相關性)的關係(邊緣)。我使用20%,因為它對於100個觀察維基百科的樣本具有0.05的統計顯著性水平。
cor_threshold <- .2
接下來,我們使用相關矩陣來建立igraph資料結構,刪除所有具有小於20%最小閾值相關性的邊。
library(igraph)
讓我們繪製一個簡單的igraph網路。
par(mar=c(0, 0, 3, 0))
y30")
title("Strength Between Topics Based On Word Probabilities", cex.main=.8)
每個數字代表一個主題,每個主題都有編號以識別它。
我的第一個觀察是,似乎有三個主要的叢集。
讓我們使用社群檢測,特別是igraph中的標籤傳播演算法來確定網路中的群集。
clp <- cluster_label_prop(graph)
class(clp)
title("Community Detection in Topic Network", cex.main=.8)
社群檢測發現了13個社群,以及每個孤立主題的多個額外社群(即沒有任何聯絡的主題)。
與我最初的觀察結果類似,該演算法找到了我們在第一個圖中識別的三個主要聚類,但也添加了其他較小的聚類,這些聚類似乎不適合三個主要聚類中的任何一個。
讓我們儲存我們的社群,並計算我們將在下一部分使用的學位中心性和中介性。
V(graph)$community <- clp$membership
V(graph)$degree <- degree(graph, v = V(graph))
動態視覺化
在本節中,我們將使用visNetwork允許R中的互動式網路圖的包。
首先,讓我們呼叫庫並執行visIgraph一個互動式網路,但是使用igraph圖形設定在igraph結構(圖形)上執行。
library(visNetwork)
這是一個良好的開端,但我們需要有關網路的更多詳細資訊。
讓我們通過建立visNetwork資料結構走另一條路。為此,我們將igraph結構轉換為visNetwork資料結構,然後將列表分成兩個資料幀:節點和邊緣。
data <- toVisNetworkData(graph)
nodes <- data[[1]]
刪除沒有連線的節點(主題)(度= 0)。
nodes <- nodes[nodes$degree != 0,]
讓我們新增顏色和其他網路引數來改善我們的網路。
library(RColorBrewer)
col <- brewer.pal(12, "Set3")[as.factor(nodes$community)]
nodes$shape <- "dot"
s$betweenness))+.2)*20 # Node size
nodes$color.highlight.background <- "orange"
最後,讓我們用互動式情節建立我們的網路。您可以使用滑鼠滾輪進行縮放。
visNetwork(nodes, edges) %>%
visOptions(highlightNearest = TRUE, selectedBy = "community", nodesIdSelection = TRUE)
按ID選擇
學生+規模+專案+有效性+過程
糖尿病+卡羅萊納州+北卡羅來納州+教育+北方
教師+數學+學校+小學+學生
地位+女性+性別+個人+理論
資料+跟蹤+動作+分類+視訊
物種+資料+序列+病例+遺傳
學生+學校+學校+幹+成就
victimization + criminal + victims + rates + violence
older + aging + adults + successful + older_adults
joint + control + controls + balance + lateral
protein + flexibility + properties + structure + families
security + system + configuration + attacks + smart
mobile + information + application + search + data
genes + gene + expression + genetic + genome
energy + intervention + data + hypertension + dietary
health + patients + hospitals + racial + rate
providers + work + care + hiv + violence
health + ability + cognitive + outcomes + factors
power + users + information + user + systems
spatial + urban + location + geographic + information
public + organizations + data + evaluation + program
framework + image + images + retrieval + features
data + systems + problem + scheme + key
women + ci + pregnancy + health + odds
visual + data + problem + analytics + events
students + instruction + disabilities + skills + literacy
image + images + visual + algorithm + object
health + care + smoking + current + data
technology + teacher + learning + teachers + chapter
systems + agents + complex + agent + control
routing + network + networks + topology + nodes
social + issues + gender + challenges + perceptions
knowledge + software + management + important + effective
members + team + virtual + teams + diversity
health + care + community + primary + primary_care
network + networks + addresses + techniques + novel
images + flow + image + building + tracking
stress + exercise + function. + age + n
health + women + care + cognitive + united
meetings + meeting + organizational + work + job
reading + schools + implementation + behavior + academic
continuum + objects + robot + object + motion
data + plans + finally + online + plan
workplace + organizational + work + temporal + workers
students + learning + course + computing + student
transition + practices + program + students + evidence.based
attacks + security + system + mechanism + protocol
urban + charlotte + economic + cities + areas
security + developers + vulnerabilities + software + secure
health + children + care + areas + florida
virtual + environment + children + technique + user
genomes + binding + genes + sites + similar
early + development + literacy + professional + childhood
structural + binding + tranion + protein + structures
agents + navigation + game + data + world
visualization + time + data + network + security
users + policy + user + access + social
data + time + factors + provide + variables
design + data + understanding + process + issues
information + risk + real + process + social
game + students + games + educational + student
health + physical + older + african + americans
firms + value + financial + information + accounting
public + environmental + commitment + values + industry
students + intervention + alcohol + college + drinking
development + housing + prices + economic + offers
novel + insight + visual + evaluation + text
land + data + urban + lidar + spatial
graph + privacy + database + social + theoretical
spatial + parallel + computing + modeling + data
youth + services + children + child + family
activity + physical + physical_activity + running + strains
patients + patient + costs + care + outcomes
genes + splicing + alternative + rna.seq + gene
data + values + applied + peak + mass
array + expression + microarray + de + probe
Select by community
首先,請注意有兩個下拉選單。第一個下拉列表允許您按名稱查詢任何主題(按單詞概率排名前五個單詞)。
第二個下拉列表突出顯示了我們演算法中檢測到的社群。玩這個選單。使用主題名稱(使用滑鼠滾動放大),您能解釋主題社群似乎是什麼嗎?
最大的三個似乎是:
- 計算(灰色,簇4)
- 社交(綠藍,群集1)
- 健康(黃色,群集2)
檢測到的較小社群有什麼獨特之處?你能解釋一下嗎?
最後,泡沫的大小基於網路(中心)度量中介。這可以衡量該節點對整個網路連線的重要性。在此示例中,較大的節點具有較高的中介性,這意味著主題在跨主題群集時更為重要。
哪個是最大的節點?這些主題是保持網路連線的“粘合劑”。什麼resesarch概念可能會將這些主題與社群之外的主題聯絡起來?
大資料部落——中國專業的第三方資料服務提供商,提供定製化的一站式資料探勘和統計分析諮詢服務
統計分析和資料探勘諮詢服務 :y0.cn/teradat(諮詢服務請聯絡官網客服)
【服務場景】
科研專案;
公司專案外包 ;線上線下一對一培訓 ;資料採集;學術研究;報告撰寫;市場調查。
【大資料部落】提供定製化的一站式資料探勘和統計分析諮詢服務
分享最新的大資料資訊,每天學習一點資料分析,讓我們一起做有態度的資料人
微信客服號:lico_9e
歡迎關注微信公眾號,瞭解更多資料乾貨資訊!