Download presentation
Presentation is loading. Please wait.
Published by창원 삼 Modified 8년 전
1
Social Network Analysis 우영상
2
목차목차 1.Network of Terms 2.Network of Tweets 3.Two-Mode Network
3
Social Network Analysis igraph 패키지를 이용하여 일반적인 Social Network 상에 서 발생하는 용어를 분석한다. 같은 Tweet 상에서 발생하는 용어들이 형성하는 Network 을 파악한다. Network 상에서 용어들이 어떻게 공유되는지 파악하기 위한 그래프를 그린다. 용어와 Tweet 으로 구성된 Two-Mode Network Graph 를 그린다.
4
Network of Terms 동시에 등록되는 Tweet 을 기반으로하여 Tweet 에 생성되 는 용어들의 연관관계를 Network 으로 표현. 용어들의 관계를 adjacency matrix 표현. 자주 생성되는 용어들의 관계를 그래프로 표현.
5
Network of Terms adjacency matrix 을 구하기 Boolean matrix 로 변환. – termDocMatrix[termDocMatrix>=1] <- 1 adjacency matrix 을 구한다. – termMatrix <- termDocMatrix %*% t(termDocMatrix) Adjacency Matrix 를 통해서 igraph 를 만든다. – g <- graph.adjacency(termMatrix, weighted=T, mode = "undirected") Loop 을 제거한다. – g <- simplify(g)
6
Network of Terms layout – 그래프를 그리기 위한 Coordinate 을 제공 – termDocMatrix[termDocMatrix>=1] <- 1 Fruchterman and Reingold Algorithm 을 통해서 Graph 생성 layout1 <- layout.fruchterman.reingold(g) kamada.kawai 알고리즘으로 Graph 생성. – plot(g, layout=layout.kamada.kawai) – Loop 을 제거한다. – g <- simplify(g)
7
Network of Terms 각각의 Vertex 의 Degree 에 따라서 Font 사이즈를 조정할 수 있다. V() 와 E() 을 통해서 Vertex 와 Edge 의 속성을 변경할 수 있다. – V(g)$label.cex <- 2.2 * V(g)$degree / max(V(g)$degree) +.2 V(g)$label.color <- rgb(0,0,.2,.8) V(g)$frame.color <- NA egam <- (log(E(g)$weight)+.4) / max(log(E(g)$weight)+.4) E(g)$color <- rgb(.5,.5,0,egam) E(g)$width <- egam plot(g, layout=layout1)
8
Network of Terms
9
Network of Tweet 기존 Network of Terms 에서 공통적으로 있는 단어를 배 제하고 Network 을 형성함으로서 간단하게 공통적인 단 어와 함께 연관되는 단어들의 찾을 수 있다.
10
Network of Tweet termDocMatrix 의 Terms Column 에서 r, data, mining 단어의 index 를 추출한다. – idx <- which(dimnames(termDocMatrix)$Terms %in% c("r","data","mining")) r, data, mining 단어를 삭제한다. – M <-termDocMatrix[-idx,] Adjacency Matrix 를 생성한다. – tweetMatrix <- t(M) %*% M tweetMatrix 에서 igraph 를 생성한다. – g <- graph.adjacency(tweetMatrix, weighted=T, mode = "undirected")
11
Network of Tweet Vertex 의 Degree 를 Bar Graph 로 표현한다 – barplot(table(V(g)$degree))
12
Network of Tweet Vertex 의 Degree 에 따라서 그 색을 달리 하여 그래프를 그린다. Tweet ID 가 고립된 Vertex 의 집합과 빈도수가 많은 20 개의 그래프를 그린다. 나머지 Vertex 는 Tweeter ID 만 출력하게 된다. 각 Edge 의 색은 그 Edge 의 weight 에 따라 Alpha 값이 바뀐다. idx <- V(g)$degree == 0 V(g)$label.color[idx] <- rgb(0,0,.3,.7) V(g)$label[idx] <-paste(V(g)$name[idx], substr(df$text[idx],1,20), sep=": ") egam <- (log(E(g)$weight)+.2)/ max(log(E(g)$weight)+.2) E(g)$color <- rgb(.5,.5, 0, egam) E(g)$width <- egam set.seed(3152) layout2 <- layout.fruchterman.reingold(g) plot(g, layout = layout2)
13
Network of Tweet
14
delete.vertices 를 통해서 초승달 모양으로 고립된 Vertex 를 삭제한다. g2 <- delete.vertices(g, V(g)[degree(g)==0]) plot(g2, layout=layout.fruchterman.reingold) Degree 가 낮은 Edge 를 삭제함으로서 graph 를 좀더 간단 하게 만든다. g3 <- delete.edges(g, E(g)[E(g)$weight <= 1]) g3 <- delete.vertices(g3, V(g3)[degree(g3) == 0]) plot(g3, layout=layout.fruchterman.reingold)
15
Network of Tweet
17
Two-Mode Network Tweet 과 Terms 이 두 가지 타입으로 이뤄진 Two-mode Network 을 만든다. Two-Mode Network 서로 다른 두 개의 Node Set 을 일정한 기준의 묶는다.
18
Two-Mode Network pipartite igraph 을 생성 mode 는 Edge 의 Direction 을 나타내며, all 은 mutual edge 가 만들어진다. g<- graph.incidence(termDocMatrix, mode = c("all")) nTerms <- nrow(M) r 에 이웃한 모든 Vertex 를 반환받는다 V(g)[nei("r")] “r” 과 “data” 와 “mining” 세 단어가 포함된 자료는 다음과 같이 확인할 수 있다. (rdmVertices <- V(g)[nei("r") & nei("data") & nei("mining")]) df$text[as.numeric(rdmVertices$label)]
19
Two-Mode Network
23
Q&A
Similar presentations